From e5b1c0af0efbeabe24784b8c036e2382d14adde0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Andreas=20M=C3=BCller?= Date: Wed, 17 Jun 2009 12:04:58 +0000 Subject: [PATCH] TaxonomicTree implementation (io) --- .../in/BerlinModelImportConfigurator.java | 16 ++++ .../in/BerlinModelImportState.java | 19 +++++ .../in/BerlinModelTaxonRelationImport.java | 74 ++++++++++++++++++- .../out/BerlinModelExportConfigurator.java | 30 ++++---- .../out/BerlinModelNameRelationExport.java | 28 +++---- 5 files changed, 135 insertions(+), 32 deletions(-) diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelImportConfigurator.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelImportConfigurator.java index 0fd3f18bb3..1e3353389c 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelImportConfigurator.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelImportConfigurator.java @@ -44,6 +44,8 @@ public class BerlinModelImportConfigurator extends ImportConfiguratorBase proParteSynonyms = new HashSet(); private Set partialSynonyms = new HashSet(); @@ -249,6 +251,20 @@ public class BerlinModelImportConfigurator extends ImportConfiguratorBase dbCdmDefTermMap = new HashMap(); + Map treeMap = new HashMap(); Map usernameMap = new HashMap(); /* (non-Javadoc) @@ -66,4 +69,20 @@ public class BerlinModelImportState extends ImportStateBase referenceMap = (MapWrapper)state.getStore(ICdmIO.REFERENCE_STORE); + MapWrapper nomRefMap = (MapWrapper)state.getStore(ICdmIO.NOMREF_STORE); + Source source = state.getConfig().getSource(); + + logger.info("start makeTaxonomicTree ..."); + + String strQuery = "SELECT PTaxon.PTRefFk " + + " FROM RelPTaxon INNER JOIN " + + " PTaxon AS PTaxon ON RelPTaxon.PTNameFk2 = PTaxon.PTNameFk AND RelPTaxon.PTRefFk2 = PTaxon.PTRefFk " + + " WHERE (RelPTaxon.RelQualifierFk = 1) " + + " GROUP BY PTaxon.PTRefFk "; + ResultSet rs = source.getResultSet(strQuery) ; + int i = 0; + //for each reference + try { + while (rs.next()){ + + if ((i++ % modCount) == 0 && i!= 1 ){ logger.info("RelPTaxa handled: " + (i-1));} + + int ptRefFk = rs.getInt("PTRefFk"); + + StrictReferenceBase ref = (StrictReferenceBase)referenceMap.get(ptRefFk); + if (ref == null){ + ref = (StrictReferenceBase)nomRefMap.get(ptRefFk); + } + //FIXME treeName + String treeName = "TaxonTree - No Name"; + if (ref != null){ + treeName = ref.getTitleCache(); + } + TaxonomicTree tree = TaxonomicTree.NewInstance(treeName); + tree.setReference(ref); + + UUID uuid = getTaxonService().saveTaxonomicTree(tree); + state.putTree(ref, tree); + } + } catch (SQLException e) { + logger.error("Error in BerlinModleTaxonRelationImport.makeTaxonomicTrees: " + e.getMessage()); + throw e; + } + logger.info("end makeTaxonomicTree ..."); + + return true; + } + /* (non-Javadoc) @@ -155,9 +204,14 @@ public class BerlinModelTaxonRelationImport extends BerlinModelImportBase { BerlinModelImportConfigurator config = state.getConfig(); Source source = config.getSource(); - logger.info("start makeTaxonRelationships ..."); - try { + if (config.isUseTaxonomicTree()){ + success &= makeTaxonomicTrees(state); + } + + + logger.info("start makeTaxonRelationships ..."); + //get data from database String strQuery = " SELECT RelPTaxon.*, FromTaxon.RIdentifier as taxon1Id, ToTaxon.RIdentifier as taxon2Id, q.is_concept_relation " + @@ -210,7 +264,7 @@ public class BerlinModelTaxonRelationImport extends BerlinModelImportBase { } Taxon fromTaxon = (Taxon)taxon1; if (relQualifierFk == TAX_REL_IS_INCLUDED_IN){ - toTaxon.addTaxonomicChild(fromTaxon, citation, microcitation); + makeTaxonomicallyIncluded(state, fromTaxon, toTaxon, citation, microcitation); }else if (relQualifierFk == TAX_REL_IS_MISAPPLIED_NAME_OF){ toTaxon.addMisappliedName(fromTaxon, citation, microcitation); } @@ -339,6 +393,20 @@ public class BerlinModelTaxonRelationImport extends BerlinModelImportBase { } } + private boolean makeTaxonomicallyIncluded(BerlinModelImportState state, Taxon child, Taxon parent, ReferenceBase citation, String microCitation){ + if (state.getConfig().isUseTaxonomicTree() == false){ + parent.addTaxonomicChild(child, citation, microCitation); + return true; + }else{ + ReferenceBase toRef = parent.getSec(); + TaxonomicTree tree = state.getTree(toRef); + if (tree == null){ + throw new IllegalStateException("Tree for ToTaxon reference does not exist."); + } + return tree.addParentChild(parent, child, citation, microCitation); + } + } + /* (non-Javadoc) * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator) */ diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelExportConfigurator.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelExportConfigurator.java index 7c13b55e1e..eac55c7e2d 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelExportConfigurator.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelExportConfigurator.java @@ -103,21 +103,21 @@ public class BerlinModelExportConfigurator extends DbExportConfiguratorBase impl public void setState(BerlinModelExportState state) { this.state = state; } - - /** - * @return the relNameQualifierMethod - */ - public Method getRelNameQualifierMethod() { - return relNameQualifierMethod; - } - - /** - * @param relNameQualifierMethod the relNameQualifierMethod to set - */ - public void setRelNameQualifierMethod(Method relNameQualifierMethod) { - this.relNameQualifierMethod = relNameQualifierMethod; - } - +// +// /** +// * @return the relNameQualifierMethod +// */ +// public Method getRelNameQualifierMethod() { +// return relNameQualifierMethod; +// } +// +// /** +// * @param relNameQualifierMethod the relNameQualifierMethod to set +// */ +// public void setRelNameQualifierMethod(Method relNameQualifierMethod) { +// this.relNameQualifierMethod = relNameQualifierMethod; +// } +// diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelNameRelationExport.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelNameRelationExport.java index fb01aa74f8..06eab29b68 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelNameRelationExport.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelNameRelationExport.java @@ -132,20 +132,20 @@ public class BerlinModelNameRelationExport extends BerlinModelExportBase rel, BerlinModelExportConfigurator config) throws Exception { - if (config.getRelNameQualifierMethod() != null){ - try { - return (Integer)config.getRelNameQualifierMethod().invoke(rel); - } catch (Exception e) { - logger.error(e.getMessage()); - throw e; - } - }else{ - return BerlinModelTransformer.nameRel2RelNameQualifierFk(rel); - } - } +// //called by MethodMapper +// @SuppressWarnings("unused") +// private static Integer getRelNameQualifierFk(RelationshipBase rel, BerlinModelExportConfigurator config) throws Exception { +// if (config.getRelNameQualifierMethod() != null){ +// try { +// return (Integer)config.getRelNameQualifierMethod().invoke(rel); +// } catch (Exception e) { +// logger.error(e.getMessage()); +// throw e; +// } +// }else{ +// return BerlinModelTransformer.nameRel2RelNameQualifierFk(rel); +// } +// } /* (non-Javadoc) * @see eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportBase#getStandardMethodParameter() -- 2.34.1