diff --git a/Kitodo-DataEditor/src/main/java/org/kitodo/dataeditor/ruleset/NestedKeyView.java b/Kitodo-DataEditor/src/main/java/org/kitodo/dataeditor/ruleset/NestedKeyView.java index 58ed8440b54..7d9334ad822 100644 --- a/Kitodo-DataEditor/src/main/java/org/kitodo/dataeditor/ruleset/NestedKeyView.java +++ b/Kitodo-DataEditor/src/main/java/org/kitodo/dataeditor/ruleset/NestedKeyView.java @@ -23,6 +23,7 @@ import java.util.TreeMap; import org.kitodo.api.Metadata; +import org.kitodo.api.MetadataGroup; import org.kitodo.api.dataeditor.rulesetmanagement.ComplexMetadataViewInterface; import org.kitodo.api.dataeditor.rulesetmanagement.Domain; import org.kitodo.api.dataeditor.rulesetmanagement.MetadataViewInterface; @@ -379,6 +380,24 @@ private MetadataViewInterface rowToView(AuxiliaryTableRow row) { : new KeyView(row.getKey(), rule.getRuleForKey(row.getId(), division), settings, priorityList); } + /** + * Creates a metadata view for one line of the auxiliary table. + * This method takes metadata groups into account that are not defined in the ruleset. + * + * @param row row to make a view for + * @param index index of the metadata object in the row + * @return metadata view + */ + private MetadataViewInterface rowToView(AuxiliaryTableRow row, int index) { + if (row.getKey().isUndefined()) { + Collection metadataObjects = row.getDataObjects(index); + if (!metadataObjects.isEmpty() && metadataObjects.iterator().next() instanceof MetadataGroup) { + return getNestedKeyView(row.getId()); + } + } + return rowToView(row); + } + /** * Creates a key view for a grouped key. This is the case when when * {@code } elements occur within another {@code } element in the @@ -424,7 +443,7 @@ public List getSortedVisibleMetadata(Collection excludedDataObjects.addAll(auxiliaryTableRow.getDataObjects(0)); } else { for (int i = 0; i < auxiliaryTableRow.getNumberOfTypeViewsToGenerate(); i++) { - Optional definedTypeView = Optional.of(rowToView(auxiliaryTableRow)); + Optional definedTypeView = Optional.of(rowToView(auxiliaryTableRow, i)); sortedVisibleMetadata.add(new FormRow(definedTypeView, auxiliaryTableRow.getDataObjects(i))); } }