--- /dev/null
+/**
+* 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
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";
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;
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);
}
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);
}
}
}
- 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)){
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
*/
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;
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);
}
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