Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
carlosjepard committed Aug 12, 2024
1 parent 7dcb8bf commit 3a3df36
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 50 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ protected void configureDisplay(CellTable<ViewerRow> display) {
ViewerTable nestedTable = database.getMetadata()
.getTableById(configColumn.getNestedColumns().getOriginalTable());
if (configColumn.getTypeName().contains("BINARY LARGE OBJECT")) {
Column<ViewerRow, SafeHtml> binaryColumn = buildTemplateColumn(configColumn, nestedTable);
Column<ViewerRow, SafeHtml> binaryColumn = buildNestedRowDownloadColumn(configColumn, nestedTable);
binaryColumn.setSortable(true); // add to configuration file sortable options
addColumn(configColumn, binaryColumn);
configColumns.put(configColumn, binaryColumn);
Expand Down Expand Up @@ -285,10 +285,21 @@ public SafeHtml getValue(ViewerRow row) {
&& nestedRow.getUuid().equals(configColumn.getId())) {
Map<String, ViewerCell> cells = nestedRow.getCells();
String template = configColumn.getSearchStatus().getList().getTemplate().getTemplate();
GWT.log(template);
if (template != null && !template.isEmpty()) {
String json = JSOUtils.cellsToJson(cells, nestedTable);
String s = JavascriptUtils.compileTemplate(template, json);
aggregationList.add(com.google.gwt.core.client.GWT.getHostPageBaseURL() + s);
if (template.contains("{{blob}}")) {
String tempTemplate = template.replace("{{blob}}", "");
tempTemplate = tempTemplate.replace("}{", "} {");
template = "<a href=\"" +com.google.gwt.core.client.GWT.getHostPageBaseURL() + "{{blob}}\">" +
tempTemplate + "</a>";
String s = JavascriptUtils.compileTemplate(template, json);
aggregationList.add(s);
}
else {
String s = JavascriptUtils.compileTemplate(template, json);
aggregationList.add(com.google.gwt.core.client.GWT.getHostPageBaseURL() + s);
}
}
}
}
Expand All @@ -302,10 +313,15 @@ public SafeHtml getValue(ViewerRow row) {
}
ret = SafeHtmlUtils.fromSafeConstant(sb.toString());
} else {
String template = "<a href=\"{{download_link}}\">{{download_label}}</a>";
String json = JSOUtils.cellsToJson(ViewerConstants.TEMPLATE_LOB_DOWNLOAD_LABEL, messages.row_downloadLOB(),
ViewerConstants.TEMPLATE_LOB_DOWNLOAD_LINK, "http://localhost:8080/api/v1/database/5d33cceb-148c-4b0d-a775-caac937e68e0/collection/5d33cceb-148c-4b0d-a775-caac937e68e0/data/public/virtual_table/3309/1");
ret = SafeHtmlUtils.fromSafeConstant(JavascriptUtils.compileTemplate(template, json));
String template = "<a href=\"{{download_link}}\">{{download_label}}</a>";
String json = JSOUtils.cellsToJson(ViewerConstants.TEMPLATE_LOB_DOWNLOAD_LABEL, messages.row_downloadLOB(),
ViewerConstants.TEMPLATE_LOB_DOWNLOAD_LINK, aggregationList.get(0));
if (json.contains("blob")){
ret = SafeHtmlUtils.fromSafeConstant(JavascriptUtils.compileTemplate(template, json));
}
else {
ret = SafeHtmlUtils.fromSafeConstant(aggregationList.get(0));
}
}
}
return ret;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import java.util.TreeMap;
import java.util.TreeSet;

import com.databasepreservation.common.client.models.structure.ViewerPrimaryKey;
import org.roda.core.data.v2.index.sublist.Sublist;

import com.databasepreservation.common.client.ClientConfigurationManager;
Expand Down Expand Up @@ -385,7 +386,6 @@ private void getCellHTML(ViewerColumn column, Set<Ref> relatedTo, Set<Ref> refer

private void getNestedHTML(ColumnStatus columnStatus) {
NestedColumnStatus nestedColumns = columnStatus.getNestedColumns();

if (nestedColumns != null) {
ViewerTable nestedTable = database.getMetadata().getTableById(nestedColumns.getOriginalTable());

Expand All @@ -412,19 +412,33 @@ private void getNestedHTML(ColumnStatus columnStatus) {
null, false, new ArrayList<>());
CollectionService.Util.call((IndexResult<ViewerRow> result) -> {
if (result.getTotalCount() >= 1) {
GWT.log("count -> " +result.getTotalCount());
RowField rowField;
String json = JSOUtils.cellsToJson(result.getResults().get(0).getCells(), nestedTable);
String s = JavascriptUtils.compileTemplate(template, json);
if (columnStatus.getTypeName().contains("BINARY LARGE OBJECT")) {
String templateLob = "<a href=\"{{download_link}}\">{{download_label}}</a>";
GWT.log("collumn status ->" + columnStatus.toString());
int originalCollumnIndex = 0;
GWT.log("collumn status -> " + result.getResults().get(0).getCells());

//loop to find the original column index
for (Map.Entry<String, ViewerCell> entry : result.getResults().get(0).getCells().entrySet()) {
ViewerCell v = entry.getValue();
if (v.getStoreType() != null) break;
originalCollumnIndex++;
}

if ((database.getPath() == null || database.getPath().isEmpty())
&& !status.getConsolidateProperty().equals(LargeObjectConsolidateProperty.CONSOLIDATED)) {
rowField = RowField.createInstance(new Label(s).getText(), new HTML(messages.rowPanelTextForLobUnavailable()));
} else {
SafeHtml safeHtml = SafeHtmlUtils.EMPTY_SAFE_HTML;
GWT.log("uuid -> " + result.getResults().get(0).toString());
GWT.log("id -> " + columnStatus.getId());
json = JSOUtils.cellsToJson(ViewerConstants.TEMPLATE_LOB_DOWNLOAD_LABEL, messages.row_downloadLOB(),
ViewerConstants.TEMPLATE_LOB_DOWNLOAD_LINK, RestUtils.createExportLobUri(database.getUuid(),
nestedTable.getSchemaName(), nestedTable.getName(), result.getResults().get(0).getUuid(), columnStatus.getColumnIndex()));
nestedTable.getSchemaName(), nestedTable.getName(), result.getResults().get(0).getUuid(), originalCollumnIndex));
safeHtml = SafeHtmlUtils.fromSafeConstant(JavascriptUtils.compileTemplate(templateLob, json));


Expand All @@ -435,6 +449,7 @@ private void getNestedHTML(ColumnStatus columnStatus) {
}

rowField.addColumnDescription(columnStatus.getCustomDescription());
GWT.log("rowField -> " + rowField.toString());
panel.add(rowField);
}
}).findRows(database.getUuid(), database.getUuid(), nestedTable.getSchemaName(), nestedTable.getName(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,22 @@ public class ViewerRow extends IsIndexed {

private Map<String, ViewerLobStoreType> colsLobTypeList;

@Override
public String toString() {
return "ViewerRow{" +
"UUID='" + UUID + '\'' +
", tableUUID='" + tableUUID + '\'' +
", tableId='" + tableId + '\'' +
", cells=" + cells +
", nestedRowList=" + nestedRowList +
", nestedUUID='" + nestedUUID + '\'' +
", nestedTableId='" + nestedTableId + '\'' +
", nestedOriginalUUID='" + nestedOriginalUUID + '\'' +
", colsMimeTypeList=" + colsMimeTypeList +
", colsLobTypeList=" + colsLobTypeList +
'}';
}

public ViewerRow() {
cells = new LinkedHashMap<>();
nestedRowList = new ArrayList<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,6 @@
*/
package com.databasepreservation.common.transformers;

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.databasepreservation.common.client.models.structure.ViewerTable;
import org.apache.solr.common.SolrInputDocument;
import org.roda.core.data.exceptions.GenericException;
import org.roda.core.data.exceptions.NotFoundException;

import com.databasepreservation.common.client.ViewerConstants;
import com.databasepreservation.common.client.index.filter.AndFiltersParameters;
import com.databasepreservation.common.client.index.filter.Filter;
Expand All @@ -34,13 +21,25 @@
import com.databasepreservation.common.client.models.structure.ViewerColumn;
import com.databasepreservation.common.client.models.structure.ViewerDatabase;
import com.databasepreservation.common.client.models.structure.ViewerRow;
import com.databasepreservation.common.client.models.structure.ViewerTable;
import com.databasepreservation.common.client.tools.FilterUtils;
import com.databasepreservation.common.server.ViewerConfiguration;
import com.databasepreservation.common.server.ViewerFactory;
import com.databasepreservation.common.server.index.DatabaseRowsSolrManager;
import com.databasepreservation.common.server.index.utils.IterableIndexResult;
import com.databasepreservation.common.server.index.utils.JsonTransformer;
import com.databasepreservation.model.exception.ModuleException;
import org.apache.solr.common.SolrInputDocument;
import org.roda.core.data.exceptions.GenericException;
import org.roda.core.data.exceptions.NotFoundException;

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
* @author Gabriel Barros <[email protected]>
Expand Down Expand Up @@ -193,7 +192,7 @@ private void queryOverRootTable() throws ModuleException {
}

private void queryOverRelatedTables(ViewerRow row, RelatedTablesConfiguration relatedTable,
List<SolrInputDocument> nestedDocuments) {
List<SolrInputDocument> nestedDocuments) {
String tableId = relatedTable.getTableID();
Filter resultingFilter = new Filter();
List<FilterParameter> filterParameterList = new ArrayList<>();
Expand Down Expand Up @@ -250,44 +249,38 @@ private void queryOverRelatedTables(ViewerRow row, RelatedTablesConfiguration re
queryOverRelatedTables(nestedRow, innerRelatedTable, nestedDocuments);
}
if (!columnsToDisplay.isEmpty()) {
ViewerTable viewerTable = database.getMetadata().getTable(relatedTable.getTableUUID());
for (ViewerColumn viewerColumn : viewerTable.getColumns()) {
if (nestedRow.getCells().keySet().contains(viewerColumn.getSolrName())
&& viewerColumn.getType().getTypeName().equals("BINARY LARGE OBJECT")) {
String urlPath = ViewerConstants.API_SERVLET + ViewerConstants.API_V1_DATABASE_RESOURCE + "/" + databaseUUID
+ "/collection/" + databaseUUID + "/data/" + viewerTable.getSchemaName() + "/" + viewerTable.getName()
+ "/" + nestedRow.getNestedOriginalUUID() + "/" + viewerColumn.getColumnIndexInEnclosingTable();
createdNestedDocument(nestedRow, nestedRow.getNestedOriginalUUID(), nestedDocuments, columnsToDisplay,
urlPath);
} else {
createdNestedDocument(nestedRow, nestedRow.getNestedOriginalUUID(), nestedDocuments, columnsToDisplay,
null);
}
}
createdNestedDocument(nestedRow, nestedRow.getNestedOriginalUUID(), nestedDocuments, columnsToDisplay, relatedTable.getTableUUID());
}
}
}

private void createdNestedDocument(ViewerRow row, String parentUUID, List<SolrInputDocument> nestedDocuments,
List<String> columnsToDisplay, String urlPath) {
List<String> columnsToDisplay, String relatedTableUUID) {
Map<String, ViewerCell> cells = row.getCells();
String uuid = row.getNestedUUID();

Map<String, Object> fields = new HashMap<>();

for (Map.Entry<String, ViewerCell> cell : cells.entrySet()) {
ViewerTable viewerTable = database.getMetadata().getTable(relatedTableUUID);
for (ViewerColumn viewerColumn : viewerTable.getColumns()) {
for (Map.Entry<String, ViewerCell> cell : cells.entrySet()) {
String key = cell.getKey();
if (urlPath != null) {
fields.put(key, urlPath);
} else if (columnsToDisplay.contains(key)) {
ViewerCell cellValue = cell.getValue();
fields.put(key, cellValue.getValue());
String urlPath = null;
if (cell.getKey().equals(viewerColumn.getSolrName())
&& viewerColumn.getType().getTypeName().equals("BINARY LARGE OBJECT")) {
urlPath = ViewerConstants.API_SERVLET + ViewerConstants.API_V1_DATABASE_RESOURCE + "/" + databaseUUID
+ "/collection/" + databaseUUID + "/data/" + viewerTable.getSchemaName() + "/" + viewerTable.getName()
+ "/" + row.getNestedOriginalUUID() + "/" + viewerColumn.getColumnIndexInEnclosingTable();
fields.put(key, urlPath);

} else if (cell.getKey().equals(viewerColumn.getSolrName())) {
ViewerCell cellValue = cell.getValue();
fields.put(key, cellValue.getValue());
}
}
if (!fields.isEmpty()) {
nestedDocuments.add(solrManager.createNestedDocument(uuid, row.getUuid(), row.getNestedOriginalUUID(), fields,
row.getTableId(), row.getNestedUUID()));
}
}

if (!fields.isEmpty()) {
nestedDocuments.add(solrManager.createNestedDocument(uuid, row.getUuid(), row.getNestedOriginalUUID(), fields,
row.getTableId(), row.getNestedUUID()));
}
}
}

0 comments on commit 3a3df36

Please sign in to comment.