package edu.harvard.iq.dataverse.api.dto; import java.util.ArrayList; import java.util.HashSet; import java.util.List; /** * * @author ellenk */ public class MetadataBlockDTO { String displayName; List<FieldDTO> fields = new ArrayList<FieldDTO>(); public String getDisplayName() { return displayName; } public void setDisplayName(String displayName) { this.displayName = displayName; } public FieldDTO getField(String typeName) { for( FieldDTO field : fields) { if (field.getTypeName().equals(typeName)) { return field; } } return null; } public void addField(FieldDTO newField) { FieldDTO current = getField(newField.typeName); // If there is no Field in this Metadatablock with the typeName, // then add it to the list if (current == null) { fields.add(newField); // Else, add/replace the value in the new field to the current field } else { if (current.multiple) { if (newField.typeClass.equals("compound")) { ArrayList<HashSet<FieldDTO>> currentValue = current.getMultipleCompound(); currentValue.addAll(newField.getMultipleCompound()); current.setMultipleCompound(currentValue); } else if (newField.typeClass.equals("controlledVocabulary")) { List<String> currentValue = current.getMultipleVocab(); currentValue.addAll(newField.getMultipleVocab()); current.setMultipleVocab(currentValue); } else { List<String> currentValue = current.getMultiplePrimitive(); currentValue.addAll(newField.getMultiplePrimitive()); current.setMultiplePrimitive(currentValue); } } else { // If this Field doesn't allow multiples, just replace the value // with the new field value. current.value = newField.value; } } } public List<FieldDTO> getFields() { return fields; } public void setFields(List<FieldDTO> fields) { this.fields = fields; } @Override public String toString() { return "MetadataBlockDTO{" + "displayName=" + displayName + ", fields=" + fields + '}'; } }