ref #10224 implement Kew Nyctaginaceae import
authorAndreas Müller <a.mueller@bgbm.org>
Sun, 15 Jan 2023 20:58:36 +0000 (21:58 +0100)
committerAndreas Müller <a.mueller@bgbm.org>
Sun, 15 Jan 2023 20:58:36 +0000 (21:58 +0100)
app-import/src/main/java/eu/etaxonomy/cdm/app/caryophyllales/KewNyctaginaceaeActivator.java [new file with mode: 0644]
app-import/src/main/java/eu/etaxonomy/cdm/io/caryo/KewExcelTaxonImport.java
app-import/src/main/java/eu/etaxonomy/cdm/io/caryo/KewExcelTaxonImportConfigurator.java

diff --git a/app-import/src/main/java/eu/etaxonomy/cdm/app/caryophyllales/KewNyctaginaceaeActivator.java b/app-import/src/main/java/eu/etaxonomy/cdm/app/caryophyllales/KewNyctaginaceaeActivator.java
new file mode 100644 (file)
index 0000000..a76cda4
--- /dev/null
@@ -0,0 +1,111 @@
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.cdm.app.caryophyllales;
+
+import java.io.File;
+import java.util.UUID;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import eu.etaxonomy.cdm.app.berlinModelImport.SourceBase;
+import eu.etaxonomy.cdm.app.common.CdmDestinations;
+import eu.etaxonomy.cdm.common.URI;
+import eu.etaxonomy.cdm.database.DbSchemaValidation;
+import eu.etaxonomy.cdm.database.ICdmDataSource;
+import eu.etaxonomy.cdm.io.caryo.KewExcelTaxonImportConfigurator;
+import eu.etaxonomy.cdm.io.common.CdmDefaultImport;
+import eu.etaxonomy.cdm.io.common.IImportConfigurator.CHECK;
+import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
+
+/**
+ * Import Kew WCVP Nyctabinaceae data to CDM Caryophyllales.
+ *
+ * @author a.mueller
+ * @since 12.01.2023
+ */
+public class KewNyctaginaceaeActivator extends SourceBase{
+
+       @SuppressWarnings("unused")
+    private static final Logger logger = LogManager.getLogger();
+
+       //database validation status (create, update, validate ...)
+       private static final DbSchemaValidation hbm2dll = DbSchemaValidation.VALIDATE;
+       private static final URI source = nyctaginaceae();
+
+       private static final ICdmDataSource cdmDestination = CdmDestinations.cdm_local_caryo_spp();
+//    private static final ICdmDataSource cdmDestination = CdmDestinations.cdm_production_caryophyllales_spp();
+
+
+       //classification
+       static final UUID classificationUuid = UUID.fromString("9edc58b5-de3b-43aa-9f31-1ede7c009c2b");
+
+       static final UUID rootTaxonUuid = UUID.fromString("7040cc71-4f0d-4fd9-9384-eb4d003274aa"); //taxon.uuid not taxonNode.uuid , here Nyctaginaceae
+       //for taxa/names declared as unplaced
+       static final UUID unplacedTaxonUuid = UUID.fromString("9835a6e5-3b8a-49b5-a692-5da531ef8634");
+       //for orphaned synonyms
+       static final UUID orphanedPlaceholderTaxonUuid = UUID.fromString("cc5cec9b-b0c7-432a-8d10-31cbb3685d35");
+
+
+       //check - import
+       static final CHECK check = CHECK.IMPORT_WITHOUT_CHECK;
+
+       //taxa
+       static final boolean doTaxa = true;
+
+       private void doImport(ICdmDataSource cdmDestination){
+
+               //make Source
+           KewExcelTaxonImportConfigurator config= KewExcelTaxonImportConfigurator.NewInstance(source, cdmDestination);
+               config.setClassificationUuid(classificationUuid);
+               config.setRootTaxonUuid(rootTaxonUuid);
+               config.setUnplacedTaxonUuid(unplacedTaxonUuid);
+               config.setOrphanedPlaceholderTaxonUuid(orphanedPlaceholderTaxonUuid);
+               config.setCheck(check);
+//             config.setDoTaxa(doTaxa);
+               config.setDbSchemaValidation(hbm2dll);
+               config.setSourceReferenceTitle("Nyctaginaceae_Export_Kew4CDM-Import.xlsx");
+
+               CdmDefaultImport<KewExcelTaxonImportConfigurator> myImport = new CdmDefaultImport<>();
+
+               //...
+               if (true){
+                       System.out.println("Start import from ("+ source.toString() + ") ...");
+                       config.setSourceReference(getSourceReference(config.getSourceReferenceTitle()));
+                       myImport.invoke(config);
+                       System.out.println("End import from ("+ source.toString() + ")...");
+               }
+       }
+
+       private Reference getSourceReference(String string) {
+               Reference result = ReferenceFactory.newGeneric();
+               result.setTitleCache(string, true);
+               return result;
+       }
+
+
+       public static URI nyctaginaceae(){
+      String fileName = "Nyctaginaceae_Export_Kew4CDM-Import.xlsx";
+//      URI uri = URI.create("file:////BGBM-PESIHPC/Caryophyllales/Kew/" +  fileName);
+      File file = new File("E://data/Caryophyllales/Kew/" +  fileName);
+      if (!file.exists()) {
+          System.exit(0);
+      }
+      URI uri = URI.fromFile(file);
+//      URI uri = URI.create("file://E:/Caryophyllales/Kew/" +  fileName);
+      return uri;
+       }
+
+       public static void main(String[] args) {
+               KewNyctaginaceaeActivator me = new KewNyctaginaceaeActivator();
+               me.doImport(cdmDestination);
+               System.exit(0);
+       }
+}
\ No newline at end of file
index c8247346f185092697b5019b4f2f9812e997499e..1e7a2c0457d422081721fea176ea60747a3c826b 100644 (file)
@@ -64,9 +64,9 @@ public class KewExcelTaxonImport<CONFIG extends KewExcelTaxonImportConfigurator>
 
     private static final String NO_SIMPLE_DIFF = "xxxxx";
 
-    private static final String KEW_UNPLACED_NODE = "82a9e3a1-2519-402a-b3c9-ec4c1fddf4d0";
-    private static final String KEW_ACCEPTED_NODE = "b44da8af-6ad8-4b41-98cd-8f4c1a1bd00c";
-    private static final String KEW_ORPHANED_PLACEHOLDER_TAXON = "dccac79b-a967-49ed-b153-5faa83194060";
+//    private static final String KEW_UNPLACED_NODE = "82a9e3a1-2519-402a-b3c9-ec4c1fddf4d0";
+//
+//    private static final String KEW_ORPHANED_PLACEHOLDER_TAXON = "dccac79b-a967-49ed-b153-5faa83194060";
 
     private static final String CDM_Name_UUID = "CDM-Name_UUID";
     private static final String Kew_Name_ID = "Kew-Name-ID";
@@ -402,10 +402,14 @@ public class KewExcelTaxonImport<CONFIG extends KewExcelTaxonImportConfigurator>
         NomenclaturalStatusType status;
         if (isBlank(nameStatus)){
             status = null;
-        }else if ("Illegitimate".equals(nameStatus)){
+        }else if ("Illegitimate".equals(nameStatus) || "nom. illeg.".equals(nameStatus)){
             status = NomenclaturalStatusType.ILLEGITIMATE();
-        }else if ("Invalid".equals(nameStatus)){
+        }else if ("Invalid".equals(nameStatus) || "nom. inval.".equals(nameStatus)){
             status = NomenclaturalStatusType.INVALID();
+        }else if ("nom. cons.".equals(nameStatus)){
+            status = NomenclaturalStatusType.CONSERVED();
+        }else if ("nom. rej.".equals(nameStatus)){
+            status = NomenclaturalStatusType.REJECTED();
         }else{
             logger.warn(line + "Nom. status not recognized: " + nameStatus);
             status = null;
@@ -473,7 +477,7 @@ public class KewExcelTaxonImport<CONFIG extends KewExcelTaxonImportConfigurator>
         TaxonName taxonName = taxonBase.getName();
 
         if (taxonBase.isInstanceOf(Taxon.class)){
-            Taxon parent = getParent(record, taxonName, line, kewId);
+            Taxon parent = getParent(state, record, taxonName, line, kewId);
             if (parent != null){
                 classification.addParentChild(parent, CdmBase.deproxy(taxonBase, Taxon.class), null, null);
             }
@@ -509,14 +513,14 @@ public class KewExcelTaxonImport<CONFIG extends KewExcelTaxonImportConfigurator>
         if (orphanedSynonymTaxon != null) {
             return orphanedSynonymTaxon;
         }
-        UUID orphanedTaxonUuid = UUID.fromString(KEW_ORPHANED_PLACEHOLDER_TAXON);
+        UUID orphanedTaxonUuid = state.getConfig().getOrphanedPlaceholderTaxonUuid();
         orphanedSynonymTaxon = CdmBase.deproxy(getTaxonService().find(orphanedTaxonUuid), Taxon.class);
         if (orphanedSynonymTaxon == null){
             TaxonName placeholderName = TaxonNameFactory.NewBacterialInstance(Rank.SUBFAMILY());
             placeholderName.setTitleCache("Orphaned_Synonyms_KEW", true);
             orphanedSynonymTaxon = Taxon.NewInstance(placeholderName, getSecReference(state, state.getOriginalRecord()));
             orphanedSynonymTaxon.setUuid(orphanedTaxonUuid);
-            Taxon unplacedTaxon = CdmBase.deproxy(getTaxonService().find(UUID.fromString(KEW_UNPLACED_NODE)), Taxon.class);
+            Taxon unplacedTaxon = CdmBase.deproxy(getTaxonService().find(state.getConfig().getUnplacedTaxonUuid()), Taxon.class);
             TaxonNode orphandNode = getClassification(state).addParentChild(unplacedTaxon, orphanedSynonymTaxon, null, null);
             getTaxonNodeService().save(orphandNode);
         }
@@ -552,10 +556,10 @@ public class KewExcelTaxonImport<CONFIG extends KewExcelTaxonImportConfigurator>
         }
     }
 
-    private Taxon getParent(Map<String, String> record, TaxonName taxonName, String line, String kewId) {
+    private Taxon getParent(SimpleExcelTaxonImportState<CONFIG> state, Map<String, String> record, TaxonName taxonName, String line, String kewId) {
         String statusStr = getValue(record, Kew_Taxonomic_Status);
         if ("Unplaced".equals(statusStr)){
-            return CdmBase.deproxy(getTaxonService().find(UUID.fromString(KEW_UNPLACED_NODE)), Taxon.class);
+            return CdmBase.deproxy(getTaxonService().find(state.getConfig().getUnplacedTaxonUuid()), Taxon.class);
         }else if ("Artificial Hybrid".equals(statusStr)){
             return null ; //getTaxonNodeService().find(UUID.fromString(KEW_HYBRIDS_NODE)); hybrids are handled as synonyms now
         }else if ("Accepted".equals(statusStr)){
@@ -573,7 +577,8 @@ public class KewExcelTaxonImport<CONFIG extends KewExcelTaxonImportConfigurator>
                     return null;
                 }
             }else{
-                return CdmBase.deproxy(getTaxonService().find(UUID.fromString(KEW_ACCEPTED_NODE)), Taxon.class);
+                UUID rootTaxonUuid = state.getConfig().getRootTaxonUuid();
+                return CdmBase.deproxy(getTaxonService().find(rootTaxonUuid), Taxon.class);
             }
         }else if ("Synonym".equals(statusStr)){
             //not relevant
index 81d95a03c7ab53a39e4d9c3c8486947a822ee0ef..ba3d03ab41066bbd87553c174621c9b5ec97443d 100644 (file)
@@ -8,6 +8,8 @@
 */
 package eu.etaxonomy.cdm.io.caryo;
 
+import java.util.UUID;
+
 import eu.etaxonomy.cdm.common.URI;
 import eu.etaxonomy.cdm.database.ICdmDataSource;
 import eu.etaxonomy.cdm.io.common.mapping.IInputTransformer;
@@ -30,6 +32,10 @@ public class KewExcelTaxonImportConfigurator
     private static IInputTransformer defaultTransformer = null;
     private Reference secReference;
 
+    private UUID rootTaxonUuid;
+    private UUID unplacedTaxonUuid;
+    private UUID orphanedPlaceholderTaxonUuid;
+
     public static KewExcelTaxonImportConfigurator NewInstance(URI source, ICdmDataSource destination) {
         return new KewExcelTaxonImportConfigurator(source, destination);
     }
@@ -61,4 +67,25 @@ public class KewExcelTaxonImportConfigurator
     public void setSecReference(Reference secReference) {
         this.secReference = secReference;
     }
-}
+
+    public UUID getRootTaxonUuid() {
+        return rootTaxonUuid;
+    }
+    public void setRootTaxonUuid(UUID rootTaxonUuid) {
+        this.rootTaxonUuid = rootTaxonUuid;
+    }
+
+    public UUID getUnplacedTaxonUuid() {
+        return unplacedTaxonUuid;
+    }
+    public void setUnplacedTaxonUuid(UUID unplacedTaxonUuid) {
+        this.unplacedTaxonUuid = unplacedTaxonUuid;
+    }
+
+    public UUID getOrphanedPlaceholderTaxonUuid() {
+        return orphanedPlaceholderTaxonUuid;
+    }
+    public void setOrphanedPlaceholderTaxonUuid(UUID orphanedPlaceholderTaxonUuid) {
+        this.orphanedPlaceholderTaxonUuid = orphanedPlaceholderTaxonUuid;
+    }
+}
\ No newline at end of file