merge-update from trunk
[cdmlib.git] / cdmlib-io / src / main / java / eu / etaxonomy / cdm / io / excel / taxa / NormalExplicitImport.java
index d6b2322cde147a104cc823131def68f31ffd4655..de600edd042ba344065200788a5efd75ecd34e1c 100644 (file)
@@ -100,7 +100,10 @@ public class NormalExplicitImport extends TaxonExcelImporterBase {
                        \r
                } else if(key.equalsIgnoreCase(AUTHOR_COLUMN)) {\r
                        normalExplicitRow.setAuthor(value);\r
-                       \r
+               \r
+               } else if(key.equalsIgnoreCase(REFERENCE_COLUMN)) {\r
+                       normalExplicitRow.setReference(value);\r
+               \r
                } else if(key.equalsIgnoreCase(NAME_STATUS_COLUMN)) {\r
                        normalExplicitRow.setNameStatus(value);\r
                        \r
@@ -151,6 +154,7 @@ public class NormalExplicitImport extends TaxonExcelImporterBase {
                String rankStr = taxonDataHolder.getRank();\r
                String taxonNameStr = taxonDataHolder.getScientificName();\r
                String authorStr = taxonDataHolder.getAuthor();\r
+               String referenceStr = taxonDataHolder.getReference();\r
                String nameStatus = taxonDataHolder.getNameStatus();\r
                Integer id = taxonDataHolder.getId();\r
                UUID cdmUuid = taxonDataHolder.getCdmUuid();\r
@@ -174,7 +178,7 @@ public class NormalExplicitImport extends TaxonExcelImporterBase {
                                }\r
                                \r
                    //taxon\r
-                               taxonBase = createTaxon(state, rank, taxonNameStr, authorStr, nameStatus);\r
+                               taxonBase = createTaxon(state, rank, taxonNameStr, authorStr, referenceStr, nameStatus);\r
                        }else{\r
                                return;\r
                        }\r
@@ -217,7 +221,7 @@ public class NormalExplicitImport extends TaxonExcelImporterBase {
         */\r
        @Override\r
     protected void secondPass(TaxonExcelImportState state) {\r
-               System.out.println(state.getCurrentLine());\r
+               if (logger.isDebugEnabled()){logger.debug(state.getCurrentLine());}\r
                try {\r
                        NormalExplicitRow taxonDataHolder = state.getCurrentRow();\r
                        String taxonNameStr = taxonDataHolder.getScientificName();\r
@@ -236,7 +240,7 @@ public class NormalExplicitImport extends TaxonExcelImporterBase {
                        }else{\r
                                //TODO error handling for class cast\r
                                Taxon parentTaxon = CdmBase.deproxy(state.getTaxonBase(parentId), Taxon.class);\r
-                               if (CdmUtils.isNotEmpty(taxonNameStr)) {\r
+                               if (StringUtils.isNotBlank(taxonNameStr)) {\r
                                        TaxonBase<?> taxonBase = state.getTaxonBase(childId);\r
                                        nameUsedInSource = taxonBase.getName();\r
                                        nameStatus = CdmUtils.Nz(nameStatus).trim().toLowerCase();\r
@@ -248,10 +252,10 @@ public class NormalExplicitImport extends TaxonExcelImporterBase {
                                                        if (parentTaxon != null) {\r
                                                                //Taxon taxon = (Taxon)state.getTaxonBase(childId);\r
                                                                \r
-                                                               Reference<?> citation = state.getConfig().getSourceReference();\r
+                                                               Reference<?> sourceRef = state.getConfig().getSourceReference();\r
                                                                String microCitation = null;\r
                                                                Taxon childTaxon = taxon;\r
-                                                               makeParent(state, parentTaxon, childTaxon, citation, microCitation);\r
+                                                               makeParent(state, parentTaxon, childTaxon, sourceRef, microCitation);\r
                                                                getTaxonService().saveOrUpdate(parentTaxon);\r
                                                        } else {\r
                                                                String message = "Taxonomic parent not found for " + taxonNameStr;\r
@@ -293,12 +297,12 @@ public class NormalExplicitImport extends TaxonExcelImporterBase {
                                }\r
                        }\r
  \r
-                       if (acceptedTaxon == null && (CdmUtils.isNotEmpty(commonNameStr) ||taxonDataHolder.getFeatures().size() > 0 )){\r
+                       if (acceptedTaxon == null && (StringUtils.isNotBlank(commonNameStr) ||taxonDataHolder.getFeatures().size() > 0 )){\r
                                String message = "Accepted taxon could not be found. Can't add additional data (common names, descriptive data, ...) to taxon";\r
                                fireWarningEvent(message, state, 6);\r
                        }else{  \r
                                //common names\r
-                               if (CdmUtils.isNotEmpty(commonNameStr)){                        // add common name to taxon\r
+                               if (StringUtils.isNotBlank(commonNameStr)){                     // add common name to taxon\r
                                        handleCommonName(state, taxonNameStr, commonNameStr, acceptedTaxon);\r
                                }\r
                                \r
@@ -314,7 +318,7 @@ public class NormalExplicitImport extends TaxonExcelImporterBase {
                                                td.addElement(mediaHolder);\r
                                        }\r
                                        try {\r
-                                               Media media = getImageMedia(imageUrl, READ_MEDIA_DATA, false);\r
+                                               Media media = getImageMedia(imageUrl, READ_MEDIA_DATA);\r
                                                mediaHolder.addMedia(media);\r
                                        } catch (MalformedURLException e) {\r
                                                logger.warn("Can't add media: " + e.getMessage());\r
@@ -382,7 +386,7 @@ public class NormalExplicitImport extends TaxonExcelImporterBase {
                                                String value = sourceMap.get(type);\r
                                                if (type.equals(SourceType.Author)){\r
                                                        TeamOrPersonBase<?> author = getAuthorAccordingToConfig(value, state);\r
-                                                       ref.setAuthorTeam(author);\r
+                                                       ref.setAuthorship(author);\r
                                                }else if (type.equals(SourceType.Title)) {\r
                                                        ref.setTitle(value);\r
                                                }else if (type.equals(SourceType.Year)) {\r
@@ -429,15 +433,15 @@ public class NormalExplicitImport extends TaxonExcelImporterBase {
        private Map<String, UUID> authorMapping = new HashMap<String, UUID>();\r
        private Map<UUID, TeamOrPersonBase> authorStore = new HashMap<UUID, TeamOrPersonBase>();\r
        \r
-       private TeamOrPersonBase getAuthorAccordingToConfig(String value, TaxonExcelImportState state) {\r
-               TeamOrPersonBase result = null;\r
+       private TeamOrPersonBase<?> getAuthorAccordingToConfig(String value, TaxonExcelImportState state) {\r
+               TeamOrPersonBase<?> result = null;\r
                UUID authorUuid = authorMapping.get(value);\r
                if (authorUuid != null){\r
                        result = authorStore.get(authorUuid);\r
                }\r
                if (result == null){\r
                        //TODO parsing\r
-                       TeamOrPersonBase author = Team.NewInstance();\r
+                       TeamOrPersonBase<?> author = Team.NewInstance();\r
                        author.setTitleCache(value, true);\r
                        result = author; \r
                        authorStore.put(result.getUuid(), result);\r
@@ -497,10 +501,11 @@ public class NormalExplicitImport extends TaxonExcelImporterBase {
         * @param taxonNameStr\r
         * @param authorStr\r
         * @param nameStatus\r
+        * @param nameStatus2 \r
         * @return\r
         */\r
        private TaxonBase createTaxon(TaxonExcelImportState state, Rank rank,\r
-                       String taxonNameStr, String authorStr, String nameStatus) {\r
+                       String taxonNameStr, String authorStr, String reference, String nameStatus) {\r
                // Create the taxon name object depending on the setting of the nomenclatural code \r
                // in the configurator (botanical code, zoological code, etc.) \r
                if (StringUtils.isBlank(taxonNameStr)){\r
@@ -508,7 +513,7 @@ public class NormalExplicitImport extends TaxonExcelImporterBase {
                }\r
                NomenclaturalCode nc = getConfigurator().getNomenclaturalCode();\r
                \r
-               TaxonBase taxonBase = null;\r
+               TaxonBase taxonBase;\r
                \r
                String titleCache = CdmUtils.concat(" ", taxonNameStr, authorStr);\r
                if (! synonymMarkers.contains(nameStatus)  && state.getConfig().isReuseExistingTaxaWhenPossible()){\r
@@ -523,7 +528,7 @@ public class NormalExplicitImport extends TaxonExcelImporterBase {
                if (taxonBase != null){\r
                        logger.info("Matching taxon/synonym found for " + titleCache);\r
                }else {\r
-                       taxonBase = createTaxon(state, rank, taxonNameStr, authorStr, nameStatus, nc);\r
+                       taxonBase = createTaxon(state, rank, taxonNameStr, authorStr, reference, nameStatus, nc);\r
                }\r
                return taxonBase;\r
        }\r
@@ -537,26 +542,29 @@ public class NormalExplicitImport extends TaxonExcelImporterBase {
         * @param taxonNameStr\r
         * @param authorStr\r
         * @param nameStatus\r
+        * @param nameStatus2 \r
         * @param nc\r
         * @return\r
         */\r
        private TaxonBase<?> createTaxon(TaxonExcelImportState state, Rank rank, String taxonNameStr, \r
-                       String authorStr, String nameStatus, NomenclaturalCode nc) {\r
+                       String authorStr, String reference, String nameStatus, NomenclaturalCode nc) {\r
                TaxonBase<?> taxonBase;\r
                NonViralName<?> taxonNameBase = null;\r
                if (nc == NomenclaturalCode.ICVCN){\r
                        logger.warn("ICVCN not yet supported");\r
                        \r
                }else{\r
-                       taxonNameBase =(NonViralName) nc.getNewTaxonNameInstance(rank);\r
+                       taxonNameBase =(NonViralName<?>) nc.getNewTaxonNameInstance(rank);\r
                        //NonViralName nonViralName = (NonViralName)taxonNameBase;\r
                        NonViralNameParserImpl parser = NonViralNameParserImpl.NewInstance();\r
                        taxonNameBase = parser.parseFullName(taxonNameStr, nc, rank);\r
                        \r
-                       taxonNameBase.setNameCache(taxonNameStr);\r
+                       if (! taxonNameBase.getNameCache().equals(taxonNameStr)){\r
+                               taxonNameBase.setNameCache(taxonNameStr, true);\r
+                       }\r
                        \r
                        // Create the author\r
-                       if (CdmUtils.isNotEmpty(authorStr)) {\r
+                       if (StringUtils.isNotBlank(authorStr)) {\r
                                try {\r
                                        parser.parseAuthors(taxonNameBase, authorStr);\r
                                } catch (StringNotParsableException e) {\r
@@ -599,8 +607,8 @@ public class NormalExplicitImport extends TaxonExcelImporterBase {
                }\r
        }\r
 \r
-       private void makeParent(TaxonExcelImportState state, Taxon parentTaxon, Taxon childTaxon, Reference citation, String microCitation){\r
-               Reference sec = state.getConfig().getSourceReference();\r
+       private void makeParent(TaxonExcelImportState state, Taxon parentTaxon, Taxon childTaxon, Reference<?> citation, String microCitation){\r
+               Reference<?> sec = state.getConfig().getSourceReference();\r
                \r
 //             Reference sec = parentTaxon.getSec();\r
                Classification tree = state.getTree(sec);\r