- implemented derivate specific textual representation in DerivateView
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / view / derivateSearch / DerivateLabelProvider.java
1 // $Id$
2 /**
3 * Copyright (C) 2013 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.view.derivateSearch;
11
12 import java.util.Set;
13
14 import org.eclipse.jface.viewers.ColumnLabelProvider;
15 import org.eclipse.jface.viewers.TreeNode;
16 import org.eclipse.swt.graphics.Image;
17
18 import eu.etaxonomy.cdm.model.molecular.DnaSample;
19 import eu.etaxonomy.cdm.model.molecular.Sequence;
20 import eu.etaxonomy.cdm.model.molecular.SingleRead;
21 import eu.etaxonomy.cdm.model.occurrence.Collection;
22 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
23 import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
24 import eu.etaxonomy.cdm.model.occurrence.GatheringEvent;
25 import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
26 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
27 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
28 import eu.etaxonomy.taxeditor.model.ImageResources;
29
30 /**
31 * Label provider for the views to show {@link SpecimenOrObservationBase}s.
32 */
33 public class DerivateLabelProvider extends ColumnLabelProvider {
34
35 private Set<SingleRead> multiLinkSingleReads;
36
37 /** {@inheritDoc} */
38 @Override
39 public String getText(Object element) {
40 return getDerivateText(element);
41 }
42
43 /** {@inheritDoc} */
44 @Override
45 public String getToolTipText(Object element) {
46 return getDerivateText(element);
47 }
48
49 /**
50 *
51 * @param element
52 * @return
53 */
54 public static String getDerivateText(Object element){
55 TreeNode parentNode = null;
56 if(element instanceof TreeNode){
57 parentNode = ((TreeNode) element).getParent();
58 //unwrap specimen from TreeNode
59 element = ((TreeNode) element).getValue();
60 }
61
62 String label = "";
63 if(element instanceof FieldUnit){
64 FieldUnit fieldUnit = (FieldUnit)element;
65 GatheringEvent gatheringEvent = fieldUnit.getGatheringEvent();
66 if(gatheringEvent!=null){
67 label += gatheringEvent.getCountry()!=null?gatheringEvent.getCountry().getLabel()+", ":"";
68 label += gatheringEvent.getLocality()!=null?gatheringEvent.getLocality().getText()+", ":"";
69 // label += gatheringEvent.getGatheringDate()!=null?gatheringEvent.getGatheringDate()+", ":"";
70 label += gatheringEvent.getCollector()!=null?gatheringEvent.getCollector()+", ":"";
71 }
72 label += fieldUnit.getFieldNumber()!=null?fieldUnit.getFieldNumber():"";
73 }
74 else if(element instanceof DerivedUnit){
75 DerivedUnit derivedUnit = (DerivedUnit)element;
76 if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.PreservedSpecimen){
77 if(parentNode!=null && parentNode.getValue() instanceof FieldUnit){
78 FieldUnit fieldUnit = (FieldUnit) parentNode.getValue();
79 GatheringEvent gatheringEvent = fieldUnit.getGatheringEvent();
80 if(gatheringEvent!=null){
81 label += gatheringEvent.getCollector()!=null?gatheringEvent.getCollector()+", ":"";
82 }
83 label += fieldUnit.getFieldNumber()!=null?fieldUnit.getFieldNumber()+", ":"";
84 }
85 Collection collection = derivedUnit.getCollection();
86 if(collection!=null){
87 label += collection.getName()!=null?collection.getName()+" ":"";
88 label += collection.getCode()!=null?"("+collection.getCode()+"), ":"";
89 }
90 label += derivedUnit.getAccessionNumber()!=null?derivedUnit.getAccessionNumber()+", ":"";
91 label += derivedUnit.getBarcode()!=null?derivedUnit.getBarcode():"";
92 }
93 else if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.TissueSample){
94
95 }
96 }
97 else if(element instanceof MediaSpecimen){
98 MediaSpecimen mediaSpecimen = (MediaSpecimen)element;
99 //TODO implement
100 label += element.toString();
101 }
102 else if(element instanceof DnaSample
103 || (element instanceof DerivedUnit
104 && ((SpecimenOrObservationBase<?>) element).getRecordBasis()==SpecimenOrObservationType.DnaSample)){
105 //TODO implement
106 label += element.toString();
107
108 }
109 else if(element instanceof Sequence){
110 Sequence sequence = (Sequence)element;
111 label += "SampleDesignation?"+", ";
112 label += sequence.getDnaMarker()!=null?sequence.getDnaMarker():"";
113 }
114 else if(element instanceof SingleRead){
115 SingleRead singleRead = (SingleRead)element;
116 label += singleRead.getPrimer()!=null?singleRead.getPrimer().getLabel()+", ":"";
117 label += "Marker?";
118 }
119 else if(element instanceof SpecimenOrObservationBase){
120 SpecimenOrObservationBase<?> derivate = (SpecimenOrObservationBase<?>) element;
121 SpecimenOrObservationType type = derivate.getRecordBasis();
122 return derivate.getTitleCache() + (type!=null?" ["+type.toString()+"]":"");
123 }
124 if(label.isEmpty()){
125 label = element.toString();
126 }
127 else if(label.endsWith(", ")){
128 label = label.substring(0, label.length()-2);
129 }
130 return label;
131 }
132
133 /* (non-Javadoc)
134 * @see org.eclipse.jface.viewers.ColumnLabelProvider#getImage(java.lang.Object)
135 */
136 @Override
137 public Image getImage(Object element) {
138 if(element instanceof TreeNode){
139 element = ((TreeNode) element).getValue();
140 }
141 if(element instanceof FieldUnit){
142 return ImageResources.getImage(ImageResources.FIELD_UNIT);
143 }
144 else if(element instanceof DerivedUnit){
145 DerivedUnit derivedUnit = (DerivedUnit)element;
146 if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.FieldUnit){
147 return ImageResources.getImage(ImageResources.FIELD_UNIT);
148 }
149 else if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.DnaSample){
150 return ImageResources.getImage(ImageResources.DNA_SAMPLE_DERIVATE);
151 }
152 else if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.TissueSample){
153 return ImageResources.getImage(ImageResources.TISSUE_SAMPLE_DERIVATE);
154 }
155 else if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.PreservedSpecimen){
156 return ImageResources.getImage(ImageResources.SPECIMEN_DERIVATE);
157 }
158 else if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.StillImage){
159 return ImageResources.getImage(ImageResources.ARTWORK_DERIVATE);
160 }
161 }
162 else if(element instanceof Sequence){
163 return ImageResources.getImage(ImageResources.SEQUENCE_DERIVATE);
164 }
165
166 else if(element instanceof SingleRead){
167 if(multiLinkSingleReads.contains(element)){
168 return ImageResources.getImage(ImageResources.SINGLE_READ_DERIVATE_MULTILINK);
169 }
170 else{
171 return ImageResources.getImage(ImageResources.SINGLE_READ_DERIVATE);
172 }
173 }
174 return super.getImage(element);
175 }
176
177 /**
178 * @param multiLinkSingleReads2
179 */
180 public void setMultiLinkSingleReads(Set<SingleRead> multiLinkSingleReads) {
181 this.multiLinkSingleReads = multiLinkSingleReads;
182 }
183
184 }