minor
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / util / TaxonTreeNodeContentProvider.java
index 050cb95f5cfafb9fb714b43915e3f58a43d8cdbc..d2fa7f44a062563009aa45a9f5b70b86fdeeb2dd 100644 (file)
 package eu.etaxonomy.taxeditor.util;
 
 import java.util.Collection;
-import java.util.List;
 
 import org.eclipse.jface.viewers.ITreeContentProvider;
 
-import eu.etaxonomy.cdm.hibernate.HHH_9751_Util;
-import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
-import eu.etaxonomy.cdm.model.taxon.Classification;
-import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
+import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
+import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
  * @author pplitzner
@@ -29,6 +28,8 @@ public class TaxonTreeNodeContentProvider implements ITreeContentProvider {
 
     private static final Object[] NO_CHILDREN = new Object[0];
 
+    private ITaxonNodeService taxonNodeService;
+
     /**
      * {@inheritDoc}
      */
@@ -45,18 +46,29 @@ public class TaxonTreeNodeContentProvider implements ITreeContentProvider {
      */
     @Override
     public Object[] getChildren(Object parentElement) {
+        if (taxonNodeService == null){
+            taxonNodeService = CdmStore.getService(ITaxonNodeService.class);
+        }
         Object[] children = null;
 
-        if(parentElement instanceof Classification){
-            children = ((Classification) parentElement).getChildNodes().toArray();
-        }
-        //taxon node
-        if(parentElement instanceof ITaxonTreeNode){
-            ITaxonTreeNode treeNode = (ITaxonTreeNode) HibernateProxyHelper.deproxy(parentElement);
-            List<TaxonNode> childrenSet = treeNode.getChildNodes();
-            HHH_9751_Util.removeAllNull(childrenSet);
-            children = childrenSet.toArray();
+//        if(parentElement instanceof Classification){
+//            children = taxonNodeService.listChildNodesAsUuidAndTitleCache(((Classification)parentElement).getRootNode()).toArray();
+////            children = ((Classification) parentElement).getChildNodes().toArray();
+//        }
+//        //taxon node
+//        if(parentElement instanceof ITaxonTreeNode){
+//            ITaxonTreeNode treeNode = (ITaxonTreeNode) HibernateProxyHelper.deproxy(parentElement);
+//            List<TaxonNode> childrenSet = treeNode.getChildNodes();
+//            HHH_9751_Util.removeAllNull(childrenSet);
+//            children = childrenSet.toArray();
+//        }
+
+        if(parentElement instanceof TaxonNode){
+            children = taxonNodeService.listChildNodesAsTaxonNodeDto((TaxonNode)parentElement).toArray();
+        }else {
+            children = taxonNodeService.listChildNodesAsTaxonNodeDto((UuidAndTitleCache<TaxonNode>)parentElement).toArray();
         }
+
         return children != null ? children : NO_CHILDREN;
     }
 
@@ -65,8 +77,14 @@ public class TaxonTreeNodeContentProvider implements ITreeContentProvider {
      */
     @Override
     public Object getParent(Object element) {
-        if(element instanceof TaxonNode){
-            return ((TaxonNode) element).getParent();
+        if (taxonNodeService == null){
+            taxonNodeService = CdmStore.getService(ITaxonNodeService.class);
+        }
+        if(element instanceof TaxonNodeDto){
+            if (((TaxonNodeDto) element).getParentUUID() != null){
+                TaxonNode parent = taxonNodeService.load(((TaxonNodeDto) element).getParentUUID());
+                return new TaxonNodeDto(parent);
+            }
         }
         return null;
     }
@@ -79,6 +97,9 @@ public class TaxonTreeNodeContentProvider implements ITreeContentProvider {
         if(element instanceof TaxonNode){
             return ((TaxonNode) element).getCountChildren() > 0;
         }
+        if (element instanceof TaxonNodeDto){
+            return ((TaxonNodeDto)element).getTaxonomicChildrenCount()>0;
+        }
         return this.getChildren(element).length > 0;
     }