import eu.etaxonomy.cdm.io.common.Source;\r
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;\r
import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.common.IdentifiableSource;\r
import eu.etaxonomy.cdm.model.name.Rank;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
\r
zooName.setOriginalPublicationYear(zooName.getPublicationYear());\r
basionym.setPublicationYear(zooName.getPublicationYear());\r
+\r
+ String originalGenusIdString = "" + fauEuTaxon.getOriginalGenusId();\r
+ IdentifiableSource basionymSource = IdentifiableSource.NewInstance(originalGenusIdString, "originalGenusId");\r
+ basionym.addSource(basionymSource);\r
\r
zooName.addBasionym(basionym, fauEuConfig.getSourceReference(), null, null);\r
zooName.setBasionymAuthorTeam(zooName.getCombinationAuthorTeam());\r
zooName.setCombinationAuthorTeam(null);\r
zooName.setPublicationYear(null);\r
- zooName.generateTitle();\r
+ zooName.setTitleCache(null); // This should (re)generate the titleCache automagically\r
if (logger.isDebugEnabled()) {\r
logger.debug("Basionym created (" + fauEuTaxon.getId() + ")");\r
}\r
\r
int rank = fauEuTaxon.getRankId();\r
\r
- String originalGenusString; \r
+ String originalGenusString = null;\r
//rank is subgenus and the taxon is accepted -> the genusepithet is the parentName\r
if (rank == R_SUBGENUS && fauEuTaxon.isValid()){\r
originalGenusString = fauEuTaxon.getParentName();\r
}else{\r
originalGenusString = fauEuTaxon.getParentName();\r
}\r
- if (useOriginalGenus && originalGenusString != null) {\r
+ if (originalGenusString != null) {\r
originalGenus = new StringBuilder(originalGenusString);\r
}\r
\r
ZoologicalName zooName = (ZoologicalName)taxonName;\r
\r
if (!genusOrUninomial.equals("")) {\r
- zooName.setGenusOrUninomial(genusOrUninomial);\r
+ zooName.setGenusOrUninomial(emptyToNull(genusOrUninomial));\r
if (logger.isDebugEnabled()) { \r
logger.debug("genusOrUninomial: " + genusOrUninomial); \r
}\r
\r
//if ((!infraGenericEpithet.equals("") && fauEuTaxon.isParenthesis()) || (!infraGenericEpithet.equals("") && fauEuTaxon.)) {\r
if (fauEuTaxon.getParentRankId() == R_SUBGENUS || (fauEuTaxon.getRankId() == R_SUBGENUS)){\r
- zooName.setInfraGenericEpithet(infraGenericEpithet);\r
+ zooName.setInfraGenericEpithet(emptyToNull(infraGenericEpithet));\r
if (logger.isDebugEnabled()) { \r
logger.debug("infraGenericEpithet: " + infraGenericEpithet); \r
}\r
}\r
if ((fauEuTaxon.getRankId() == R_SPECIES || fauEuTaxon.getRankId() == R_SUBSPECIES)) {\r
- zooName.setSpecificEpithet(specificEpithet);\r
+ zooName.setSpecificEpithet(emptyToNull(specificEpithet));\r
if (logger.isDebugEnabled()) { \r
logger.debug("specificEpithet: " + specificEpithet); \r
}\r
}\r
if (fauEuTaxon.getRankId() == R_SUBSPECIES) {\r
- zooName.setInfraSpecificEpithet(infraSpecificEpithet);\r
+ zooName.setInfraSpecificEpithet(emptyToNull(infraSpecificEpithet));\r
if (logger.isDebugEnabled()) { \r
logger.debug("infraSpecificEpithet: " + infraSpecificEpithet); \r
}\r
return result;\r
}\r
\r
+ /**\r
+ * Ensures that empty strings are translated to null.\r
+ * @param genusOrUninomial\r
+ * @return\r
+ */\r
+ private String emptyToNull(String text) {\r
+ if (CdmUtils.isEmpty(text)) {\r
+ return null;\r
+ } else {\r
+ return text;\r
+ }\r
+ }\r
+\r
}\r