Revision cedc4ff1
Added by Katja Luther about 6 years ago
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/util/TaxonTreeNodeContentProvider.java | ||
---|---|---|
10 | 10 |
package eu.etaxonomy.taxeditor.util; |
11 | 11 |
|
12 | 12 |
import java.util.Collection; |
13 |
import java.util.List; |
|
14 | 13 |
|
15 | 14 |
import org.eclipse.jface.viewers.ITreeContentProvider; |
16 | 15 |
|
17 |
import eu.etaxonomy.cdm.hibernate.HHH_9751_Util; |
|
18 |
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; |
|
19 |
import eu.etaxonomy.cdm.model.taxon.Classification; |
|
20 |
import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode; |
|
16 |
import eu.etaxonomy.cdm.api.service.ITaxonNodeService; |
|
21 | 17 |
import eu.etaxonomy.cdm.model.taxon.TaxonNode; |
18 |
import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto; |
|
19 |
import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache; |
|
20 |
import eu.etaxonomy.taxeditor.store.CdmStore; |
|
22 | 21 |
|
23 | 22 |
/** |
24 | 23 |
* @author pplitzner |
... | ... | |
29 | 28 |
|
30 | 29 |
private static final Object[] NO_CHILDREN = new Object[0]; |
31 | 30 |
|
31 |
private ITaxonNodeService taxonNodeService; |
|
32 |
|
|
32 | 33 |
/** |
33 | 34 |
* {@inheritDoc} |
34 | 35 |
*/ |
... | ... | |
45 | 46 |
*/ |
46 | 47 |
@Override |
47 | 48 |
public Object[] getChildren(Object parentElement) { |
49 |
if (taxonNodeService == null){ |
|
50 |
taxonNodeService = CdmStore.getService(ITaxonNodeService.class); |
|
51 |
} |
|
48 | 52 |
Object[] children = null; |
49 | 53 |
|
50 |
if(parentElement instanceof Classification){ |
|
51 |
children = ((Classification) parentElement).getChildNodes().toArray(); |
|
52 |
} |
|
53 |
//taxon node |
|
54 |
if(parentElement instanceof ITaxonTreeNode){ |
|
55 |
ITaxonTreeNode treeNode = (ITaxonTreeNode) HibernateProxyHelper.deproxy(parentElement); |
|
56 |
List<TaxonNode> childrenSet = treeNode.getChildNodes(); |
|
57 |
HHH_9751_Util.removeAllNull(childrenSet); |
|
58 |
children = childrenSet.toArray(); |
|
54 |
// if(parentElement instanceof Classification){ |
|
55 |
// children = taxonNodeService.listChildNodesAsUuidAndTitleCache(((Classification)parentElement).getRootNode()).toArray(); |
|
56 |
//// children = ((Classification) parentElement).getChildNodes().toArray(); |
|
57 |
// } |
|
58 |
// //taxon node |
|
59 |
// if(parentElement instanceof ITaxonTreeNode){ |
|
60 |
// ITaxonTreeNode treeNode = (ITaxonTreeNode) HibernateProxyHelper.deproxy(parentElement); |
|
61 |
// List<TaxonNode> childrenSet = treeNode.getChildNodes(); |
|
62 |
// HHH_9751_Util.removeAllNull(childrenSet); |
|
63 |
// children = childrenSet.toArray(); |
|
64 |
// } |
|
65 |
|
|
66 |
if(parentElement instanceof TaxonNode){ |
|
67 |
children = taxonNodeService.listChildNodesAsTaxonNodeDto((TaxonNode)parentElement).toArray(); |
|
68 |
}else { |
|
69 |
children = taxonNodeService.listChildNodesAsTaxonNodeDto((UuidAndTitleCache<TaxonNode>)parentElement).toArray(); |
|
59 | 70 |
} |
71 |
|
|
60 | 72 |
return children != null ? children : NO_CHILDREN; |
61 | 73 |
} |
62 | 74 |
|
... | ... | |
65 | 77 |
*/ |
66 | 78 |
@Override |
67 | 79 |
public Object getParent(Object element) { |
68 |
if(element instanceof TaxonNode){ |
|
69 |
return ((TaxonNode) element).getParent(); |
|
80 |
if(element instanceof TaxonNodeDto){ |
|
81 |
if (((TaxonNodeDto) element).getParentUUID() != null){ |
|
82 |
TaxonNode parent = taxonNodeService.load(((TaxonNodeDto) element).getParentUUID()); |
|
83 |
return new TaxonNodeDto(parent); |
|
84 |
} |
|
70 | 85 |
} |
71 | 86 |
return null; |
72 | 87 |
} |
... | ... | |
79 | 94 |
if(element instanceof TaxonNode){ |
80 | 95 |
return ((TaxonNode) element).getCountChildren() > 0; |
81 | 96 |
} |
97 |
if (element instanceof TaxonNodeDto){ |
|
98 |
return ((TaxonNodeDto)element).getTaxonomicChildrenCount()>0; |
|
99 |
} |
|
82 | 100 |
return this.getChildren(element).length > 0; |
83 | 101 |
} |
84 | 102 |
|
Also available in: Unified diff
ref #2380: implement usage of Dto for taxon navigator