Project

General

Profile

« Previous | Next » 

Revision 1c9c9562

Added by Patrick Plitzner almost 7 years ago

ref #6762 Implement option to add kindOf related terms in term editor

View differences:

eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/TermContentProvider.java
1 1
/**
2 2
* Copyright (C) 2009 EDIT
3
* European Distributed Institute of Taxonomy 
3
* European Distributed Institute of Taxonomy
4 4
* http://www.e-taxonomy.eu
5
* 
5
*
6 6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7 7
* See LICENSE.TXT at the top of this package for the full license terms.
8 8
*/
......
50 50
	 */
51 51
	@Override
52 52
	public Object[] getElements(Object inputElement) {
53
	
53

  
54 54
		Collection<TermVocabulary> inputElements = (Collection<TermVocabulary>) inputElement;
55 55
		return inputElements.toArray();
56 56

  
......
61 61
	 */
62 62
	@Override
63 63
	public Object[] getChildren(Object parentElement) {
64
		
65
		if(parentElement instanceof TermVocabulary){			
64

  
65
		if(parentElement instanceof TermVocabulary){
66 66
			return getTopLevelElements((TermVocabulary)parentElement);
67 67
		} else if (parentElement instanceof DefinedTermBase) {
68
			return ((DefinedTermBase) parentElement).getIncludes().toArray();
68
			Set<Object> includes = ((DefinedTermBase) parentElement).getIncludes();
69
			Set<Object> generalizationOfs = ((DefinedTermBase) parentElement).getGeneralizationOf();
70
			generalizationOfs.addAll(includes);
71
            return generalizationOfs.toArray();
69 72
		}
70 73
		return null;
71 74
	}
72
	
75

  
73 76
	/**
74
	 *  
77
	 *
75 78
	 * @param vocabulary
76 79
	 * @return An array of DefinedTermBase objects that do not have parents
77
	 * 
80
	 *
78 81
	 * TODO: Needs to be implemented in cdmlib
79 82
	 */
80 83
	private Object[] getTopLevelElements(TermVocabulary vocabulary) {
81
		
84

  
82 85
		SortedSet<DefinedTermBase> terms = vocabulary.getTermsOrderedByLabels(CdmStore.getDefaultLanguage());
83
		Set<DefinedTermBase> topLevelTerms = new HashSet<DefinedTermBase>(); 
84
	 
86
		Set<DefinedTermBase> topLevelTerms = new HashSet<DefinedTermBase>();
87

  
85 88
		for (DefinedTermBase term : terms){
86
			 if (term.getPartOf() == null){
89
			 if (term.getPartOf() == null && term.getKindOf() == null){
87 90
				 topLevelTerms.add(term);
88
			 }				
89
		}	 
91
			 }
92
		}
90 93
	 	return topLevelTerms.toArray();
91 94
	}
92 95

  
......
98 101

  
99 102
		if(element instanceof DefinedTermBase){
100 103
			DefinedTermBase definedTermBase = (DefinedTermBase)element;
101
			if (definedTermBase.getPartOf() == null) {
102
				return definedTermBase.getVocabulary();
103
			} else {
104
				return definedTermBase.getPartOf();
105
			}			
104
			if (definedTermBase.getPartOf() != null) {
105
			    return definedTermBase.getPartOf();
106
			}else if (definedTermBase.getKindOf() != null) {
107
                return definedTermBase.getKindOf();
108
            } else {
109
			    return definedTermBase.getVocabulary();
110
			}
106 111
		}
107 112
		return null;
108 113

  
......
112 117
	 * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
113 118
	 */
114 119
	@Override
115
	public boolean hasChildren(Object element) {		
116
		if (getChildren(element) != null){			
120
	public boolean hasChildren(Object element) {
121
		if (getChildren(element) != null){
117 122
			return getChildren(element).length > 0;
118 123
		}
119 124
		return false;

Also available in: Unified diff