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