diff --git a/curation-api/src/main/java/eu/clarin/cmdi/curation/api/vlo_extension/CMDIDataImpl.java b/curation-api/src/main/java/eu/clarin/cmdi/curation/api/vlo_extension/CMDIDataImpl.java index d065fb21..ab931f60 100644 --- a/curation-api/src/main/java/eu/clarin/cmdi/curation/api/vlo_extension/CMDIDataImpl.java +++ b/curation-api/src/main/java/eu/clarin/cmdi/curation/api/vlo_extension/CMDIDataImpl.java @@ -10,6 +10,7 @@ import org.apache.commons.lang3.tuple.Pair; +import eu.clarin.cmdi.vlo.FieldKey; import eu.clarin.cmdi.vlo.config.FieldNameService; import eu.clarin.cmdi.vlo.importer.CMDIDataBaseImpl; import eu.clarin.cmdi.vlo.importer.mapping.FacetDefinition; @@ -26,80 +27,87 @@ * * @author Wolfgang Walter SAUER (wowasa) <wolfgang.sauer@oeaw.ac.at> */ -public class CMDIDataImpl extends CMDIDataBaseImpl>> { - private final Map> facetValuesMap; - - public CMDIDataImpl(FieldNameService fieldNameService) { - super(fieldNameService); - facetValuesMap = new HashMap>(); - } - - @Override - public void addDocField(ValueSet valueSet, boolean caseInsensitive) { - - this.facetValuesMap.computeIfAbsent(valueSet.getTargetFacetName(), list -> new ArrayList()).add(valueSet); - } - - @Override - public void addDocField(String fieldName, Object value, boolean caseInsensitive) { - - this.facetValuesMap.computeIfAbsent(fieldName, list -> new ArrayList()).add( - - new ValueSet( - -1, - new FacetDefinition(null, "unknown"), - new TargetFacet(new FacetDefinition(null, fieldName), value.toString()), - Pair.of(value.toString(), DEFAULT_LANGUAGE), - false, - false - ) - ); - } - - @Override - public void addDocFieldIfNull(ValueSet valueSet, boolean caseInsensitive) { - - this.facetValuesMap.putIfAbsent(valueSet.getTargetFacetName(), List.of(valueSet)); - } - - @Override - public Collection getDocField(String name) { - - return null; - } - - @Override - public Map> getDocument() { - return this.facetValuesMap; - } - - @Override - public void replaceDocField(ValueSet valueSet, boolean caseInsensitive) { - this.facetValuesMap.put(valueSet.getTargetFacetName(), Arrays.asList(valueSet)); - - } - - @Override - public void replaceDocField(String name, Object value, boolean caseInsensitive) { - - - } - - @Override - public void removeField(String name) { - this.facetValuesMap.remove(name); - - } - - @Override - public boolean hasField(String name) { - return this.facetValuesMap.containsKey(name); - } - - @Override - public Collection getFieldValues(String name) { - - return this.facetValuesMap.get(name).stream().map(Object.class::cast).collect(Collectors.toList()); - } +public class CMDIDataImpl extends CMDIDataBaseImpl>> { + + private final Map> facetValuesMap; + + public CMDIDataImpl(FieldNameService fieldNameService) { + super(fieldNameService); + facetValuesMap = new HashMap>(); + } + + @Override + public void addDocField(ValueSet valueSet, boolean caseInsensitive) { + + final String fieldName = valueSet.getTargetFacetName(); + final String value = valueSet.getValue(); + + if (fieldNameService.getFieldName(FieldKey.ID).equals(fieldName)) { + setId(value.trim()); + } + else { + + this.facetValuesMap.computeIfAbsent(valueSet.getTargetFacetName(), list -> new ArrayList()) + .add(valueSet); + } + } + + @Override + public void addDocField(String fieldName, Object value, boolean caseInsensitive) { + + this.facetValuesMap.computeIfAbsent(fieldName, list -> new ArrayList()).add( + + new ValueSet(-1, new FacetDefinition(null, "unknown"), + new TargetFacet(new FacetDefinition(null, fieldName), value.toString()), + Pair.of(value.toString(), DEFAULT_LANGUAGE), false, false)); + } + + @Override + public void addDocFieldIfNull(ValueSet valueSet, boolean caseInsensitive) { + + this.facetValuesMap.putIfAbsent(valueSet.getTargetFacetName(), List.of(valueSet)); + } + + @Override + public Collection getDocField(String name) { + + Collection valueSetList; + + return (valueSetList = this.facetValuesMap.get(name)) == null ? null + : valueSetList.stream().map(ValueSet::getValue).collect(Collectors.toList()); + } + + @Override + public Map> getDocument() { + return this.facetValuesMap; + } + + @Override + public void replaceDocField(ValueSet valueSet, boolean caseInsensitive) { + this.facetValuesMap.put(valueSet.getTargetFacetName(), Arrays.asList(valueSet)); + + } + + @Override + public void replaceDocField(String name, Object value, boolean caseInsensitive) { + + } + + @Override + public void removeField(String name) { + this.facetValuesMap.remove(name); + + } + + @Override + public boolean hasField(String name) { + return this.facetValuesMap.containsKey(name); + } + + @Override + public Collection getFieldValues(String name) { + + return this.facetValuesMap.get(name).stream().map(Object.class::cast).collect(Collectors.toList()); + } }