fixed a bug that occurred when executing operations on taxon nodes on root level
authorn.hoffmann <n.hoffmann@localhost>
Wed, 9 Dec 2009 16:31:54 +0000 (16:31 +0000)
committern.hoffmann <n.hoffmann@localhost>
Wed, 9 Dec 2009 16:31:54 +0000 (16:31 +0000)
app-import/src/main/java/eu/etaxonomy/cdm/app/wp6/cichorieae/TaraxacumActivator.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelTaxonomicTreeExport.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonNode.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonTreeServiceImpl.java

index a8cc4188d190eae408f6dec5a3e3887adf364339..0b2a581a0864af39ae77d5fca659feeedba43119 100644 (file)
@@ -208,7 +208,7 @@ public class TaraxacumActivator {
                        } else {\r
                                logger.info(taxonNodesInCich .size()+ " taxon node(s) found for Taraxacum in Cich DB");\r
                                taxonNodeInCich = taxonNodesInCich.iterator().next();\r
-                               parentNodeInCich = taxonNodeInCich.getParent();\r
+                               parentNodeInCich = (TaxonNode) taxonNodeInCich.getParent();\r
                                parentInCich = parentNodeInCich.getTaxon();\r
                        }\r
                        \r
@@ -226,9 +226,9 @@ public class TaraxacumActivator {
                        String microcitation = null;\r
                        \r
                        TaxonNode taxonNodeInTarax = \r
-                               parentNodeInCich.addChild(taraxacumInTarax, citation, microcitation);\r
+                               parentNodeInCich.addChildTaxon(taraxacumInTarax, citation, microcitation, null);\r
                        parentNodeInCich.getTaxonomicTree().addParentChild(parentInCich, taraxacumInTarax, null, null);\r
-                       parentNodeInCich.removeChild(taxonNodeInCich);\r
+                       parentNodeInCich.deleteChildNode(taxonNodeInCich);\r
                        \r
                        app.getTaxonService().save(parentInCich);\r
                        app.getTaxonService().delete(taraxacumInCich);\r
index 01d0436cb7d99b8cd8ce85d67c0fce6e6153483f..0f0b6af2f6167c52c44d42d1e4970c6412d0cb19 100644 (file)
@@ -23,6 +23,7 @@ import eu.etaxonomy.cdm.io.berlinModel.out.mapper.MethodMapper;
 import eu.etaxonomy.cdm.io.common.DbExportStateBase;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.common.RelationshipBase;\r
+import eu.etaxonomy.cdm.model.taxon.ITreeNode;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
@@ -164,8 +165,9 @@ public class BerlinModelTaxonomicTreeExport extends BerlinModelExportBase<Relati
        }\r
 \r
        private static Integer getObjectFk(TaxonNode node, DbExportStateBase<?> state, boolean isName, boolean isFrom){\r
-               Taxon taxon = (isFrom) ? node.getTaxon():  node.getParent().getTaxon();\r
-               if (taxon != null){\r
+               ITreeNode treeNode = (isFrom) ? node :  node.getParent();\r
+               if (treeNode instanceof TaxonNode){\r
+                       Taxon taxon = ((TaxonNode) treeNode).getTaxon();\r
                        CdmBase cdmBase = (isName) ? taxon.getName(): taxon.getSec();\r
                        return state.getDbId(cdmBase);\r
                }\r
index 93a44d8b1a6a491d93a0305b3c56bb4f8d8caaf5..252a6fa30f1b19002972adb668a6d12e2d02e2f4 100644 (file)
@@ -263,7 +263,7 @@ public class TaxonNode  extends AnnotatableEntity implements ITreeNode{
         * \r
         * @param node\r
         * @return\r
-        * @deprecated use removeChildNode() instead\r
+        * @deprecated use deleteChildNode() instead\r
         */\r
        @Deprecated\r
        public boolean removeChild(TaxonNode node){\r
index ca7be19484156e5e387bfeac7feab51b0aa6f091..4a28945ebb76d6117a97df02acff59a49f35b400 100644 (file)
@@ -111,15 +111,16 @@ public class TaxonTreeServiceImpl extends IdentifiableServiceBase<TaxonomicTree,
                List<TaxonNode> pathToRoot = new ArrayList<TaxonNode>();
                pathToRoot.add(thisNode);
                
-               TaxonNode parentNode = thisNode.getParent();
-               while(parentNode != null){
-                       Rank parentNodeRank = parentNode.getTaxon().getName().getRank();
+               ITreeNode parentNode = thisNode.getParent();
+               while(parentNode instanceof TaxonNode){
+                       TaxonNode parent = (TaxonNode) parentNode;
+                       Rank parentNodeRank = parent.getTaxon().getName().getRank();
                        // stop if the next parent is higher than the baseRank
                        if(baseRank != null && baseRank.isLower(parentNodeRank)){
                                break;
                        }
-                       pathToRoot.add(parentNode);
-                       parentNode = parentNode.getParent();
+                       pathToRoot.add(parent);
+                       parentNode = parent.getParent();
                }
                
                // initialize and invert order of nodes in list