Skip to content

Commit

Permalink
transform working only with siard-dk lob column selected
Browse files Browse the repository at this point in the history
  • Loading branch information
AntonioG70 committed Aug 6, 2024
1 parent 4df2bf6 commit 7dcb8bf
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -186,11 +186,17 @@ protected void configureDisplay(CellTable<ViewerRow> display) {
// this is the table of nested document
ViewerTable nestedTable = database.getMetadata()
.getTableById(configColumn.getNestedColumns().getOriginalTable());

Column<ViewerRow, SafeHtml> templateColumn = buildTemplateColumn(configColumn, nestedTable);
templateColumn.setSortable(false);
addColumn(configColumn, templateColumn);
configColumns.put(configColumn, templateColumn);
if (configColumn.getTypeName().contains("BINARY LARGE OBJECT")) {
Column<ViewerRow, SafeHtml> binaryColumn = buildTemplateColumn(configColumn, nestedTable);
binaryColumn.setSortable(true); // add to configuration file sortable options
addColumn(configColumn, binaryColumn);
configColumns.put(configColumn, binaryColumn);
} else {
Column<ViewerRow, SafeHtml> templateColumn = buildTemplateColumn(configColumn, nestedTable);
templateColumn.setSortable(false);
addColumn(configColumn, templateColumn);
configColumns.put(configColumn, templateColumn);
}
}
}

Expand Down Expand Up @@ -254,6 +260,59 @@ public SafeHtml getValue(ViewerRow row) {
};
}

private Column<ViewerRow, SafeHtml> buildNestedRowDownloadColumn(ColumnStatus configColumn, ViewerTable nestedTable) {
return new Column<ViewerRow, SafeHtml>(new SafeHtmlCell()) {
@Override
public void render(Cell.Context context, ViewerRow object, SafeHtmlBuilder sb) {
SafeHtml value = getValue(object);
String title = messages.row_downloadLOB();
if (value != null) {
sb.appendHtmlConstant("<div title=\"" + title + "\">");
sb.append(value);
sb.appendHtmlConstant("</div");
}
}

@Override
public SafeHtml getValue(ViewerRow row) {
List<String> aggregationList = new ArrayList<>();
StringBuilder sb = new StringBuilder();
String url;
SafeHtml ret = null;
if (row.getNestedRowList() != null) {
for (ViewerRow nestedRow : row.getNestedRowList()) {
if (nestedRow != null && nestedRow.getCells() != null && !nestedRow.getCells().isEmpty()
&& nestedRow.getUuid().equals(configColumn.getId())) {
Map<String, ViewerCell> cells = nestedRow.getCells();
String template = configColumn.getSearchStatus().getList().getTemplate().getTemplate();
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);
}
}
}
String separatorText = configColumn.getSearchStatus().getList().getTemplate().getSeparator();
if (separatorText != null) {
String separator = "";
for (String s : aggregationList) {
sb.append(separator);
sb.append(s);
separator = separatorText;
}
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));
}
}
return ret;
}
};
}

private Column<ViewerRow, SafeHtml> buildSimpleColumn(ColumnStatus configColumn) {
return new Column<ViewerRow, SafeHtml>(new SafeHtmlCell()) {
@Override
Expand Down Expand Up @@ -289,11 +348,10 @@ public SafeHtml getValue(ViewerRow row) {
break;
case NUMERIC_FLOATING_POINT:
if (configColumn.getFormatter() instanceof NoFormatter) {
ret = SafeHtmlUtils
.fromString(NumberFormatUtils.getFormattedValue(new NumberFormatter(), value));
ret = SafeHtmlUtils.fromString(NumberFormatUtils.getFormattedValue(new NumberFormatter(), value));
} else {
ret = SafeHtmlUtils
.fromString(NumberFormatUtils.getFormattedValue((NumberFormatter) configColumn.getFormatter(), value));
ret = SafeHtmlUtils.fromString(
NumberFormatUtils.getFormattedValue((NumberFormatter) configColumn.getFormatter(), value));
}
break;
case BOOLEAN:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -424,7 +424,7 @@ private void getNestedHTML(ColumnStatus columnStatus) {
SafeHtml safeHtml = SafeHtmlUtils.EMPTY_SAFE_HTML;
json = JSOUtils.cellsToJson(ViewerConstants.TEMPLATE_LOB_DOWNLOAD_LABEL, messages.row_downloadLOB(),
ViewerConstants.TEMPLATE_LOB_DOWNLOAD_LINK, RestUtils.createExportLobUri(database.getUuid(),
nestedTable.getSchemaName(), nestedTable.getName(), "3309", columnStatus.getColumnIndex()));
nestedTable.getSchemaName(), nestedTable.getName(), result.getResults().get(0).getUuid(), columnStatus.getColumnIndex()));
safeHtml = SafeHtmlUtils.fromSafeConstant(JavascriptUtils.compileTemplate(templateLob, json));


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
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;
Expand Down Expand Up @@ -243,31 +244,47 @@ private void queryOverRelatedTables(ViewerRow row, RelatedTablesConfiguration re

fieldsToReturn.addAll(auxColumns);
fieldsToReturn.addAll(columnsToDisplay);
//TODO USE NESTEDORIGINALUUID FOR LINK
IterableIndexResult nestedRows = solrManager.findAllRows(databaseUUID, resultingFilter, null, fieldsToReturn);
for (ViewerRow nestedRow : nestedRows) {
for (RelatedTablesConfiguration innerRelatedTable : relatedTable.getRelatedTables()) {
queryOverRelatedTables(nestedRow, innerRelatedTable, nestedDocuments);
}
if (!columnsToDisplay.isEmpty()) {
createdNestedDocument(nestedRow, row.getUuid(), nestedDocuments, columnsToDisplay);
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);
}
}
}
}
}

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

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

for (Map.Entry<String, ViewerCell> cell : cells.entrySet()) {
String key = cell.getKey();
if (columnsToDisplay.contains(key)) {
if (urlPath != null) {
fields.put(key, urlPath);
} else if (columnsToDisplay.contains(key)) {
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()));
Expand Down

0 comments on commit 7dcb8bf

Please sign in to comment.