-// $Id$
/**
* Copyright (C) 2017 EDIT
* European Distributed Institute of Taxonomy
package eu.etaxonomy.taxeditor.util;
import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
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.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.store.CdmStore;
/**
* @author pplitzner
* @date 05.09.2017
- *
*/
public class TaxonTreeNodeContentProvider implements ITreeContentProvider {
private static final Object[] NO_CHILDREN = new Object[0];
- /**
- * {@inheritDoc}
- */
+ private ITaxonNodeService taxonNodeService;
+
@Override
public Object[] getElements(Object inputElement) {
if(inputElement instanceof Collection){
- return ((Collection) inputElement).toArray();
+ return ((Collection<?>) inputElement).toArray();
}
return this.getChildren(inputElement);
}
- /**
- * {@inheritDoc}
- */
@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();
+// }
+ List<TaxonNodeDto> childrenList = null;
+
+ if(parentElement instanceof TaxonNode){
+ childrenList = taxonNodeService.listChildNodesAsTaxonNodeDto((TaxonNode)parentElement);
+ }else {
+ childrenList = taxonNodeService.listChildNodesAsTaxonNodeDto((TaxonNodeDto)parentElement);
}
+ Comparator<TaxonNodeDto> comparator = PreferencesUtil.getNodeComparator();
+ Collections.sort(childrenList, comparator);
+ children = childrenList.toArray();
return children != null ? children : NO_CHILDREN;
}
- /**
- * {@inheritDoc}
- */
@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){
+ TaxonNodeDto parentDto = taxonNodeService.dto(((TaxonNodeDto) element).getParentUUID());
+// TaxonNode parent = taxonNodeService.load(((TaxonNodeDto) element).getParentUUID());
+ if (parentDto != null){
+// return new TaxonNodeDto(parent);
+ return parentDto;
+ }
+ }
}
return null;
}
- /**
- * {@inheritDoc}
- */
@Override
public boolean hasChildren(Object element) {
if(element instanceof TaxonNode){
return ((TaxonNode) element).getCountChildren() > 0;
}
+ if (element instanceof TaxonNodeDto){
+ return ((TaxonNodeDto)element).getTaxonomicChildrenCount()>0;
+ }
return this.getChildren(element).length > 0;
}
-
}