import org.springframework.stereotype.Component;\r
import org.springframework.transaction.TransactionStatus;\r
\r
+import eu.etaxonomy.cdm.common.CdmUtils;\r
import eu.etaxonomy.cdm.io.berlinModel.CdmOneToManyMapper;\r
import eu.etaxonomy.cdm.io.berlinModel.CdmStringMapper;\r
import eu.etaxonomy.cdm.io.common.CdmAttributeMapperBase;\r
\r
ZoologicalName zooName = ZoologicalName.NewInstance(rank);\r
String nameTitleCache = taxonName;\r
-// zooName.setId(taxonId);\r
+ \r
+ // set local name cache\r
+ \r
zooName.setNameCache(taxonName);\r
- StringBuilder nameTitleCacheBuilder = new StringBuilder(taxonName);\r
- if (year != 0) {\r
- nameTitleCacheBuilder.append(" ");\r
- if (parenthesis == P_PARENTHESIS) {\r
- nameTitleCacheBuilder.append("(");\r
- }\r
- nameTitleCacheBuilder.append(autName);\r
- nameTitleCacheBuilder.append(" ");\r
- nameTitleCacheBuilder.append(year);\r
- if (parenthesis == P_PARENTHESIS) {\r
- nameTitleCacheBuilder.append(")");\r
- }\r
- }\r
- nameTitleCache = nameTitleCacheBuilder.toString();\r
- zooName.setTitleCache(nameTitleCache);\r
- zooName.setFullTitleCache(nameTitleCache); // FIXME: reference, NC status\r
+ \r
+// StringBuilder nameTitleCacheBuilder = new StringBuilder(taxonName);\r
+// if (year != 0) { // TODO: What do do with authors like xp, xf, etc?\r
+// nameTitleCacheBuilder.append(" ");\r
+// if (parenthesis == P_PARENTHESIS) {\r
+// nameTitleCacheBuilder.append("(");\r
+// }\r
+// nameTitleCacheBuilder.append(autName);\r
+// nameTitleCacheBuilder.append(" ");\r
+// nameTitleCacheBuilder.append(year);\r
+// if (parenthesis == P_PARENTHESIS) {\r
+// nameTitleCacheBuilder.append(")");\r
+// }\r
+// }\r
+// nameTitleCache = nameTitleCacheBuilder.toString();\r
+// zooName.setTitleCache(nameTitleCache);\r
+// zooName.setFullTitleCache(nameTitleCache); // FIXME: reference, NC status\r
\r
TaxonBase<?> taxonBase;\r
FaunaEuropaeaTaxon fauEuTaxon = new FaunaEuropaeaTaxon();\r
}\r
\r
taxonBase.setUuid(taxonBaseUuid);\r
-// taxonBase.setId(taxonId);\r
- taxonBase.setTitleCache(taxonName);\r
+ \r
+ // set local title cache\r
+ \r
+// taxonBase.setTitleCache(nameTitleCache);\r
\r
fauEuTaxon.setUuid(taxonBaseUuid);\r
fauEuTaxon.setParentId(parentId);\r
fauEuTaxon.setId(taxonId);\r
fauEuTaxon.setRankId(rankId);\r
+ fauEuTaxon.setYear(year);\r
+ fauEuTaxon.setAuthor(autName);\r
if (parenthesis == P_PARENTHESIS) {\r
fauEuTaxon.setParenthesis(true);\r
} else {\r
}\r
return success; \r
}\r
- \r
\r
- /* Concat taxon name */\r
+ \r
+ /* Build name title cache */\r
+ private String buildNameTitleCache(String nameString, FaunaEuropaeaTaxon fauEuTaxon) {\r
+ \r
+ StringBuilder titleCacheStringBuilder = new StringBuilder(nameString);\r
+ int year = fauEuTaxon.getYear();\r
+ if (year != 0) { // TODO: What do do with authors like xp, xf, etc?\r
+ titleCacheStringBuilder.append(" ");\r
+ if (fauEuTaxon.isParenthesis() == true) {\r
+ titleCacheStringBuilder.append("(");\r
+ }\r
+ titleCacheStringBuilder.append(fauEuTaxon.getAuthor());\r
+ titleCacheStringBuilder.append(" ");\r
+ titleCacheStringBuilder.append(year);\r
+ if (fauEuTaxon.isParenthesis() == true) {\r
+ titleCacheStringBuilder.append(")");\r
+ }\r
+ }\r
+ return titleCacheStringBuilder.toString();\r
+ }\r
\r
+ \r
+ /* Build taxon name */\r
private String buildTaxonName(FaunaEuropaeaTaxon fauEuTaxon,\r
TaxonBase<?> taxonBase, MapWrapper<TaxonBase> taxonStore) {\r
\r
- String concatenatedName = "";\r
+ String localString = "";\r
+ String parentString = "";\r
+ \r
FaunaEuropaeaTaxon parent = null;\r
TaxonNameBase<?,?> parentName = null;\r
TaxonBase<?> parentTaxonBase = null;\r
String parentNameCache = null;\r
boolean parentComplete = false;\r
- StringBuilder name = new StringBuilder();\r
\r
TaxonNameBase<?,?> taxonName = taxonBase.getName();\r
ZoologicalName zooName = (ZoologicalName)taxonName;\r
- String zooNameCache = null;\r
+ \r
if (zooName != null) {\r
- zooNameCache = zooName.getNameCache();\r
- concatenatedName = zooNameCache;\r
+ localString = zooName.getNameCache();\r
}\r
\r
int rank = fauEuTaxon.getRankId();\r
if (rank > R_GENUS) { \r
+ StringBuilder parentStringBuilder = new StringBuilder();\r
if(logger.isDebugEnabled()) { \r
- logger.debug("Taxon name: (rank = " + rank + ") " + zooNameCache); \r
+ logger.debug("Local taxon name: (rank = " + rank + ") " + localString); \r
}\r
\r
- // The scientific name in FaunaEuropaeTaxon is set only once it has been built completely,\r
+ // The scientific name in FaunaEuropaeaTaxon is set only once it has been built completely,\r
// including parent(s) parts.\r
\r
int parentId = fauEuTaxon.getParentId();\r
parent.getId() + ") is null");\r
} \r
if (parent.getRankId() == R_SUBGENUS) {\r
- name.append("(");\r
+ parentStringBuilder.append("(");\r
}\r
- name.append(parentNameCache);\r
+ parentStringBuilder.append(parentNameCache);\r
if (parent.getRankId() == R_SUBGENUS) {\r
- name.append(")");\r
+ parentStringBuilder.append(")");\r
}\r
- name.append(" ");\r
- name.append(((ZoologicalName)taxonName).getNameCache());\r
- concatenatedName = name.toString();\r
- logger.info("Parent name part built: " + concatenatedName);\r
+// parentStringBuilder.append(" ");\r
+// parentStringBuilder.append(((ZoologicalName)taxonName).getNameCache());\r
+ parentString = parentStringBuilder.toString();\r
+ logger.info("Parent name part built: " + parentString);\r
} else {\r
parentComplete = true;\r
- concatenatedName = parent.getScientificName();\r
- logger.info("Parent name is complete: " + concatenatedName);\r
+ parentString = parent.getScientificName();\r
+ logger.info("Parent name is complete: " + parentString);\r
}\r
} else {\r
- logger.warn("Parent uuid of " + zooNameCache + " is null");\r
+ logger.warn("Parent uuid of " + localString + " is null");\r
}\r
} else {\r
- logger.warn("Parent of " + zooNameCache + " is null");\r
+ logger.warn("Parent of " + localString + " is null");\r
}\r
if (parent != null && parent.getRankId() > R_GENUS && parentComplete == false) { \r
- concatenatedName = buildTaxonName(parent, parentTaxonBase, taxonStore);\r
+ parentString = buildTaxonName(parent, parentTaxonBase, taxonStore);\r
}\r
}\r
- zooName.setNameCache(concatenatedName);\r
- fauEuTaxon.setScientificName(concatenatedName);\r
- return concatenatedName;\r
- }\r
- \r
- \r
- private boolean updateProperties(FaunaEuropaeaImportConfigurator fauEuConfig,\r
- TaxonBase<?> taxonBase, MapWrapper<TaxonBase> taxonStore,\r
- FaunaEuropaeaTaxon fauEuTaxon, Map<Integer, FaunaEuropaeaTaxon> fauEuTaxonMap) {\r
- \r
- boolean success = true;\r
+ StringBuilder concatStringBuilder = new StringBuilder(parentString);\r
+// if (!concatStringBuilder.equals("")) { concatStringBuilder.append(" "); }\r
+ concatStringBuilder.append(" ");\r
+ concatStringBuilder.append(localString);\r
+ String concatString = concatStringBuilder.toString();\r
+ concatString = (String) CdmUtils.removeDuplicateWhitespace(concatString.trim());\r
\r
- TaxonNameBase<?,?> taxonName = taxonBase.getName();\r
- ZoologicalName zooName = (ZoologicalName)taxonName;\r
- String zooNameCache = null;\r
- if (zooName != null) {\r
- zooNameCache = zooName.getNameCache();\r
- }\r
+ zooName.setNameCache(concatString);\r
+ String titleCache = buildNameTitleCache(concatString, fauEuTaxon);\r
+ zooName.setTitleCache(titleCache);\r
+ zooName.setFullTitleCache(titleCache); // TODO: Add reference, NC status\r
\r
- if (fauEuTaxon.getRankId() >= R_GENUS) { \r
- if(logger.isDebugEnabled()) { logger.debug("Taxon name: " + zooNameCache); }\r
-\r
- // Set taxonomic parent\r
- // Concat taxon name\r
-\r
- int parentId = fauEuTaxon.getParentId();\r
- FaunaEuropaeaTaxon parent = fauEuTaxonMap.get(parentId);\r
- if (parent != null) {\r
- UUID parentUuid = parent.getUuid();\r
- if (parentUuid != null) { \r
- TaxonBase<?> parentTaxonBase = taxonStore.get(parentId);\r
- String parentNameCache = null;\r
- if (parentTaxonBase != null) {\r
- TaxonNameBase<?,?> parentName = parentTaxonBase.getName();\r
- if(parentName != null) {\r
- parentNameCache = ((ZoologicalName)parentName).getNameCache();\r
- } else {\r
- logger.warn("Parent taxon name of taxon (uuid= " + parentUuid.toString() + "), id = " +\r
- parent.getId() + ") is null");\r
- }\r
- } else {\r
- logger.warn("Parent taxon (uuid= " + parentUuid.toString() + "), id = " +\r
- parent.getId() + ") is null");\r
- } \r
- StringBuilder name = new StringBuilder();\r
- if (parent.getRankId() == R_SUBGENUS) {\r
- name.append("(");\r
- }\r
- name.append(parentNameCache);\r
- if (parent.getRankId() == R_SUBGENUS) {\r
- name.append(")");\r
- }\r
- name.append(" ");\r
- name.append(((ZoologicalName)taxonName).getNameCache());\r
- String concatenatedName = name.toString();\r
- zooName.setNameCache(concatenatedName);\r
- zooName.setTitleCache(concatenatedName);\r
- zooName.setFullTitleCache(concatenatedName); // FIXME: reference, NC status\r
- name.append(" sec. ");\r
- name.append(fauEuConfig.getSourceReference().getTitleCache());\r
- taxonBase.setTitleCache(name.toString()); // FIXME: Add author\r
- taxonBase.setSec(fauEuConfig.getSourceReference());\r
- \r
- if (taxonBase instanceof Taxon && parentTaxonBase instanceof Taxon) {\r
- ((Taxon)parentTaxonBase).addTaxonomicChild((Taxon)taxonBase, null, null);\r
- // TODO: citation, microcitation\r
- }\r
- } else {\r
- logger.warn("Parent uuid of " + zooNameCache + " is null");\r
- }\r
- } else {\r
- logger.warn("Parent of " + zooNameCache + " is null");\r
- }\r
- }\r
- return success;\r
+ fauEuTaxon.setScientificName(concatString);\r
+ return concatString;\r
}\r
\r
+ \r
private boolean saveTaxa(Map<String, MapWrapper<? extends CdmBase>> stores) {\r
\r
// MapWrapper<TaxonNameBase<?,?>> taxonNameStore = (MapWrapper<TaxonNameBase<?,?>>)stores.get(ICdmIO.TAXONNAME_STORE);\r