\r
@Override\r
public DerivateHierarchyDTO assembleDerivateHierarchyDTO(FieldUnit fieldUnit, UUID associatedTaxonUuid){\r
- final String separator = ", ";\r
\r
if(!getSession().contains(fieldUnit)){\r
fieldUnit = (FieldUnit) load(fieldUnit.getUuid());\r
//Collection\r
final AgentBase collector = gatheringEvent.getCollector();\r
final String fieldNumber = fieldUnit.getFieldNumber();\r
- dto.setCollection((collector!=null?collector:"") + " " + (fieldNumber!=null?fieldNumber:""));\r
+ dto.setCollection(((collector!=null?collector:"") + " " + (fieldNumber!=null?fieldNumber:"")).trim());\r
//Date\r
final Partial gatheringDate = gatheringEvent.getGatheringDate();\r
dto.setDate(gatheringDate!=null?gatheringDate.toString():"");\r
\r
Collection<DerivedUnit> derivedUnits = new ArrayList<DerivedUnit>();\r
getDerivedUnitsFor(fieldUnit, derivedUnits);\r
+\r
//Herbaria map\r
Map<eu.etaxonomy.cdm.model.occurrence.Collection, Integer> collectionToCountMap = new HashMap<eu.etaxonomy.cdm.model.occurrence.Collection, Integer>();\r
+ //List of accession numbers for citation\r
+ List<String> preservedSpecimenAccessionNumbers = new ArrayList<String>();\r
\r
//iterate over sub derivates\r
for (DerivedUnit derivedUnit : derivedUnits) {\r
}\r
//assemble preserved specimen data\r
else if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.PreservedSpecimen){\r
-\r
+ if(!currentAccessionNumber.isEmpty()){\r
+ preservedSpecimenAccessionNumbers.add(currentAccessionNumber);\r
+ }\r
}\r
}\r
\r
+ final String separator = ", ";\r
//assemble citation\r
String citation = "";\r
- citation += dto.getCountry();\r
- citation += separator;\r
+ citation += !dto.getCountry().isEmpty()?dto.getCountry()+separator:"";\r
if(fieldUnit.getGatheringEvent()!=null){\r
if(fieldUnit.getGatheringEvent().getLocality()!=null){\r
citation += fieldUnit.getGatheringEvent().getLocality().getText();\r
citation += separator;\r
}\r
}\r
- citation += dto.getCollection();\r
- if(citation.endsWith(separator)){\r
- citation = citation.substring(0, citation.length()-separator.length());\r
+ citation += !dto.getCollection().isEmpty()?dto.getCollection()+separator:"";\r
+ if(!preservedSpecimenAccessionNumbers.isEmpty()){\r
+ citation += "(";\r
+ for(String accessionNumber:preservedSpecimenAccessionNumbers){\r
+ if(!accessionNumber.isEmpty()){\r
+ citation += accessionNumber+separator;\r
+ }\r
+ }\r
+ citation = removeTail(citation, separator);\r
+ citation += ")";\r
}\r
+ citation = removeTail(citation, separator);\r
dto.setCitation(citation);\r
\r
//assemble herbaria string\r
}\r
herbariaString += separator;\r
}\r
- if(herbariaString.endsWith(separator)){\r
- herbariaString = herbariaString.substring(0, herbariaString.length()-separator.length());\r
- }\r
+ herbariaString = removeTail(herbariaString, separator);\r
dto.setHerbarium(herbariaString);\r
+\r
return dto;\r
}\r
\r
+\r
+ /**\r
+ * @param string\r
+ * @param tail\r
+ * @return\r
+ */\r
+ private String removeTail(String string, final String tail) {\r
+ if(string.endsWith(tail)){\r
+ string = string.substring(0, string.length()-tail.length());\r
+ }\r
+ return string;\r
+ }\r
+\r
private String getMediaUriString(MediaSpecimen mediaSpecimen){\r
String mediaUri = null;\r
Collection<MediaRepresentation> mediaRepresentations = mediaSpecimen.getMediaSpecimen().getRepresentations();\r