0ae5336b38e01875faa6eaa9678eb600bfc49587
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / checklist / ChecklistLabelProvider.java
1 // $Id$
2 /**
3 * Copyright (C) 2007 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
11 package eu.etaxonomy.taxeditor.editor.view.checklist;
12
13 import java.util.ArrayList;
14 import java.util.Arrays;
15 import java.util.List;
16 import java.util.SortedSet;
17 import java.util.TreeSet;
18 import java.util.UUID;
19
20 import org.eclipse.jface.preference.IPreferenceStore;
21 import org.eclipse.jface.viewers.ITableLabelProvider;
22 import org.eclipse.jface.viewers.LabelProvider;
23 import org.eclipse.jface.viewers.TableViewer;
24 import org.eclipse.swt.graphics.Image;
25 import org.eclipse.swt.widgets.TableColumn;
26
27 import eu.etaxonomy.cdm.api.service.IDescriptionService;
28 import eu.etaxonomy.cdm.api.service.ITermService;
29 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
30 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
31 import eu.etaxonomy.cdm.model.common.Language;
32 import eu.etaxonomy.cdm.model.common.TermLanguageComparator;
33 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
34 import eu.etaxonomy.cdm.model.description.Distribution;
35 import eu.etaxonomy.cdm.model.description.TaxonDescription;
36 import eu.etaxonomy.cdm.model.name.NonViralName;
37 import eu.etaxonomy.cdm.model.taxon.Taxon;
38 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
39 import eu.etaxonomy.taxeditor.store.CdmStore;
40
41 /**
42 *
43 * @author a.oppermann
44 * @created 30.04.2014
45 * @version 1.0
46 */
47 public class ChecklistLabelProvider extends LabelProvider implements ITableLabelProvider {
48
49 public static final String DEFAULT_ENTRY = "";
50 private IDescriptionService descriptionService;
51 private final List<DefinedTermBase<?>> namedAreas;
52 TableViewer viewer = null;
53
54 /**
55 *
56 */
57 public ChecklistLabelProvider() {
58 namedAreas = loadNamedAreas();
59 }
60
61 public ChecklistLabelProvider(TableViewer viewer) {
62 namedAreas = loadNamedAreas();
63 this.viewer = viewer;
64 }
65
66 /*
67 * (non-Javadoc)
68 *
69 * @see
70 * org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang
71 * .Object, int)
72 */
73 /** {@inheritDoc} */
74 @Override
75 public Image getColumnImage(Object element, int columnIndex) {
76 // TODO
77 return null;
78 }
79
80 /*
81 * (non-Javadoc)
82 *
83 * @see
84 * org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang
85 * .Object, int)
86 */
87 /** {@inheritDoc} */
88 @Override
89 public String getColumnText(Object element, int columnIndex) {
90 descriptionService = CdmStore.getService(IDescriptionService.class);
91 Taxon taxon = (Taxon) element;
92 //TODO load areas by this list
93
94 List<TaxonDescription> listTaxonDescriptions = descriptionService.listTaxonDescriptions(taxon, null, null, null, null, null, DESC_INIT_STRATEGY);;
95 NonViralName<?> nonVirlaName = HibernateProxyHelper.deproxy(taxon.getName(), NonViralName.class);
96
97 switch (columnIndex) {
98 case 0:
99 String taxonName = null;
100 taxonName = (nonVirlaName != null) ? nonVirlaName.getNameCache() : null;
101 return (taxonName != null) ? taxonName : DEFAULT_ENTRY;
102
103 case 1:
104 String authorship = null;
105 authorship = (nonVirlaName != null) ? nonVirlaName.getAuthorshipCache() : null;
106 return (authorship != null) ? authorship : DEFAULT_ENTRY;
107 // case 2:
108 // String ref = null;
109 // if (taxon.getName() != null) {
110 // INomenclaturalReference nomenclaturalReference = HibernateProxyHelper.deproxy(
111 // nonVirlaName.getNomenclaturalReference(), Reference.class);
112 // ref = (nomenclaturalReference != null) ? nomenclaturalReference.getAbbrevTitleCache() : null;
113 // }
114 // return (ref != null) ? ref : DEFAULT_ENTRY;
115 case 2:
116 String rank = null;
117 if (taxon.getName().getRank() != null) {
118 rank = taxon.getName().getRank().toString();
119 }
120 return (rank != null) ? rank : DEFAULT_ENTRY;
121 }
122
123 if(columnIndex >2){
124
125 for (TaxonDescription td : listTaxonDescriptions) {
126 for (DescriptionElementBase deb : td.getElements()) {
127 if (deb instanceof Distribution) {
128 Distribution distribution = (Distribution) deb;
129 String area = distribution.toString();
130 if(viewer != null){
131 TableColumn column = viewer.getTable().getColumn(columnIndex);
132 if (area.equalsIgnoreCase(column.getText())) {
133 return (distribution.getStatus().getTitleCache() != null)?distribution.getStatus().getTitleCache():DEFAULT_ENTRY;
134 }
135 }
136 }
137 }
138 }
139 }
140 return DEFAULT_ENTRY;
141
142 }
143
144 private static final List<String> DESC_INIT_STRATEGY = Arrays.asList(new String[] { "descriptions",
145 "descriptions.*", "description.state" });
146
147
148 private List<DefinedTermBase<?>> loadNamedAreas() {
149 IPreferenceStore preferenceStore = PreferencesUtil.getPreferenceStore();
150 String values = preferenceStore.getString(PreferencesUtil.DISTRIBUTION_AREA_OCCURENCE_STATUS);
151 if (values != null && values != "") {
152 String[] split = values.split(",");
153 List<String> listValue = Arrays.asList(split);
154 ArrayList<DefinedTermBase<?>> termlist = new ArrayList<DefinedTermBase<?>>();
155 for(String s : listValue){
156 UUID uuid = UUID.fromString(s);
157 ITermService service = CdmStore.getService(ITermService.class);
158 DefinedTermBase definedTermBase = service.load(uuid);
159 termlist.add(definedTermBase);
160 }
161 return termlist;
162 }
163 return null;
164 }
165
166 public SortedSet<?> getTermsOrderedByLabels(List<DefinedTermBase<?>> listTerm,Language language){
167 TermLanguageComparator comp = new TermLanguageComparator();
168 comp.setCompareLanguage(language);
169 SortedSet result = new TreeSet(comp);
170 if(listTerm != null){
171 result.addAll(listTerm);
172 }
173 return result;
174 }
175
176 /**
177 * @return the namedAreas
178 */
179 public List<DefinedTermBase<?>> getNamedAreas() {
180 return namedAreas;
181 }
182 }