feea0619935f65f31f6911c701031f97f4c882d4
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / uses / UsesLabelProvider.java
1 /**
2 * Copyright (C) 2007 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.view.uses;
10
11 import java.util.Arrays;
12 import java.util.List;
13
14 import org.eclipse.jface.viewers.ColumnLabelProvider;
15 import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;
16 import org.eclipse.jface.viewers.StyledString;
17
18 import eu.etaxonomy.cdm.model.common.Language;
19 import eu.etaxonomy.cdm.model.common.LanguageString;
20 import eu.etaxonomy.cdm.model.description.CategoricalData;
21 import eu.etaxonomy.cdm.model.description.DescriptionBase;
22 import eu.etaxonomy.cdm.model.description.Modifier;
23 import eu.etaxonomy.cdm.model.description.StateData;
24 import eu.etaxonomy.cdm.model.description.TextData;
25 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
26 import eu.etaxonomy.taxeditor.store.CdmStore;
27 import eu.etaxonomy.taxeditor.editor.UsageTermCollection;
28
29 /**
30 * UsesLabelProvider Class
31 * @author a.theys
32 * @created mar 13, 2012
33 * @version 1.0
34 */
35 public class UsesLabelProvider extends ColumnLabelProvider implements
36 IStyledLabelProvider {
37
38 /** {@inheritDoc} */
39 public String getText(Object element) {
40 String text = "";
41
42 if (element instanceof DescriptionBase) {
43 text = ((DescriptionBase) element).getTitleCache();
44 if (text == null || text.length() == 0) {
45 text = "Use: No label provided";
46 }
47 else {
48 text = "Use: " + text;
49 }
50 }
51 else if (element instanceof CategoricalData) {
52 if (!((CategoricalData) element).getStates().isEmpty()) {
53 boolean isUseCategoryAbsent = true;
54 for (StateData statedata : ((CategoricalData) element).getStates()) {
55 if(statedata.getState() != null && statedata.getModifyingText().get(CdmStore.getDefaultLanguage()) !=null && statedata.getModifyingText().get(CdmStore.getDefaultLanguage()).getText().equals("Use Category")) {
56 text = text + statedata.getState().getTitleCache() + ";";
57 isUseCategoryAbsent = false;
58 }
59 }
60 if(isUseCategoryAbsent) {
61 text = text + UsageTermCollection.notAvailableLabel + ";";
62 }
63
64 boolean isUseSubCategoryAbsent = true;
65 for (StateData statedata : ((CategoricalData) element).getStates()) {
66 if(statedata.getState() != null && statedata.getModifyingText().get(CdmStore.getDefaultLanguage()) !=null && statedata.getModifyingText().get(CdmStore.getDefaultLanguage()).getText().equals("Use SubCategory")) {
67 text = text + statedata.getState().getTitleCache() + ";";
68 isUseSubCategoryAbsent = false;
69 }
70 }
71 if(isUseSubCategoryAbsent) {
72 text = text + UsageTermCollection.notAvailableLabel + ";";
73 }
74 }
75 else {
76 text = text + UsageTermCollection.notAvailableLabel + ";" + UsageTermCollection.notAvailableLabel + ";";
77 }
78 if (!((CategoricalData) element).getModifiers().isEmpty()) {
79 for (Modifier modifier: ((CategoricalData) element).getModifiers()){
80 modifier.getPartOf();
81 modifier.getVocabulary();
82 }
83
84 boolean isPlantPartAbsent = true;
85 for (Modifier modifier: ((CategoricalData) element).getModifiers()){
86 if(GetVocabularyType(modifier, UsageTermCollection.plantPartLabel)) {
87 text = text + modifier.getTitleCache()+ ";";
88 isPlantPartAbsent = false;
89 }
90
91 }
92 if (isPlantPartAbsent) {
93 text = text + UsageTermCollection.notAvailableLabel + ";";
94 }
95
96 boolean isHumanGroupAbsent = true;
97 for (Modifier modifier: ((CategoricalData) element).getModifiers()){
98 if(GetVocabularyType(modifier, UsageTermCollection.humanGroupLabel)) {
99 text = text + modifier.getTitleCache()+ ";";
100 isHumanGroupAbsent = false;
101 }
102 }
103 if (isHumanGroupAbsent) {
104 text = text + UsageTermCollection.notAvailableLabel + ";";
105 }
106
107 boolean isEthnicGroupAbsent = true;
108 for (Modifier modifier: ((CategoricalData) element).getModifiers()){
109 if(GetVocabularyType(modifier, UsageTermCollection.ethnicGroupLabel)) {
110 text = text + modifier.getTitleCache()+ ";";
111 isEthnicGroupAbsent = false;
112 }
113 }
114 if (isEthnicGroupAbsent) {
115 text = text + UsageTermCollection.notAvailableLabel + ";";
116 }
117
118 boolean isCountryAbsent = true;
119 for (Modifier modifier: ((CategoricalData) element).getModifiers()){
120 if(GetVocabularyType(modifier, UsageTermCollection.countryLabel)) {
121 text = text + modifier.getTitleCache()+ ";";
122 isCountryAbsent = false;
123 }
124 }
125 if (isCountryAbsent) {
126 text = text + UsageTermCollection.notAvailableLabel + ";";
127 }
128 }
129 else {
130 text = text + UsageTermCollection.notAvailableLabel + ";" + UsageTermCollection.notAvailableLabel + ";" + UsageTermCollection.notAvailableLabel + ";" + UsageTermCollection.notAvailableLabel + ";";
131 }
132
133 if (text == null || text.length() == 0) {
134 text = "No data provided";
135 }
136 else {
137 String[] textElements = text.split(";");
138 String dataportalString = textElements[0] + ";" + textElements[1] + ";" + textElements[5] + ";" + textElements[2] + ";" + textElements[3] + ";" + textElements[4] + ";" ;
139
140 ((CategoricalData)element).putModifyingText(CdmStore.getDefaultLanguage(), dataportalString);
141 }
142 return text;
143 }
144
145 else if (element instanceof TextData) {
146 List<Language> languages = Arrays.asList(new Language[]{CdmStore.getDefaultLanguage()});
147 LanguageString languageString = ((TextData) element).getPreferredLanguageString(languages);
148 text = languageString != null ? languageString.getText() : null;
149 if (text == null || text.length() == 0) {
150 text = "No data provided";
151 }
152 }
153
154 else if (element instanceof FeatureNodeContainer){
155 text = ((FeatureNodeContainer)element).getFeature().getTitleCache();
156 }
157
158 return text;
159 }
160
161 /** Function dertmining which vocabulary is the term part of
162 *
163 * @param term
164 * @param vocabularyExpected
165 * @return
166 */
167 private boolean GetVocabularyType(Modifier term, String vocabularyExpected) {
168 if ((term.getPartOf() != null) && (term.getPartOf().getTitleCache().equals(vocabularyExpected))) {
169 return true;
170 }
171 else if ((term.getVocabulary() != null) && (term.getPartOf() == null) && (term.getVocabulary().getTitleCache().equals(vocabularyExpected))) {
172 return true;
173 }
174 else if ((vocabularyExpected.equals(UsageTermCollection.ethnicGroupLabel)) && (term.getVocabulary() == null) && ((term.getPartOf() != null))) {
175 return true;
176 }
177 return false;
178 }
179
180 /** {@inheritDoc} */
181 @Override
182 public StyledString getStyledText(Object element) {
183 return new StyledString(this.getText(element),
184 StyledString.QUALIFIER_STYLER);
185 }
186
187
188
189 }