X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/blobdiff_plain/b4e627e88544852019fbc46f315daad8daa2a901..8e204953da14e5e759eada9e9cf36a36e56c8c18:/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/util/TaxonTreeNodeContentProvider.java diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/util/TaxonTreeNodeContentProvider.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/util/TaxonTreeNodeContentProvider.java index 050cb95f5..d2fa7f44a 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/util/TaxonTreeNodeContentProvider.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/util/TaxonTreeNodeContentProvider.java @@ -10,15 +10,14 @@ 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 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 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)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; }