From 74bb37e9869ea3687d827d1fda5374ce97b0ef55 Mon Sep 17 00:00:00 2001 From: carlosjepard Date: Mon, 20 Jan 2025 15:21:55 +0000 Subject: [PATCH] Added fields to return to nested querys --- .../common/client/ViewerConstants.java | 2 +- .../client/common/lists/TableRowList.java | 9 +++++++-- .../handler/DataTransformationUtils.java | 14 +++++++++++++ .../common/client/tools/JSOUtils.java | 3 --- .../schema/collections/RowsCollection.java | 20 +++++++++++++------ .../transformers/DenormalizeTransformer.java | 2 +- 6 files changed, 37 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/databasepreservation/common/client/ViewerConstants.java b/src/main/java/com/databasepreservation/common/client/ViewerConstants.java index 5f96bb3af..7d6725ae9 100644 --- a/src/main/java/com/databasepreservation/common/client/ViewerConstants.java +++ b/src/main/java/com/databasepreservation/common/client/ViewerConstants.java @@ -231,7 +231,7 @@ public class ViewerConstants { public static final String SOLR_ROWS_NESTED_ORIGINAL_UUID = "nestedOriginalUUID"; public static final String SOLR_ROWS_NESTED_TABLE_ID = "nestedTableId"; public static final String SOLR_ROWS_NESTED = "nested"; - + public static final String SOLR_ROWS_NESTED_COL = "nst_"; /* * DYNAMIC FIELD TYPES (suffixes) */ diff --git a/src/main/java/com/databasepreservation/common/client/common/lists/TableRowList.java b/src/main/java/com/databasepreservation/common/client/common/lists/TableRowList.java index e4471b555..1ed09a386 100644 --- a/src/main/java/com/databasepreservation/common/client/common/lists/TableRowList.java +++ b/src/main/java/com/databasepreservation/common/client/common/lists/TableRowList.java @@ -18,6 +18,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import org.fusesource.restygwt.client.MethodCallback; import org.roda.core.data.v2.index.sublist.Sublist; @@ -199,7 +200,6 @@ protected void configureDisplay(CellTable display) { } } } - Alert alert = new Alert(Alert.MessageAlertType.LIGHT, messages.noItemsToDisplay()); display.setEmptyTableWidget(alert); @@ -234,9 +234,14 @@ public SafeHtml getValue(ViewerRow row) { if (nestedRow != null && nestedRow.getCells() != null && !nestedRow.getCells().isEmpty() && nestedRow.getUuid().equals(configColumn.getId())) { Map cells = nestedRow.getCells(); + + // removes the nested prefix of the nested collumn + Map cells_no_nested_prefix = cells.entrySet().stream().collect(Collectors + .toMap(entry -> entry.getKey().replace(ViewerConstants.SOLR_ROWS_NESTED_COL, ""), Map.Entry::getValue)); + String template = configColumn.getSearchStatus().getList().getTemplate().getTemplate(); if (template != null && !template.isEmpty()) { - String json = JSOUtils.cellsToJson(cells, nestedTable); + String json = JSOUtils.cellsToJson(cells_no_nested_prefix, nestedTable); String s = JavascriptUtils.compileTemplate(template, json); aggregationList.add(s); } diff --git a/src/main/java/com/databasepreservation/common/client/common/visualization/browse/configuration/handler/DataTransformationUtils.java b/src/main/java/com/databasepreservation/common/client/common/visualization/browse/configuration/handler/DataTransformationUtils.java index e76f97d5d..58b903083 100644 --- a/src/main/java/com/databasepreservation/common/client/common/visualization/browse/configuration/handler/DataTransformationUtils.java +++ b/src/main/java/com/databasepreservation/common/client/common/visualization/browse/configuration/handler/DataTransformationUtils.java @@ -175,7 +175,9 @@ public static void buildNestedFieldsToReturn(ViewerTable table, CollectionStatus String key = ViewerConstants.SOLR_ROWS_NESTED + "." + nestedCount; keys = keys + separator + key; separator = ","; + addDefaultNestedFieldsToReturn(fieldsToReturn); fieldsToReturn.add(key + ":[subquery]"); + addNestedDefaultFieldList(extraParameters, key); extraParameters.put(key + ".q", "+nestedUUID:" + nestedTableId + " AND {!terms f=_root_ v=$row.uuid}"); Integer quantity = column.getNestedColumns().getQuantityInList(); if(quantity <= column.getNestedColumns().getMaxQuantityInList()){ @@ -188,4 +190,16 @@ public static void buildNestedFieldsToReturn(ViewerTable table, CollectionStatus } fieldsToReturn.add(ViewerConstants.SOLR_ROWS_NESTED + ":" + "\"" + keys + "\""); } + + public static void addNestedDefaultFieldList(Map extraParameters, String key) { + extraParameters.put(key + ".fl", ViewerConstants.SOLR_ROWS_NESTED + "*," + ViewerConstants.INDEX_ID + "," + + ViewerConstants.SOLR_ROWS_NESTED_COL + "*," + "originalRowUUID_t"); + } + + public static void addDefaultNestedFieldsToReturn(List fieldsToReturn) { + fieldsToReturn.add(ViewerConstants.SOLR_ROWS_NESTED + "*"); + fieldsToReturn.add(ViewerConstants.SOLR_ROWS_NESTED_COL + "*"); + fieldsToReturn.add("originalRowUUID_t"); + } + } diff --git a/src/main/java/com/databasepreservation/common/client/tools/JSOUtils.java b/src/main/java/com/databasepreservation/common/client/tools/JSOUtils.java index bf47d5940..28ec3cb39 100644 --- a/src/main/java/com/databasepreservation/common/client/tools/JSOUtils.java +++ b/src/main/java/com/databasepreservation/common/client/tools/JSOUtils.java @@ -10,9 +10,6 @@ import java.util.List; import java.util.Map; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import com.databasepreservation.common.client.models.JSO.ExtensionFilter; import com.databasepreservation.common.client.models.JSO.FilterJSO; import com.databasepreservation.common.client.models.JSO.OpenFileDialogOptions; diff --git a/src/main/java/com/databasepreservation/common/server/index/schema/collections/RowsCollection.java b/src/main/java/com/databasepreservation/common/server/index/schema/collections/RowsCollection.java index 1f2963185..8488cc88c 100644 --- a/src/main/java/com/databasepreservation/common/server/index/schema/collections/RowsCollection.java +++ b/src/main/java/com/databasepreservation/common/server/index/schema/collections/RowsCollection.java @@ -13,12 +13,16 @@ import static com.databasepreservation.common.client.ViewerConstants.SOLR_ROWS_TABLE_ID; import static com.databasepreservation.common.client.ViewerConstants.SOLR_ROWS_TABLE_UUID; -import com.databasepreservation.common.client.models.structure.ViewerLobStoreType; -import com.databasepreservation.common.client.tools.ViewerCelllUtils; -import java.util.*; - -import com.databasepreservation.common.client.models.structure.ViewerMimeType; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Date; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; import java.util.Map.Entry; +import java.util.Optional; + import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrInputDocument; import org.roda.core.data.exceptions.AuthorizationDeniedException; @@ -30,7 +34,10 @@ import com.databasepreservation.common.client.ViewerConstants; import com.databasepreservation.common.client.models.structure.ViewerCell; +import com.databasepreservation.common.client.models.structure.ViewerLobStoreType; +import com.databasepreservation.common.client.models.structure.ViewerMimeType; import com.databasepreservation.common.client.models.structure.ViewerRow; +import com.databasepreservation.common.client.tools.ViewerCelllUtils; import com.databasepreservation.common.exceptions.ViewerException; import com.databasepreservation.common.server.index.factory.SolrClientFactory; import com.databasepreservation.common.server.index.schema.AbstractSolrCollection; @@ -193,7 +200,8 @@ private ViewerRow populateNestedRow(SolrDocument doc) throws ViewerException { private Optional cellFromEntry(String columnName, Object value, SolrDocument doc) { Optional viewerCell = Optional.empty(); - if (columnName.startsWith(ViewerConstants.SOLR_INDEX_ROW_COLUMN_NAME_PREFIX)) { + if (columnName.startsWith(ViewerConstants.SOLR_INDEX_ROW_COLUMN_NAME_PREFIX) + || columnName.startsWith(ViewerConstants.SOLR_ROWS_NESTED_COL)) { if (value instanceof Date) { // DateTime date = new DateTime(value, JodaUtils.DEFAULT_CHRONOLOGY); final String dateTimeString = ((Date) value).toInstant().toString(); diff --git a/src/main/java/com/databasepreservation/common/transformers/DenormalizeTransformer.java b/src/main/java/com/databasepreservation/common/transformers/DenormalizeTransformer.java index ac72fb74e..dbbddd52b 100644 --- a/src/main/java/com/databasepreservation/common/transformers/DenormalizeTransformer.java +++ b/src/main/java/com/databasepreservation/common/transformers/DenormalizeTransformer.java @@ -265,7 +265,7 @@ private void createdNestedDocument(ViewerRow row, String parentUUID, List cell : cells.entrySet()) { - String key = cell.getKey(); + String key = ViewerConstants.SOLR_ROWS_NESTED_COL + cell.getKey(); String urlPath = null; if (cell.getKey().equals(viewerColumn.getSolrName()) && viewerColumn.getType().getTypeName().equals("BINARY LARGE OBJECT")) {