merge-update from trunk
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / editor / definedterm / TermContentProvider.java
1 // $Id$
2 /**
3 * Copyright (C) 2009 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10 package eu.etaxonomy.taxeditor.editor.definedterm;
11
12 import java.util.Collection;
13 import java.util.HashSet;
14 import java.util.Set;
15 import java.util.SortedSet;
16
17 import org.eclipse.jface.viewers.ITreeContentProvider;
18 import org.eclipse.jface.viewers.Viewer;
19
20 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
21 import eu.etaxonomy.cdm.model.common.TermVocabulary;
22 import eu.etaxonomy.taxeditor.store.CdmStore;
23
24 /**
25 * @author l.morris
26 * @date 8 Dec 2011
27 *
28 */
29 public class TermContentProvider implements ITreeContentProvider {
30
31 /* (non-Javadoc)
32 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
33 */
34 @Override
35 public void dispose() {
36 // TODO Auto-generated method stub
37
38 }
39
40 /* (non-Javadoc)
41 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
42 */
43 @Override
44 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
45 // TODO Auto-generated method stub
46
47 }
48
49 /* (non-Javadoc)
50 * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
51 */
52 @Override
53 public Object[] getElements(Object inputElement) {
54
55 Collection<TermVocabulary> inputElements = (Collection<TermVocabulary>) inputElement;
56 return inputElements.toArray();
57
58 }
59
60 /* (non-Javadoc)
61 * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
62 */
63 @Override
64 public Object[] getChildren(Object parentElement) {
65
66 if(parentElement instanceof TermVocabulary){
67 return getTopLevelElements((TermVocabulary)parentElement);
68 } else if (parentElement instanceof DefinedTermBase) {
69 return ((DefinedTermBase) parentElement).getIncludes().toArray();
70 }
71 return null;
72 }
73
74 /**
75 *
76 * @param vocabulary
77 * @return An array of DefinedTermBase objects that do not have parents
78 *
79 * TODO: Needs to be implemented in cdmlib
80 */
81 private Object[] getTopLevelElements(TermVocabulary vocabulary) {
82
83 SortedSet<DefinedTermBase> terms = vocabulary.getTermsOrderedByLabels(CdmStore.getDefaultLanguage());
84 Set<DefinedTermBase> topLevelTerms = new HashSet<DefinedTermBase>();
85
86 for (DefinedTermBase term : terms){
87 if (term.getPartOf() == null){
88 topLevelTerms.add(term);
89 }
90 }
91 return topLevelTerms.toArray();
92 }
93
94 /* (non-Javadoc)
95 * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
96 */
97 @Override
98 public Object getParent(Object element) {
99
100 if(element instanceof DefinedTermBase){
101 DefinedTermBase definedTermBase = (DefinedTermBase)element;
102 if (definedTermBase.getPartOf() == null) {
103 return definedTermBase.getVocabulary();
104 } else {
105 return definedTermBase.getPartOf();
106 }
107 }
108 return null;
109
110 }
111
112 /* (non-Javadoc)
113 * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
114 */
115 @Override
116 public boolean hasChildren(Object element) {
117 if (getChildren(element) != null){
118 return getChildren(element).length > 0;
119 }
120 return false;
121 }
122
123 }