Fauna Europaea Import
authora.babadshanjan <a.babadshanjan@localhost>
Thu, 11 Jun 2009 13:56:59 +0000 (13:56 +0000)
committera.babadshanjan <a.babadshanjan@localhost>
Thu, 11 Jun 2009 13:56:59 +0000 (13:56 +0000)
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/faunaEuropaea/FaunaEuropaeaTaxon.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/faunaEuropaea/FaunaEuropaeaTaxonImport.java

index bd405375a00ec4a638db571f445b54e72205a4df..ff0bf45e5d2b4ed555951b07fcae4743c77797f0 100644 (file)
@@ -24,6 +24,8 @@ public class FaunaEuropaeaTaxon {
        private int parentId;\r
        private int rankId;\r
        private String scientificName;\r
+       private int year;\r
+       private String author;\r
        private boolean parenthesis = false;\r
        \r
        /**\r
@@ -136,4 +138,32 @@ public class FaunaEuropaeaTaxon {
                this.nameUuid = nameUuid;\r
        }\r
 \r
+       /**\r
+        * @return the year\r
+        */\r
+       public int getYear() {\r
+               return year;\r
+       }\r
+\r
+       /**\r
+        * @param year the year to set\r
+        */\r
+       public void setYear(int year) {\r
+               this.year = year;\r
+       }\r
+\r
+       /**\r
+        * @return the author\r
+        */\r
+       public String getAuthor() {\r
+               return author;\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
index 86b951efde803d7c7657b9beb8f5f69eacf67a4b..c2f98425deba87032d49185309d9f99688d0f83f 100644 (file)
@@ -27,6 +27,7 @@ import org.apache.log4j.Logger;
 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
@@ -197,24 +198,27 @@ public class FaunaEuropaeaTaxonImport extends FaunaEuropaeaImportBase  {
 \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
@@ -235,13 +239,17 @@ public class FaunaEuropaeaTaxonImport extends FaunaEuropaeaImportBase  {
                                        }\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
@@ -307,36 +315,57 @@ public class FaunaEuropaeaTaxonImport extends FaunaEuropaeaImportBase  {
                }\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
@@ -360,108 +389,48 @@ public class FaunaEuropaeaTaxonImport extends FaunaEuropaeaImportBase  {
                                                                        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