import java.util.ArrayList;\r
import java.util.List;\r
import java.util.TreeMap;\r
-import java.util.UUID;\r
\r
+import org.apache.commons.lang.StringUtils;\r
import org.apache.log4j.Logger;\r
\r
+import eu.etaxonomy.cdm.io.excel.common.ExcelRowBase;\r
import eu.etaxonomy.cdm.model.common.IdentifiableSource;\r
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;\r
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;\r
* @created 08.04.2011\r
* @version 1.0\r
*/\r
-public class SpecimenRow {\r
+public class SpecimenRow extends ExcelRowBase{\r
@SuppressWarnings("unused")\r
private static final Logger logger = Logger.getLogger(SpecimenRow.class);\r
\r
- private UUID uuid = null; \r
private String basisOfRecord;\r
+\r
private String country;\r
private String isoCountry;\r
private String locality;\r
private String latitude;\r
private String longitude;\r
+ private String referenceSystem;\r
+ private String errorRadius;\r
+ private String altitude;\r
+ private String altitudeMax;\r
private String fieldNotes;\r
- private String fieldNumber;\r
+ private String collectingDate;\r
+ private String collectingDateEnd;\r
+ private String collectorsNumber;\r
+ private String primaryCollector;\r
+\r
+ private String sex;\r
+\r
private String accessionNumber;\r
private String barcode;\r
- private String author;\r
- private String absoluteElevation;\r
- private String family;\r
- private String genus;\r
- private String specificEpithet;\r
- private String sex;\r
- private String ecology;\r
- private String plantDescription;\r
+ \r
+ // private String author;\r
+\r
+// private String family;\r
+// private String genus;\r
+// private String specificEpithet;\r
private String collectionCode;\r
private String collection;\r
- private String collectingDate;\r
- private String collectingDateEnd;\r
- private String collectorsNumber;\r
- private String referenceSystem;\r
- private String errorRadius;\r
\r
\r
private TreeMap<Integer, IdentifiableSource> sources = new TreeMap<Integer, IdentifiableSource>();\r
private TreeMap<Integer, String> collectors = new TreeMap<Integer, String>();\r
+ private TreeMap<Integer, String> unitNotes = new TreeMap<Integer, String>();\r
private TreeMap<Integer, SpecimenTypeDesignation> types = new TreeMap<Integer, SpecimenTypeDesignation>();\r
+ private TreeMap<Integer, DeterminationLight> determinations = new TreeMap<Integer, DeterminationLight>();\r
+ private List<PostfixTerm> levels = new ArrayList<PostfixTerm>(); \r
\r
+\r
\r
+ public SpecimenRow() {\r
+ }\r
\r
\r
\r
- public SpecimenRow() {\r
+ // may be public if necessary\r
+ protected class DeterminationLight{\r
+ String taxonUuid;\r
+ String family;\r
+ String genus;\r
+ String rank;\r
+ String fullName;\r
+ String speciesEpi;\r
+ String infraSpeciesEpi;\r
+ String author;\r
+ String modifier;\r
+ String determinedBy;\r
+ String determinedWhen;\r
+ String notes;\r
+ \r
+ public boolean hasTaxonInformation() {\r
+ boolean result = StringUtils.isNotBlank(taxonUuid) \r
+ || StringUtils.isNotBlank(family) \r
+ || StringUtils.isNotBlank(genus)\r
+ || StringUtils.isNotBlank(rank)\r
+ || StringUtils.isNotBlank(fullName)\r
+ || StringUtils.isNotBlank(speciesEpi)\r
+ || StringUtils.isNotBlank(author)\r
+ || StringUtils.isNotBlank(infraSpeciesEpi);\r
+ return result;\r
+ }\r
\r
-// commonNames = new HashMap<String, List<String>>();\r
}\r
-\r
+ \r
\r
// **************************** GETTER / SETTER *********************************/ \r
\r
-\r
- public void setUuid(UUID uuid) {\r
- this.uuid = uuid;\r
- }\r
-\r
-\r
- public UUID getUuid() {\r
- return uuid;\r
- }\r
-\r
-\r
public void setBasisOfRecord(String basisOfRecord) {\r
this.basisOfRecord = basisOfRecord;\r
}\r
}\r
\r
\r
- public void setFieldNumber(String fieldNumber) {\r
- this.fieldNumber = fieldNumber;\r
- }\r
-\r
-\r
- public String getFieldNumber() {\r
- return fieldNumber;\r
- }\r
-\r
-\r
public void setBarcode(String barcode) {\r
this.barcode = barcode;\r
}\r
- \r
- /**\r
- * @return the author\r
- */\r
- public String getAuthor() {\r
- return author;\r
- }\r
-\r
-\r
- /**\r
- * @param author the author to set\r
- */\r
- public void setAuthor(String author) {\r
- this.author = author;\r
- }\r
+// \r
+// /**\r
+// * @return the author\r
+// */\r
+// public String getAuthor() {\r
+// return author;\r
+// }\r
+//\r
+//\r
+// /**\r
+// * @param author the author to set\r
+// */\r
+// public void setAuthor(String author) {\r
+// this.author = author;\r
+// }\r
\r
\r
/**\r
* @return the absoluteElevation\r
*/\r
- public String getAbsoluteElevation() {\r
- return absoluteElevation;\r
+ public String getAltitude() {\r
+ return altitude;\r
}\r
\r
\r
/**\r
* @param absoluteElevation the absoluteElevation to set\r
*/\r
- public void setAbsoluteElevation(String absoluteElevation) {\r
- this.absoluteElevation = absoluteElevation;\r
- }\r
-\r
-\r
- /**\r
- * @return the family\r
- */\r
- public String getFamily() {\r
- return family;\r
- }\r
-\r
-\r
- /**\r
- * @param family the family to set\r
- */\r
- public void setFamily(String family) {\r
- this.family = family;\r
- }\r
-\r
-\r
- /**\r
- * @return the genus\r
- */\r
- public String getGenus() {\r
- return genus;\r
- }\r
-\r
-\r
- /**\r
- * @param genus the genus to set\r
- */\r
- public void setGenus(String genus) {\r
- this.genus = genus;\r
- }\r
-\r
-\r
- /**\r
- * @return the specificEpithet\r
- */\r
- public String getSpecificEpithet() {\r
- return specificEpithet;\r
- }\r
-\r
-\r
- /**\r
- * @param specificEpithet the specificEpithet to set\r
- */\r
- public void setSpecificEpithet(String specificEpithet) {\r
- this.specificEpithet = specificEpithet;\r
- }\r
-\r
-\r
- /**\r
- * @return the ecology\r
- */\r
- public String getEcology() {\r
- return ecology;\r
- }\r
-\r
-\r
- /**\r
- * @param ecology the ecology to set\r
- */\r
- public void setEcology(String ecology) {\r
- this.ecology = ecology;\r
- }\r
-\r
-\r
- /**\r
- * @return the plantDescription\r
- */\r
- public String getPlantDescription() {\r
- return plantDescription;\r
- }\r
-\r
-\r
- /**\r
- * @param plantDescription the plantDescription to set\r
- */\r
- public void setPlantDescription(String plantDescription) {\r
- this.plantDescription = plantDescription;\r
+ public void setAltitude(String altitude) {\r
+ this.altitude = altitude;\r
}\r
\r
\r
return getOrdered(sources);\r
}\r
\r
+\r
+ public void setCollectors(String value) {\r
+ //TODO better parse somewhere else? Quick and dirty implementation\r
+ List<String> authors = new ArrayList<String>();\r
+ String[] splits = value.split("&");\r
+ for (String split: splits){\r
+ split = split.trim();\r
+ authors.add(split);\r
+ }\r
+ int index = 1;\r
+ for (int i = 0; i < authors.size() ; i++){\r
+ String author = authors.get(i);\r
+ if (i < authors.size()-1){\r
+ String[] internalSplits = author.split(",");\r
+ for (String internal : internalSplits){\r
+ internal = internal.trim();\r
+ this.collectors.put(index++, internal);\r
+ }\r
+ }else{\r
+ this.collectors.put(index++, author);\r
+ }\r
+ }\r
+ }\r
+ \r
public void putCollector(int key, String collector){\r
this.collectors.put(key, collector);\r
}\r
return getOrdered(collectors);\r
}\r
\r
+ public void putUnitNote(int key, String unitNote){\r
+ this.unitNotes.put(key, unitNote);\r
+ }\r
+\r
+ public List<String> getUnitNotes() {\r
+ return getOrdered(unitNotes);\r
+ }\r
+ \r
\r
\r
/**\r
return designation;\r
}\r
\r
+ public void putDeterminationFamily(int key, String family){\r
+ DeterminationLight determinationEvent = getOrMakeDetermination(key);\r
+ determinationEvent.family = family;\r
+ }\r
+\r
+ public void putDeterminationFullName(int key, String fullName){\r
+ DeterminationLight determinationEvent = getOrMakeDetermination(key);\r
+ determinationEvent.fullName = fullName;\r
+ }\r
+ \r
+ public void putDeterminationTaxonUuid(int key, String taxonUuid){\r
+ DeterminationLight determinationEvent = getOrMakeDetermination(key);\r
+ determinationEvent.taxonUuid = taxonUuid;\r
+ }\r
+\r
+ public void putDeterminationRank(int key, String rank){\r
+ DeterminationLight determinationEvent = getOrMakeDetermination(key);\r
+ determinationEvent.rank = rank;\r
+ }\r
+\r
+ public void putDeterminationGenus(int key, String genus){\r
+ DeterminationLight determinationEvent = getOrMakeDetermination(key);\r
+ determinationEvent.genus = genus;\r
+ }\r
+ \r
+ public void putDeterminationSpeciesEpi(int key, String speciesEpi){\r
+ DeterminationLight determinationEvent = getOrMakeDetermination(key);\r
+ determinationEvent.speciesEpi = speciesEpi;\r
+ }\r
+\r
+ public void putDeterminationInfraSpeciesEpi(int key, String infraSpeciesEpi){\r
+ DeterminationLight determinationEvent = getOrMakeDetermination(key);\r
+ determinationEvent.infraSpeciesEpi = infraSpeciesEpi;\r
+ }\r
+\r
+ public void putDeterminationAuthor(int key, String author){\r
+ DeterminationLight determinationEvent = getOrMakeDetermination(key);\r
+ determinationEvent.author = author;\r
+ }\r
+\r
+ public void putDeterminationDeterminedBy(int key, String determinedBy){\r
+ DeterminationLight determinationEvent = getOrMakeDetermination(key);\r
+ determinationEvent.determinedBy = determinedBy;\r
+ }\r
+\r
+ public void putDeterminationDeterminedWhen(int key, String determinedWhen){\r
+ DeterminationLight determinationEvent = getOrMakeDetermination(key);\r
+ determinationEvent.determinedWhen = determinedWhen;\r
+ }\r
+\r
+ public void putDeterminationDeterminationNotes(int key, String notes){\r
+ DeterminationLight determinationEvent = getOrMakeDetermination(key);\r
+ determinationEvent.notes = notes;\r
+ }\r
+ \r
+ public void putDeterminationDeterminationModifier(int key, String modifier){\r
+ DeterminationLight determinationEvent = getOrMakeDetermination(key);\r
+ determinationEvent.modifier = modifier;\r
+ }\r
+ \r
+ \r
+ public List<DeterminationLight> getDetermination() {\r
+ List<DeterminationLight> result = getOrdered(determinations);\r
+ if (determinations.size() > 1 && getCommonDetermination()!= null ){\r
+ result.remove(getCommonDetermination());\r
+ }\r
+ return result;\r
+ }\r
+ \r
+ /**\r
+ * Returns the determination with key "0".\r
+ * @return\r
+ */\r
+ public DeterminationLight getCommonDetermination() {\r
+ if (determinations.get(0) != null){\r
+ return determinations.get(0);\r
+ }\r
+ return null;\r
+ }\r
+ \r
+ \r
\r
- private<T extends Object> List<T> getOrdered(TreeMap<Integer, T> tree) {\r
+ private DeterminationLight getOrMakeDetermination(int key) {\r
+ DeterminationLight determination = this.determinations.get(key);\r
+ if (determination == null){\r
+ determination = new DeterminationLight();\r
+ this.determinations.put(key, determination);\r
+ }\r
+ return determination;\r
+ }\r
+ \r
+\r
+ private<T extends Object> List<T> getOrdered(TreeMap<?, T> tree) {\r
List<T> result = new ArrayList<T>();\r
for (T value : tree.values()){\r
result.add(value);\r
public String getCollection() {\r
return collection;\r
}\r
+\r
+\r
+ public void addLeveledArea(String levelPostfix, String value) {\r
+ PostfixTerm area = new PostfixTerm();\r
+ area.term = value;\r
+ area.postfix = levelPostfix;\r
+ this.levels.add(area);\r
+ }\r
\r
+ public List<PostfixTerm> getLeveledAreas(){\r
+ return levels;\r
+ }\r
\r
+ public void setAltitudeMax(String altitudeMax) {\r
+ this.altitudeMax = altitudeMax;\r
+ }\r
+\r
+\r
+ public String getAltitudeMax() {\r
+ return altitudeMax;\r
+ }\r
+\r
+\r
+ /**\r
+ * @param primaryCollector the primaryCollector to set\r
+ */\r
+ public void setPrimaryCollector(String primaryCollector) {\r
+ this.primaryCollector = primaryCollector;\r
+ }\r
\r
\r
+ /**\r
+ * @return the primaryCollector\r
+ */\r
+ public String getPrimaryCollector() {\r
+ return primaryCollector;\r
+ }\r
\r
}\r