bugfixes for index fungorum
authorAndreas Müller <a.mueller@bgbm.org>
Wed, 14 Mar 2012 15:09:55 +0000 (15:09 +0000)
committerAndreas Müller <a.mueller@bgbm.org>
Wed, 14 Mar 2012 15:09:55 +0000 (15:09 +0000)
cdm-pesi/src/main/java/eu/etaxonomy/cdm/io/pesi/indexFungorum/IndexFungorumGeneraImport.java
cdm-pesi/src/main/java/eu/etaxonomy/cdm/io/pesi/indexFungorum/IndexFungorumHigherClassificationImport.java
cdm-pesi/src/main/java/eu/etaxonomy/cdm/io/pesi/indexFungorum/IndexFungorumImportBase.java
cdm-pesi/src/main/java/eu/etaxonomy/cdm/io/pesi/indexFungorum/IndexFungorumSpeciesImport.java
cdm-pesi/src/main/java/eu/etaxonomy/cdm/io/pesi/out/PesiTaxonExport.java
cdm-pesi/src/main/java/eu/etaxonomy/cdm/io/pesi/out/PesiTransformer.java

index 1579b4888dbe5337ddc8c7f1d1340465c8b329c1..c9de1bce3fb9c66b671eb75adb40caaaaa8b192b 100644 (file)
@@ -20,7 +20,6 @@ import java.util.Set;
 import org.apache.commons.lang.StringUtils;\r
 import org.apache.log4j.Logger;\r
 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.common.ResultSetPartitioner;\r
@@ -145,7 +144,7 @@ public class IndexFungorumGeneraImport  extends IndexFungorumImportBase {
                                                parentName = rs.getString("SubphylumName");\r
                                                if (parentName.equalsIgnoreCase(INCERTAE_SEDIS)){\r
                                                        parentName = rs.getString("PhylumName");\r
-                                                       if (parentName.equalsIgnoreCase(INCERTAE_SEDIS)){\r
+                                                       if (parentName.equalsIgnoreCase(INCERTAE_SEDIS) || parentName.equalsIgnoreCase(FOSSIL_FUNGI) ){\r
                                                                parentName = rs.getString("KingdomName");\r
                                                        }\r
                                                }\r
index d85130c85def10ea9501fe781e79fb9ff4600187..7cdf83580270b44adc13fb8afea18d2acd8a628f 100644 (file)
@@ -226,18 +226,19 @@ public class IndexFungorumHigherClassificationImport  extends IndexFungorumImpor
 \r
 \r
        private boolean isIncertisSedis(String uninomial) {\r
-               return  uninomial.equalsIgnoreCase(INCERTAE_SEDIS);\r
+               return  uninomial.equalsIgnoreCase(INCERTAE_SEDIS) || uninomial.equalsIgnoreCase(FOSSIL_FUNGI);\r
        }\r
 \r
 \r
        private boolean isNewTaxon(String uninomial, String lastUninomial) {\r
                boolean result =  !uninomial.equalsIgnoreCase(lastUninomial);\r
                result |= lastUninomial.equalsIgnoreCase(INCERTAE_SEDIS);\r
+               result |= lastUninomial.equalsIgnoreCase(FOSSIL_FUNGI);\r
                return result;\r
        }\r
 \r
        private Taxon makeTaxon(IndexFungorumImportState state, String uninomial, Rank rank) {\r
-               if (uninomial.equalsIgnoreCase(INCERTAE_SEDIS)){\r
+               if (uninomial.equalsIgnoreCase(INCERTAE_SEDIS) || uninomial.equalsIgnoreCase(FOSSIL_FUNGI)){\r
                        return null;\r
                }\r
                Taxon taxon = state.getRelatedObject(IndexFungorumSupraGeneraImport.NAMESPACE_SUPRAGENERIC_NAMES, uninomial, Taxon.class);\r
index 5bffc03e2491fc632a8b8aa84cdc5233474962dc..f8b31fd16c2f4ae07ddecb7dfeb91be3627ea7a8 100644 (file)
@@ -33,6 +33,7 @@ import eu.etaxonomy.cdm.io.common.mapping.DbImportMapping;
 import eu.etaxonomy.cdm.io.common.mapping.out.DbLastActionMapper;\r
 import eu.etaxonomy.cdm.io.pesi.out.PesiTransformer;\r
 import eu.etaxonomy.cdm.model.agent.Team;\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.common.LSID;\r
@@ -63,6 +64,8 @@ public abstract class IndexFungorumImportBase extends CdmImportBase<IndexFungoru
        \r
        \r
        protected static final String INCERTAE_SEDIS = "Incertae sedis";\r
+       protected static final String FOSSIL_FUNGI = "Fossil Fungi";\r
+\r
        protected static final String SOURCE_REFERENCE = "SOURCE_REFERENCE";\r
 \r
 \r
@@ -293,8 +296,11 @@ public abstract class IndexFungorumImportBase extends CdmImportBase<IndexFungoru
                }\r
                if (pubAuthor != null){\r
                        Reference<?> inRef = ReferenceFactory.newGeneric();\r
+                       inRef.setAuthorTeam(pubAuthor);\r
                        ref.setInReference(inRef);\r
                        hasInReference = true;\r
+               }else{\r
+                       ref.setAuthorTeam(CdmBase.deproxy(name.getCombinationAuthorTeam(), TeamOrPersonBase.class));\r
                }\r
                //location\r
                String location = rs.getString("pubIMIAbbrLoc");\r
@@ -329,16 +335,16 @@ public abstract class IndexFungorumImportBase extends CdmImportBase<IndexFungoru
                }\r
                //year\r
                String yearOfPubl = rs.getString("YEAR_OF_PUBLICATION");\r
-               \r
+               String year = null;\r
                String yearOnPubl = rs.getString("YEAR_ON_PUBLICATION");\r
-               if (StringUtils.isNotEmpty(yearOfPubl)){\r
-                       String year = yearOfPubl.trim();\r
-                       if (StringUtils.isNotBlank(yearOnPubl)){\r
-                               year = year + "[" + yearOnPubl + "]";\r
-                       }\r
+               if (StringUtils.isNotBlank(yearOfPubl)){\r
+                       year = yearOfPubl.trim();\r
+               }\r
+               if (StringUtils.isNotBlank(yearOnPubl)){\r
+                       year = CdmUtils.concat(" ", year, "[" + yearOnPubl + "]");\r
+               }\r
+               if (year == null){\r
                        ref.setDatePublished(TimePeriod.parseString(year));\r
-               }else if (StringUtils.isNotEmpty(yearOnPubl)){\r
-                       logger.warn("'YEAR_ON_PUBLICATION' is not blank for blank YEAR_ON_PUBLICATION. This is not yet handled by import.");\r
                }\r
                \r
                name.setNomenclaturalReference(ref);\r
@@ -358,16 +364,18 @@ public abstract class IndexFungorumImportBase extends CdmImportBase<IndexFungoru
                                "has no last action", "No last action information available", "no last action");\r
                taxon.addMarker(Marker.NewInstance(hasNoLastAction, true));\r
                //LSID\r
-               makeLSID(taxon, strId);\r
+               makeLSID(taxon, strId, state);\r
        }\r
 \r
-       private void makeLSID(Taxon taxon, String strId) {\r
+       private void makeLSID(Taxon taxon, String strId, IndexFungorumImportState state) {\r
                try {\r
-                       if (strId != null){\r
+                       if (StringUtils.isNotBlank(strId) && ! "null".equalsIgnoreCase(strId)){\r
                                LSID lsid = new LSID(IndexFungorumTransformer.LSID_PREFIX + strId);\r
                                taxon.setLsid(lsid);\r
                        }else{\r
                                logger.warn("No ID available for taxon " + taxon.getTitleCache() + ", " +  taxon.getUuid());\r
+                               MarkerType missingGUID = getMarkerType(state, PesiTransformer.uuidMarkerGuidIsMissing, "GUID is missing", "GUID is missing", null);\r
+                               taxon.addMarker(Marker.NewInstance(missingGUID, true));\r
                        }\r
                } catch (MalformedLSIDException e) {\r
                        logger.error(e.getMessage());\r
index d228c30496cf629e529d0c2f9ba589e7a123ee27..4bd740d90a2aaf473645675edd187ff583f2b7aa 100644 (file)
@@ -22,8 +22,12 @@ import org.springframework.stereotype.Component;
 \r
 import eu.etaxonomy.cdm.common.CdmUtils;\r
 import eu.etaxonomy.cdm.io.common.ResultSetPartitioner;\r
+import eu.etaxonomy.cdm.io.pesi.erms.ErmsTransformer;\r
 import eu.etaxonomy.cdm.io.pesi.out.PesiTransformer;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.common.Extension;\r
+import eu.etaxonomy.cdm.model.common.ExtensionType;\r
+import eu.etaxonomy.cdm.model.common.MarkerType;\r
 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
 import eu.etaxonomy.cdm.model.name.NonViralName;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
@@ -68,9 +72,10 @@ public class IndexFungorumSpeciesImport  extends IndexFungorumImportBase {
        @Override\r
        protected String getRecordQuery(IndexFungorumImportConfigurator config) {\r
                String strRecordQuery = \r
-                               " SELECT DISTINCT distribution.PreferredNameFDCnumber, species.* " +\r
+                               " SELECT DISTINCT distribution.PreferredNameFDCnumber, species.* , cl.PhylumName" +\r
                                " FROM tblPESIfungi AS distribution RIGHT OUTER JOIN  dbo.[tblPESIfungi-IFdata] AS species ON distribution.PreferredNameIFnumber = species.RECORD_NUMBER " +\r
-                       " WHERE ( species.RECORD_NUMBER IN (" + ID_LIST_TOKEN + ") )" +\r
+                                       " LEFT OUTER JOIN [tblPESIfungi-Classification] cl ON species.PreferredName   = cl.PreferredName " +\r
+                               " WHERE ( species.RECORD_NUMBER IN (" + ID_LIST_TOKEN + ") )" +\r
                        "";\r
                return strRecordQuery;\r
        }\r
@@ -86,10 +91,10 @@ public class IndexFungorumSpeciesImport  extends IndexFungorumImportBase {
                try {\r
                        while (rs.next()){\r
 \r
-                               //TODO\r
-                               //DisplayName, NomRefCache\r
+                               //DisplayName, NomRefCache -> don't use, created by Marc\r
 \r
                                Integer id = (Integer)rs.getObject("RECORD_NUMBER");\r
+                               String phylumName = rs.getString("PhylumName");\r
                                \r
                                String preferredName = rs.getString("PreferredName");\r
                                if (StringUtils.isBlank(preferredName)){\r
@@ -110,6 +115,12 @@ public class IndexFungorumSpeciesImport  extends IndexFungorumImportBase {
                                //source\r
                                makeSource(state, taxon, id, NAMESPACE_SPECIES );\r
                                \r
+                               //fossil\r
+                               if (FOSSIL_FUNGI.equalsIgnoreCase(phylumName)){\r
+                                       ExtensionType fossilExtType = getExtensionType(state, ErmsTransformer.uuidFossilStatus, "fossil status", "fossil status", "fos. stat.");\r
+                                       Extension.NewInstance(taxon, PesiTransformer.STR_FOSSIL_ONLY, fossilExtType); \r
+                               }\r
+                               //save\r
                                getTaxonService().saveOrUpdate(taxon);\r
                        }\r
 \r
index cccff2e156887c7ff24545f8063553ec0ec52a10..283d8d481f0302ce93af3b327c60c6c3bc3b0cd3 100644 (file)
@@ -1882,6 +1882,8 @@ public class PesiTaxonExport extends PesiExportBase {
        private static String getGUID(TaxonBase<?> taxon) {\r
                if (taxon.getLsid() != null ){\r
                        return taxon.getLsid().getLsid();\r
+               }else if (taxon.hasMarker(PesiTransformer.uuidMarkerGuidIsMissing, true)){\r
+                       return null;\r
                }else{\r
                        return taxon.getUuid().toString();\r
                }\r
index 45eac1327a09f39a36ec01a7d73fa015edea5894..ab6eea83793e000d9e6072e94f35b282ed88e6b0 100644 (file)
@@ -90,6 +90,9 @@ public final class PesiTransformer extends ExportTransformerBase implements IExp
        public static int QUALITY_STATUS_CHECKED_EDITOR = 3;\r
        public static int QUALITY_STATUS_EDITED_BY_DBMT = 4;\r
        \r
+       // marker type\r
+       public static final UUID uuidMarkerGuidIsMissing = UUID.fromString("24e70843-05e2-44db-954b-84df0d23ea20");\r
+//     public static final UUID uuidMarkerFossil = UUID.fromString("761ce108-031a-4e07-b444-f8d757070312");\r
        \r
        \r
        //extension type uuids\r