minor fixes in consistency with datawarehouse export
[cdmlib.git] / cdmlib-io / src / main / java / eu / etaxonomy / cdm / io / faunaEuropaea / FaunaEuropaeaTaxonNameImport.java
index a2aa82463c8b7e71668120197f207838e40df580..4cd79ab9020b7da08f0c35f6bea46746eb69000b 100644 (file)
@@ -39,6 +39,7 @@ import eu.etaxonomy.cdm.io.common.MapWrapper;
 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
@@ -441,12 +442,16 @@ public class FaunaEuropaeaTaxonNameImport extends FaunaEuropaeaImportBase  {
                        \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
@@ -780,7 +785,7 @@ public class FaunaEuropaeaTaxonNameImport extends FaunaEuropaeaImportBase  {
 \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
@@ -791,7 +796,7 @@ public class FaunaEuropaeaTaxonNameImport extends FaunaEuropaeaImportBase  {
                }else{\r
                        originalGenusString = fauEuTaxon.getParentName();\r
                }\r
-               if (useOriginalGenus && originalGenusString != null) {\r
+               if (originalGenusString != null) {\r
                        originalGenus = new StringBuilder(originalGenusString);\r
                }\r
                \r
@@ -841,7 +846,7 @@ public class FaunaEuropaeaTaxonNameImport extends FaunaEuropaeaImportBase  {
                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
@@ -849,19 +854,19 @@ public class FaunaEuropaeaTaxonNameImport extends FaunaEuropaeaImportBase  {
                \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
@@ -889,4 +894,17 @@ public class FaunaEuropaeaTaxonNameImport extends FaunaEuropaeaImportBase  {
                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