import org.springframework.stereotype.Component;\r
\r
import eu.etaxonomy.cdm.common.CdmUtils;\r
+import eu.etaxonomy.cdm.io.common.TdwgAreaProvider;\r
import eu.etaxonomy.cdm.io.common.mapping.IInputTransformer;\r
import eu.etaxonomy.cdm.io.common.mapping.UndefinedTransformerMethodException;\r
import eu.etaxonomy.cdm.io.excel.common.ExcelImporterBase;\r
import eu.etaxonomy.cdm.model.common.Language;\r
-import eu.etaxonomy.cdm.model.common.Marker;\r
-import eu.etaxonomy.cdm.model.common.MarkerType;\r
import eu.etaxonomy.cdm.model.description.Distribution;\r
import eu.etaxonomy.cdm.model.description.Feature;\r
-import eu.etaxonomy.cdm.model.description.PresenceTerm;\r
+import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;\r
import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
import eu.etaxonomy.cdm.model.description.TextData;\r
import eu.etaxonomy.cdm.model.location.NamedArea;\r
-import eu.etaxonomy.cdm.model.location.TdwgArea;\r
import eu.etaxonomy.cdm.model.name.BotanicalName;\r
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
import eu.etaxonomy.cdm.model.name.NonViralName;\r
\r
@Override\r
protected boolean isIgnore(CyprusImportState state) {\r
- return false;\r
+ return ! state.getConfig().isDoTaxa();\r
}\r
\r
\r
\r
\r
@Override\r
- protected boolean analyzeRecord(HashMap<String, String> record, CyprusImportState state) {\r
+ protected void analyzeRecord(HashMap<String, String> record, CyprusImportState state) {\r
\r
- boolean success = true;\r
- Set<String> keys = record.keySet();\r
+ Set<String> keys = record.keySet();\r
\r
CyprusRow cyprusRow = new CyprusRow();\r
state.setCyprusRow(cyprusRow);\r
cyprusRow.setDivision(value);\r
\r
} else {\r
- success = false;\r
+ state.setUnsuccessfull();\r
logger.error("Unexpected column header " + key);\r
}\r
}\r
- return success;\r
+ return;\r
}\r
\r
private static INonViralNameParser nameParser = NonViralNameParserImpl.NewInstance();\r
- private static NomenclaturalCode nc = NomenclaturalCode.ICBN;\r
+ private static NomenclaturalCode nc = NomenclaturalCode.ICNAFP;\r
private Feature redBookCategory;\r
- private PresenceTerm indigenous;\r
- private PresenceTerm casual;\r
- private PresenceTerm nonInvasive;\r
- private PresenceTerm invasive;\r
- private PresenceTerm questionable;\r
-\r
+ private Feature endemism;\r
+ private PresenceAbsenceTerm indigenous;\r
+ private PresenceAbsenceTerm indigenousDoubtful;\r
+ private PresenceAbsenceTerm cultivatedDoubtful;\r
+ \r
+ private PresenceAbsenceTerm casual;\r
+ private PresenceAbsenceTerm casualDoubtful;\r
+ private PresenceAbsenceTerm nonInvasive;\r
+ private PresenceAbsenceTerm nonInvasiveDoubtful;\r
+ private PresenceAbsenceTerm invasive;\r
+ private PresenceAbsenceTerm invasiveDoubtful;\r
+ private PresenceAbsenceTerm questionable;\r
+ private PresenceAbsenceTerm questionableDoubtful;\r
+ \r
private boolean termsCreated = false;\r
\r
private boolean makeTerms(CyprusImportState state) {\r
IInputTransformer transformer = state.getTransformer();\r
\r
try {\r
+ //feature\r
UUID redBookUuid = transformer.getFeatureUuid("Red book");\r
- redBookCategory = this.getFeature(state, redBookUuid, "Red book category", "Red data book category", "Red book");\r
+ redBookCategory = this.getFeature(state, redBookUuid, "Red book category", "Red data book category", "Red book", null);\r
getTermService().save(redBookCategory);\r
\r
+ UUID endemismUuid = transformer.getFeatureUuid("Endemism");\r
+ endemism = this.getFeature(state, endemismUuid, "Endemism", "Endemism", "Endemism", null);\r
+ getTermService().save(endemism);\r
+ \r
+ //status\r
+ \r
UUID indigenousUuid = transformer.getPresenceTermUuid("IN");\r
- indigenous = this.getPresenceTerm(state, indigenousUuid, "Indigenous", "Indigenous", "IN");\r
+ indigenous = this.getPresenceTerm(state, indigenousUuid, "indigenous", "Indigenous", "IN");\r
getTermService().save(indigenous);\r
+ UUID indigenousDoubtfulUuid = transformer.getPresenceTermUuid("IN?");\r
+ indigenousDoubtful = this.getPresenceTerm(state, indigenousDoubtfulUuid, "indigenous?", "Indigenous?", "IN?");\r
+ getTermService().save(indigenousDoubtful);\r
+\r
+ UUID cultivatedDoubtfulUuid = transformer.getPresenceTermUuid("CU?");\r
+ cultivatedDoubtful = this.getPresenceTerm(state, cultivatedDoubtfulUuid, "cultivated?", "Cultivated?", "CU?");\r
+ getTermService().save(cultivatedDoubtful);\r
+ \r
\r
UUID casualUuid = transformer.getPresenceTermUuid("CA");\r
- casual = this.getPresenceTerm(state, casualUuid, "Casual", "Casual", "CA");\r
- getTermService().save(redBookCategory);\r
+ casual = this.getPresenceTerm(state, casualUuid, "casual", "Casual", "CA");\r
+ getTermService().save(casual);\r
+ UUID casualDoubtfulUuid = transformer.getPresenceTermUuid("CA?");\r
+ casualDoubtful = this.getPresenceTerm(state, casualDoubtfulUuid, "casual?", "Casual?", "CA?");\r
+ getTermService().save(casualDoubtful);\r
+\r
\r
UUID nonInvasiveUuid = transformer.getPresenceTermUuid("NN");\r
- nonInvasive = this.getPresenceTerm(state, nonInvasiveUuid, "Naturalized non-invasive", "Naturalized non-invasive", "NN");\r
+ nonInvasive = this.getPresenceTerm(state, nonInvasiveUuid, "naturalized non-invasive", "Naturalized non-invasive", "NN");\r
getTermService().save(nonInvasive);\r
+ UUID nonInvasiveDoubtfulUuid = transformer.getPresenceTermUuid("NN?");\r
+ nonInvasiveDoubtful = this.getPresenceTerm(state, nonInvasiveDoubtfulUuid, "naturalized non-invasive?", "Naturalized non-invasive?", "NN?");\r
+ getTermService().save(nonInvasiveDoubtful);\r
\r
UUID invasiveUuid = transformer.getPresenceTermUuid("NA");\r
- invasive = this.getPresenceTerm(state, invasiveUuid, "Naturalized invasive", "Naturalized invasive", "NA");\r
+ invasive = this.getPresenceTerm(state, invasiveUuid, "naturalized invasive", "Naturalized invasive", "NA");\r
getTermService().save(invasive);\r
+ UUID invasiveDoubtfulUuid = transformer.getPresenceTermUuid("NA?");\r
+ invasiveDoubtful = this.getPresenceTerm(state, invasiveDoubtfulUuid, "naturalized invasive?", "Naturalized invasive?", "NA?");\r
+ getTermService().save(invasiveDoubtful);\r
\r
- \r
UUID questionableUuid = transformer.getPresenceTermUuid("Q");\r
- questionable = this.getPresenceTerm(state, questionableUuid, "Questionable", "Questionable", "Q");\r
+ questionable = this.getPresenceTerm(state, questionableUuid, "questionable", "Questionable", "Q");\r
getTermService().save(questionable);\r
+ UUID questionableDoubtfulUuid = transformer.getPresenceTermUuid("Q?");\r
+ questionableDoubtful = this.getPresenceTerm(state, questionableDoubtfulUuid, "questionable?", "Questionable?", "Q?");\r
+ getTermService().save(questionableDoubtful);\r
\r
termsCreated = true;\r
\r
}\r
return true;\r
\r
-// UUID redBookUuid = UUID.fromString("d8416d46-b5b4-45d5-b26b-9bda4fa491c9");\r
-// term = this.getPresenceTerm(state, redBookUuid, "Red book category", "Red data book category", "Red book");\r
-// getTermService().save(term);\r
-// \r
-// UUID redBookUuid = UUID.fromString("813a58bd-f8ab-4a80-9029-87a112dbb59f");\r
-// term = this.getPresenceTerm(state, redBookUuid, "Red book category", "Red data book category", "Red book");\r
-// getTermService().save(term);\r
- \r
}\r
\r
/** \r
* Stores taxa records in DB\r
*/\r
@Override\r
- protected boolean firstPass(CyprusImportState state) {\r
- boolean success = true;\r
+ protected void firstPass(CyprusImportState state) {\r
+ \r
makeTerms(state);\r
CyprusRow taxonLight = state.getCyprusRow();\r
Reference citation = null;\r
String statusString = taxonLight.getStatus();\r
String redBookCategory = taxonLight.getRedDataBookCategory();\r
\r
- // BotanicalName subSpeciesName = (BotanicalName)nameParser.parseSimpleName(subSpeciesStr, nc, Rank.SUBSPECIES());\r
-// BotanicalName speciesName = (BotanicalName)nameParser.parseSimpleName(speciesStr, nc, Rank.SPECIES());\r
- \r
-// Classification classification = null;\r
- \r
if (StringUtils.isNotBlank(speciesStr)) {\r
+ boolean speciesIsExisting = false;\r
Taxon mainTaxon = null;\r
+ //species\r
Taxon speciesTaxon = (Taxon)createTaxon(state, Rank.SPECIES(), speciesStr, Taxon.class, nc);\r
mainTaxon = speciesTaxon;\r
+ \r
+ //subspecies\r
if (StringUtils.isNotBlank(subSpeciesStr)){\r
+ Taxon existingSpecies = state.getHigherTaxon(speciesStr);\r
+ if (existingSpecies != null){\r
+ speciesIsExisting = true;\r
+ speciesTaxon = existingSpecies;\r
+ }\r
+ \r
Taxon subSpeciesTaxon = (Taxon)createTaxon(state, Rank.SUBSPECIES(), subSpeciesStr, Taxon.class, nc);\r
\r
if (subSpeciesTaxon != null){\r
makeParent(state, speciesTaxon, subSpeciesTaxon, citation, microCitation);\r
}\r
mainTaxon = subSpeciesTaxon;\r
+ state.putHigherTaxon(speciesStr, speciesTaxon);\r
}\r
\r
- makeHigherTaxa(state, taxonLight, speciesTaxon, citation, microCitation);\r
+ if (! speciesIsExisting){\r
+ makeHigherTaxa(state, taxonLight, speciesTaxon, citation, microCitation);\r
+ }\r
makeHomotypicSynonyms(state, citation, microCitation, homotypicSynonymList, mainTaxon); \r
makeHeterotypicSynonyms(state, citation, microCitation, heterotypicSynonymList, mainTaxon); \r
makeSystematics(systematicsString, mainTaxon);\r
// state.putHigherTaxon(higherName, uuid);//(speciesStr, mainTaxon);\r
getTaxonService().save(mainTaxon);\r
}\r
- return success;\r
+ return;\r
}\r
\r
\r
if (StringUtils.isNotBlank(systematicsString)){\r
TaxonDescription td = this.getTaxonDescription(mainTaxon, false, true);\r
TextData textData = TextData.NewInstance(Feature.SYSTEMATICS());\r
- textData.putText(systematicsString, Language.UNDETERMINED());\r
+ textData.putText(Language.UNDETERMINED(), systematicsString);\r
td.addElement(textData);\r
}\r
}\r
private void makeEndemism(String endemismString, Taxon mainTaxon) {\r
//endemism\r
if (StringUtils.isNotBlank(endemismString)){\r
- boolean flag;\r
- if (endemismString.trim().equalsIgnoreCase("not endemic") || endemismString.trim().equalsIgnoreCase("ne?")){\r
- flag = false;\r
- }else if (endemismString.trim().equalsIgnoreCase("endemic")){\r
- flag = true;\r
- }else{\r
- throw new RuntimeException(endemismString + " is not a valid value for endemism");\r
- }\r
- Marker marker = Marker.NewInstance(MarkerType.ENDEMIC(), flag);\r
- mainTaxon.addMarker(marker);\r
+ //OLD - not wanted as marker\r
+// boolean flag;\r
+// if (endemismString.trim().equalsIgnoreCase("not endemic") || endemismString.trim().equalsIgnoreCase("ne?")){\r
+// flag = false;\r
+// }else if (endemismString.trim().equalsIgnoreCase("endemic")){\r
+// flag = true;\r
+// }else{\r
+// throw new RuntimeException(endemismString + " is not a valid value for endemism");\r
+// }\r
+// Marker marker = Marker.NewInstance(MarkerType.ENDEMIC(), flag);\r
+// mainTaxon.addMarker(marker);\r
+ //text data\r
+ TaxonDescription td = this.getTaxonDescription(mainTaxon, false, true);\r
+ TextData textData = TextData.NewInstance(endemism);\r
+ textData.putText(Language.ENGLISH(), endemismString);\r
+ td.addElement(textData);\r
}\r
}\r
\r
\r
private void makeStatus(String statusString, Taxon mainTaxon) {\r
//status\r
- //FIXME doubtful\r
if (StringUtils.isNotBlank(statusString)){\r
- PresenceTerm status = null;\r
- if (statusString.contains("Indigenous")){\r
+ PresenceAbsenceTerm status = null;\r
+ if (statusString.contains("Indigenous?")){\r
+ status = indigenousDoubtful;\r
+ }else if (statusString.contains("Indigenous")){\r
status = indigenous;\r
- }else if (statusString.contains("Casual") || statusString.contains("Causal")){\r
+ }else if (statusString.contains("Casual?") || statusString.contains("Causal?")){\r
+ status = casualDoubtful;\r
+ }else if (statusString.contains("Casual")){\r
status = casual;\r
+ }else if (statusString.contains("Cultivated?")){\r
+ status = cultivatedDoubtful;\r
}else if (statusString.contains("Cultivated")){\r
- status = PresenceTerm.CULTIVATED();\r
+ status = PresenceAbsenceTerm.CULTIVATED();\r
+ }else if (statusString.contains("non-invasive?")){\r
+ status = nonInvasiveDoubtful;\r
}else if (statusString.contains("non-invasive")){\r
status = nonInvasive;\r
+ }else if (statusString.contains("invasive?")){\r
+ status = invasiveDoubtful;\r
}else if (statusString.contains("invasive")){\r
status = invasive;\r
+ }else if (statusString.contains("Questionable?")){\r
+ status = questionableDoubtful;\r
}else if (statusString.contains("Questionable")){\r
-// status = PresenceTerm.NATIVE_PRESENCE_QUESTIONABLE();\r
status = questionable;\r
}else if (statusString.startsWith("F")){\r
- //FIXME\r
- status = PresenceTerm.NATIVE_PRESENCE_QUESTIONABLE();\r
+ status = null;\r
}else if (statusString.equals("##")){\r
- //FIXME\r
- status = PresenceTerm.NATIVE_PRESENCE_QUESTIONABLE();\r
+ status = null;\r
}else{\r
logger.warn("Unknown status: " + statusString);\r
- status = PresenceTerm.PRESENT();\r
+ status = null;\r
}\r
TaxonDescription td = this.getTaxonDescription(mainTaxon, false, true);\r
- NamedArea area = TdwgArea.getAreaByTdwgAbbreviation("CYP");\r
+ NamedArea area = TdwgAreaProvider.getAreaByTdwgAbbreviation("CYP");\r
Distribution distribution = Distribution.NewInstance(area, status);\r
td.addElement(distribution);\r
\r
//text data\r
- //FIXME feature \r
TextData textData = TextData.NewInstance(Feature.STATUS());\r
- textData.putText(statusString, Language.ENGLISH());\r
+ textData.putText(Language.ENGLISH(), statusString);\r
td.addElement(textData);\r
}\r
}\r
//red data book category\r
if (StringUtils.isNotBlank(redBookCategory)){\r
TaxonDescription td = this.getTaxonDescription(mainTaxon, false, true);\r
- //FIXME feature type\r
TextData textData = TextData.NewInstance(this.redBookCategory);\r
- textData.putText(redBookCategory, Language.ENGLISH());\r
+ textData.putText(Language.ENGLISH(), redBookCategory);\r
td.addElement(textData);\r
}\r
}\r
* Stores parent-child, synonym and common name relationships\r
*/\r
@Override\r
- protected boolean secondPass(CyprusImportState state) {\r
- boolean success = true;\r
+ protected void secondPass(CyprusImportState state) {\r
// CyprusRow cyprusRow = state.getCyprusRow();\r
-\r
- return success;\r
+ return;\r
}\r
\r
\r
Classification tree = state.getTree(sec);\r
if (tree == null){\r
tree = makeTree(state, sec);\r
- tree.setTitleCache("Cyprus");\r
+ tree.setTitleCache(state.getConfig().getSourceReferenceTitle());\r
}\r
if (sec.equals(childTaxon.getSec())){\r
success &= (null != tree.addParentChild(parentTaxon, childTaxon, citation, microCitation));\r