From: Andreas Müller Date: Thu, 1 Oct 2009 22:02:00 +0000 (+0000) Subject: PalmaeFeatureTreeUpdater X-Git-Tag: 3.0.3~1676 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/cdmlib.git/commitdiff_plain/179de47f16894111b6b98d77e5389eaaafe21e12 PalmaeFeatureTreeUpdater --- diff --git a/.gitattributes b/.gitattributes index f01fac74d0..e965c0a931 100644 --- a/.gitattributes +++ b/.gitattributes @@ -56,6 +56,7 @@ app-import/src/main/java/eu/etaxonomy/cdm/app/wp6/diptera/DipteraActivator.java app-import/src/main/java/eu/etaxonomy/cdm/app/wp6/diptera/DipteraDistributionParser.java -text app-import/src/main/java/eu/etaxonomy/cdm/app/wp6/palmae/PalmaeActivator.java -text app-import/src/main/java/eu/etaxonomy/cdm/app/wp6/palmae/PalmaeExcelProtologueActivator.java -text +app-import/src/main/java/eu/etaxonomy/cdm/app/wp6/palmae/PalmaeFeatureTreeUpdater.java -text app-import/src/main/java/eu/etaxonomy/cdm/app/wp6/palmae/PalmaeImageActivator.java -text app-import/src/main/java/eu/etaxonomy/cdm/app/wp6/palmae/PalmaeProtologueImportActivator.java -text app-import/src/main/java/eu/etaxonomy/cdm/app/wp6/palmae/PalmaeTaxonXImportActivator.java -text diff --git a/app-import/src/main/java/eu/etaxonomy/cdm/app/wp6/palmae/PalmaeActivator.java b/app-import/src/main/java/eu/etaxonomy/cdm/app/wp6/palmae/PalmaeActivator.java index 2e3a65f9d1..db79a5b2b7 100644 --- a/app-import/src/main/java/eu/etaxonomy/cdm/app/wp6/palmae/PalmaeActivator.java +++ b/app-import/src/main/java/eu/etaxonomy/cdm/app/wp6/palmae/PalmaeActivator.java @@ -45,7 +45,7 @@ public class PalmaeActivator { static final String tcsSource = TcsSources.arecaceae_local(); static final ICdmDataSource cdmDestination = CdmDestinations.localH2Palmae(); - static final UUID featureTreeUuid = UUID.fromString("72ccce05-7cc8-4dab-8e47-bf3f5fd848a0"); + public static final UUID featureTreeUuid = UUID.fromString("72ccce05-7cc8-4dab-8e47-bf3f5fd848a0"); static final UUID treeUuid = UUID.fromString("1adb71d4-cce6-45e1-b578-e668778d9ec6"); static final UUID secUuid = UUID.fromString("5f32b8af-0c97-48ac-8d33-6099ed68c625"); @@ -57,6 +57,7 @@ public class PalmaeActivator { static final boolean includeImages = true; static final boolean includeExcelProtologue = true; static final boolean includeMediaProtologue = true; + static final boolean updateFeatureTree = true; //check - import static final CHECK check = CHECK.CHECK_AND_IMPORT; @@ -219,6 +220,11 @@ public class PalmaeActivator { System.out.println("End importing taxonX ..."); } + PalmaeFeatureTreeUpdater updater = new PalmaeFeatureTreeUpdater(); + if (updateFeatureTree){ + updater.updateMissingFeatures(cdmDestination); + } + String strSuccess = ""; if (success == false){ strSuccess = "not "; diff --git a/app-import/src/main/java/eu/etaxonomy/cdm/app/wp6/palmae/PalmaeFeatureTreeUpdater.java b/app-import/src/main/java/eu/etaxonomy/cdm/app/wp6/palmae/PalmaeFeatureTreeUpdater.java new file mode 100644 index 0000000000..c238230c53 --- /dev/null +++ b/app-import/src/main/java/eu/etaxonomy/cdm/app/wp6/palmae/PalmaeFeatureTreeUpdater.java @@ -0,0 +1,98 @@ +// $Id$ +/** +* 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.wp6.palmae; + +import java.util.List; +import java.util.UUID; + +import org.apache.log4j.Logger; +import org.springframework.transaction.TransactionStatus; + +import eu.etaxonomy.cdm.api.application.CdmApplicationController; +import eu.etaxonomy.cdm.app.common.CdmDestinations; +import eu.etaxonomy.cdm.database.DbSchemaValidation; +import eu.etaxonomy.cdm.database.ICdmDataSource; +import eu.etaxonomy.cdm.model.description.Feature; +import eu.etaxonomy.cdm.model.description.FeatureNode; +import eu.etaxonomy.cdm.model.description.FeatureTree; + +/** + * @author a.mueller + * @created 01.10.2009 + * @version 1.0 + */ +public class PalmaeFeatureTreeUpdater { + private static final Logger logger = Logger.getLogger(PalmaeFeatureTreeUpdater.class); + + static final ICdmDataSource cdmDestination = CdmDestinations.localH2Palmae(); + + + private String relationships = "relationships"; + private String taxonomicAccounts = "taxonomic accounts"; + private String fossilRecord = "fossil record"; + + public boolean updateMissingFeatures(ICdmDataSource dataSource) { + try{ + int count = 0; + UUID featureTreeUuid = PalmaeActivator.featureTreeUuid; + CdmApplicationController cdmApp = CdmApplicationController.NewInstance(dataSource, DbSchemaValidation.VALIDATE); + + TransactionStatus tx = cdmApp.startTransaction(); + + FeatureTree tree = cdmApp.getDescriptionService().getFeatureTreeByUuid(featureTreeUuid); + FeatureNode root = tree.getRoot(); + + List featureList = cdmApp.getDescriptionService().getFeaturesAll(); + for (Feature feature : featureList){ + String label = feature.getLabel(); + if (relationships.equals(label)){ + FeatureNode newNode = FeatureNode.NewInstance(feature); + root.addChild(newNode); + count++; + }else if(taxonomicAccounts.equals(label)){ + FeatureNode newNode = FeatureNode.NewInstance(feature); + root.addChild(newNode); + count++; + }else if(fossilRecord.equals(label)){ + FeatureNode newNode = FeatureNode.NewInstance(feature); + root.addChild(newNode); + count++; + } + } + cdmApp.commitTransaction(tx); + if (count != 3){ + logger.warn("Did not find 3 additional features but " + count); + return false; + } + logger.info("Feature tree updated!"); + return true; + } catch (Exception e) { + e.printStackTrace(); + logger.error("ERROR in feature tree update"); + return false; + } + + } + + + /** + * @param args + */ + public static void main(String[] args) { + PalmaeFeatureTreeUpdater updater = new PalmaeFeatureTreeUpdater(); + try { + updater.updateMissingFeatures(cdmDestination); + } catch (Exception e) { + e.printStackTrace(); + logger.error("ERROR in feature tree update"); + } + } +} diff --git a/app-import/src/main/java/eu/etaxonomy/cdm/app/wp6/palmae/PalmaeTaxonXImportActivator.java b/app-import/src/main/java/eu/etaxonomy/cdm/app/wp6/palmae/PalmaeTaxonXImportActivator.java index f8e6c9460c..e41881c020 100644 --- a/app-import/src/main/java/eu/etaxonomy/cdm/app/wp6/palmae/PalmaeTaxonXImportActivator.java +++ b/app-import/src/main/java/eu/etaxonomy/cdm/app/wp6/palmae/PalmaeTaxonXImportActivator.java @@ -76,8 +76,10 @@ public class PalmaeTaxonXImportActivator { private boolean makeDirectory(CdmDefaultImport cdmImport, TaxonXImportConfigurator taxonXImportConfigurator, File source){ boolean success = true; + int count = 0; for (File file : source.listFiles() ){ if (file.isFile()){ + doCount(count++, 300, "Files"); success &= importFile(cdmImport, taxonXImportConfigurator, file); }else{ if (! file.getName().startsWith(".")){ @@ -96,7 +98,7 @@ public class PalmaeTaxonXImportActivator { config.setSource(url.toString()); String originalSourceId = file.getName(); originalSourceId =originalSourceId.replace(".xml", ""); - logger.info(originalSourceId); + logger.debug(originalSourceId); config.setOriginalSourceId(originalSourceId); TransactionStatus tx = cdmImport.getCdmAppController().startTransaction(); success &= cdmImport.invoke(config); @@ -108,6 +110,9 @@ public class PalmaeTaxonXImportActivator { } } + protected void doCount(int count, int modCount, String pluralString){ + if ((count % modCount ) == 0 && count!= 0 ){ logger.info(pluralString + " handled: " + (count));} + } /** * @param args