ref #7664 adapt app-import to typified return types
[cdmlib-apps.git] / app-import / src / main / java / eu / etaxonomy / cdm / app / wp6 / cichorieae / TaraxacumActivator.java
index 8c2a07b4ab65ea3a31420bd80b23984e8922f1f2..c38ebdc74ee64a0939674a756493d792af0e5901 100644 (file)
@@ -1,8 +1,8 @@
 /**\r
 * Copyright (C) 2007 EDIT\r
-* European Distributed Institute of Taxonomy \r
+* European Distributed Institute of Taxonomy\r
 * http://www.e-taxonomy.eu\r
-* \r
+*\r
 * The contents of this file are subject to the Mozilla Public License Version 1.1\r
 * See LICENSE.TXT at the top of this package for the full license terms.\r
 */\r
@@ -16,7 +16,7 @@ import java.util.UUID;
 import org.apache.log4j.Logger;\r
 import org.springframework.transaction.TransactionStatus;\r
 \r
-import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;\r
+import eu.etaxonomy.cdm.api.application.ICdmRepository;\r
 import eu.etaxonomy.cdm.app.berlinModelImport.BerlinModelSources;\r
 import eu.etaxonomy.cdm.app.common.CdmDestinations;\r
 import eu.etaxonomy.cdm.database.DbSchemaValidation;\r
@@ -25,6 +25,7 @@ import eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator;
 import eu.etaxonomy.cdm.io.common.CdmDefaultImport;\r
 import eu.etaxonomy.cdm.io.common.IImportConfigurator.CHECK;\r
 import eu.etaxonomy.cdm.io.common.IImportConfigurator.DO_REFERENCES;\r
+import eu.etaxonomy.cdm.io.common.ImportResult;\r
 import eu.etaxonomy.cdm.io.common.Source;\r
 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
 import eu.etaxonomy.cdm.model.reference.Reference;\r
@@ -35,10 +36,10 @@ import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 \r
 /**\r
  * TODO add the following to a wiki page:\r
- * HINT: If you are about to import into a mysql data base running under windows and if you wish to dump and restore the resulting data bas under another operation systen \r
+ * HINT: If you are about to import into a mysql data base running under windows and if you wish to dump and restore the resulting data bas under another operation systen\r
  * you must set the mysql system variable lower_case_table_names = 0 in order to create data base with table compatible names.\r
- * \r
- * \r
+ *\r
+ *\r
  * @author a.mueller\r
  *\r
  */\r
@@ -54,10 +55,10 @@ public class TaraxacumActivator {
 //     static final UUID treeUuid = UUID.fromString("00db28a7-50e1-4abc-86ec-b2a8ce870de9");\r
 //     static final UUID treeUuid = UUID.fromString("534e190f-3339-49ba-95d9-fa27d5493e3e");\r
        static final int sourceSecId = 7800000;\r
-       \r
+\r
        static final UUID featureTreeUuid = UUID.fromString("ab007336-d853-4f2f-a490-7c8232eafe7b");\r
-       static final Object[] featureKeyList = new Integer[]{1, 31, 4, 98, 41};         \r
-       \r
+       static final Object[] featureKeyList = new Integer[]{1, 31, 4, 98, 41};\r
+\r
        //TODO update for Taraxacum\r
        static final String mediaUrlString = "http://wp5.e-taxonomy.eu/dataportal/cichorieae/media/protolog/";\r
        //Mac\r
@@ -66,8 +67,8 @@ public class TaraxacumActivator {
        //static final File mediaPath = new File("\\\\media\\editwp6\\protolog");\r
        // set to zero for unlimited nameFacts\r
        static final int maximumNumberOfNameFacts = 0;\r
-       \r
-       \r
+\r
+\r
        //check - import\r
        //static final CHECK check = CHECK.CHECK_ONLY;\r
        static final CHECK check = CHECK.CHECK_AND_IMPORT;\r
@@ -79,7 +80,7 @@ public class TaraxacumActivator {
        static final boolean ignoreNull = true;\r
 \r
 \r
-// **************** ALL *********************  \r
+// **************** ALL *********************\r
     //authors\r
        static final boolean doAuthors = true;\r
        //references\r
@@ -90,15 +91,15 @@ public class TaraxacumActivator {
        static final boolean doNameStatus = true;\r
        static final boolean doTypes = true;\r
        static final boolean doNameFacts = true;\r
-       \r
+\r
        //taxa\r
        static final boolean doTaxa = true;\r
        static final boolean doRelTaxa = true;\r
-       static final boolean doFacts = true;\r
-       static final boolean doOccurences = true;\r
+       static final boolean doFacts = false;\r
+       static final boolean doOccurences = false;\r
        static final boolean doCommonNames = true;\r
 \r
-       \r
+\r
 // **************** SELECTED *********************\r
 //\r
 //     //authors\r
@@ -111,29 +112,29 @@ public class TaraxacumActivator {
 //     static final boolean doNameStatus = false;\r
 //     static final boolean doTypes = false;\r
 //     static final boolean doNameFacts = false;\r
-//     \r
-//     //taxa \r
+//\r
+//     //taxa\r
 //     static final boolean doTaxa = false;\r
 //     static final boolean doRelTaxa = false;\r
 //     static final boolean doFacts = false;\r
 //     static final boolean doOccurences = false;\r
-       \r
+\r
        /**\r
         * @param args\r
         */\r
-       public boolean doImport(ICdmDataSource destination, DbSchemaValidation hbm2dll) {\r
-               boolean success = true;\r
+       public ImportResult doImport(ICdmDataSource destination, DbSchemaValidation hbm2dll) {\r
+               ImportResult success;\r
                logger.info("Start import from BerlinModel("+ berlinModelSource.getDatabase() + ") to " + cdmDestination.getDatabase() + " ...");\r
-               \r
+\r
                //make BerlinModel Source\r
                Source source = berlinModelSource;\r
-               \r
+\r
                BerlinModelImportConfigurator bmImportConfigurator = BerlinModelImportConfigurator.NewInstance(source,  destination);\r
-               \r
+\r
                bmImportConfigurator.setClassificationUuid(treeUuid);\r
 //             bmImportConfigurator.setSecUuid(secUuid);\r
                bmImportConfigurator.setSourceSecId(sourceSecId);\r
-               \r
+\r
                bmImportConfigurator.setNomenclaturalCode(nomenclaturalCode);\r
 \r
                bmImportConfigurator.setIgnoreNull(ignoreNull);\r
@@ -144,16 +145,16 @@ public class TaraxacumActivator {
                bmImportConfigurator.setDoNameStatus(doNameStatus);\r
                bmImportConfigurator.setDoTypes(doTypes);\r
                bmImportConfigurator.setDoNameFacts(doNameFacts);\r
-               \r
+\r
                bmImportConfigurator.setDoTaxa(doTaxa);\r
                bmImportConfigurator.setDoRelTaxa(doRelTaxa);\r
                bmImportConfigurator.setDoFacts(doFacts);\r
                bmImportConfigurator.setDoOccurrence(doOccurences);\r
                bmImportConfigurator.setDoCommonNames(doCommonNames);\r
-               \r
+\r
                bmImportConfigurator.setDbSchemaValidation(hbm2dll);\r
 \r
-               \r
+\r
                // mediaResourceLocations\r
                File mediaPath = CichorieaeActivator.protologuePath;\r
                if ( mediaPath.exists() && mediaPath.isDirectory()){\r
@@ -162,19 +163,19 @@ public class TaraxacumActivator {
                }else{\r
                        logger.warn("Could not configure mediaResourceLocations");\r
                }\r
-               \r
+\r
                // maximum number of name facts to import\r
                bmImportConfigurator.setMaximumNumberOfNameFacts(maximumNumberOfNameFacts);\r
-               \r
-               \r
+\r
+\r
                bmImportConfigurator.setCheck(check);\r
-               \r
+\r
                // invoke import\r
                CdmDefaultImport<BerlinModelImportConfigurator> bmImport = new CdmDefaultImport<BerlinModelImportConfigurator>();\r
-               success &= bmImport.invoke(bmImportConfigurator);\r
-               \r
+               success = bmImport.invoke(bmImportConfigurator);\r
+\r
                if (bmImportConfigurator.getCheck().equals(CHECK.CHECK_AND_IMPORT)  || bmImportConfigurator.getCheck().equals(CHECK.IMPORT_WITHOUT_CHECK)    ){\r
-                       ICdmApplicationConfiguration app = bmImport.getCdmAppController();\r
+                       ICdmRepository app = bmImport.getCdmAppController();\r
                        TransactionStatus tx = app.startTransaction();\r
                        //make feature tree\r
 //                     FeatureTree tree = TreeCreator.flatTree(featureTreeUuid, bmImportConfigurator.getFeatureMap(), featureKeyList);\r
@@ -187,13 +188,13 @@ public class TaraxacumActivator {
                        mergeIntoCichorieae(app);\r
                        app.commitTransaction(tx);\r
                }\r
-               \r
+\r
                logger.info("End import from BerlinModel ("+ source.getDatabase() + ")...");\r
                return success;\r
        }\r
-       \r
-       \r
-       public boolean mergeIntoCichorieae(ICdmApplicationConfiguration app){\r
+\r
+\r
+       public boolean mergeIntoCichorieae(ICdmRepository app){\r
                boolean success = true;\r
        //      String taraxTaraxacumUuidStr = "9a7bced0-fa1a-432e-9cca-57b62219cde6";\r
                String taraxTaraxacumUuidStr = "b86f1156-091c-494d-a9c9-c84d71058f98";\r
@@ -201,7 +202,7 @@ public class TaraxacumActivator {
 \r
                String cichTaraxacumUuidStr = "c946ac62-b6c6-493b-8ed9-278fa38b931a";\r
                UUID cichTaraxacumUUID = UUID.fromString(cichTaraxacumUuidStr);\r
-               \r
+\r
                Taxon taraxacumInCichTaxon = (Taxon)app.getTaxonService().find(cichTaraxacumUUID);\r
                if (taraxacumInCichTaxon != null) {\r
                        logger.info("Merge Taraxacum");\r
@@ -210,21 +211,21 @@ public class TaraxacumActivator {
                        TaxonNode parentNodeInCich = null;\r
                        Taxon parentInCich = null;\r
                        TaxonNode taxonNodeInTarax = null;\r
-                       \r
+\r
                        if (taxonNodesInCich == null || taxonNodesInCich.isEmpty()) {\r
                                logger.error("No taxon nodes found for Taraxacum in cichorieae database");\r
                                success = false;\r
                        } else {\r
                                logger.info(taxonNodesInCich.size()+ " taxon node(s) found for Taraxacum in Cich DB");\r
                                taxonNodeInCich = taxonNodesInCich.iterator().next();\r
-                               parentNodeInCich = (TaxonNode) taxonNodeInCich.getParent();\r
+                               parentNodeInCich = taxonNodeInCich.getParent();\r
                                parentInCich = parentNodeInCich.getTaxon();\r
                        }\r
-                       \r
+\r
                        Taxon taraxacumInTaraxTaxon = (Taxon)app.getTaxonService().find(taraxTaraxacumUUID);\r
-                       \r
+\r
                        Set<TaxonNode> taxonNodesInTarax = taraxacumInTaraxTaxon.getTaxonNodes();\r
-                       \r
+\r
                        Classification treeInTaraxacum = null;\r
                        if (taxonNodesInTarax == null || taxonNodesInTarax.isEmpty()) {\r
                                logger.warn("No taxon nodes found for Taraxacum in taraxacum database");\r
@@ -233,24 +234,21 @@ public class TaraxacumActivator {
                                taxonNodeInTarax = taxonNodesInTarax.iterator().next();\r
                                treeInTaraxacum = taxonNodeInTarax.getClassification();\r
                        }\r
-       \r
+\r
                        //TODO reference\r
                        Reference citation = null;\r
                        String microcitation = null;\r
-                       \r
+\r
                        taxonNodeInTarax = parentNodeInCich.addChildNode(taxonNodeInTarax, citation, microcitation);\r
                        //parentNodeInCich.getClassification().addParentChild(parentInCich, taraxacumInTaraxTaxon, null, null);\r
-               \r
+\r
                        parentNodeInCich.deleteChildNode(taxonNodeInCich);\r
-                       \r
+\r
                        app.getTaxonService().save(parentInCich);\r
-                       try{\r
-                               app.getTaxonService().delete(taraxacumInCichTaxon);\r
-                       }catch(Exception e){ //TODO debug to repair Jenkins\r
-                               e.printStackTrace();\r
-                               return false;\r
-                       }\r
-                               \r
+\r
+                       app.getTaxonService().delete(taraxacumInCichTaxon);\r
+\r
+\r
                        try {\r
 //                             app.getClassificationService().delete(treeInTaraxacum); //throws exception\r
                        } catch (Exception e) {\r
@@ -263,13 +261,13 @@ public class TaraxacumActivator {
                }\r
                return success;\r
        }\r
-       \r
+\r
        public static void main(String[] args) {\r
                TaraxacumActivator ta = new TaraxacumActivator();\r
                ICdmDataSource destination = CdmDestinations.chooseDestination(args) != null ? CdmDestinations.chooseDestination(args) : cdmDestination;\r
-               \r
+\r
                ta.doImport(destination, hbm2dll);\r
-               \r
+\r
        }\r
 \r
 }\r