3 * Copyright (C) 2013 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
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.
10 package eu
.etaxonomy
.taxeditor
.view
.derivateSearch
;
12 import java
.util
.List
;
14 import java
.util
.UUID
;
16 import org
.eclipse
.jface
.viewers
.ColumnLabelProvider
;
17 import org
.eclipse
.jface
.viewers
.TreeNode
;
18 import org
.eclipse
.swt
.graphics
.Image
;
20 import eu
.etaxonomy
.cdm
.model
.common
.DefinedTerm
;
21 import eu
.etaxonomy
.cdm
.model
.molecular
.DnaSample
;
22 import eu
.etaxonomy
.cdm
.model
.molecular
.Sequence
;
23 import eu
.etaxonomy
.cdm
.model
.molecular
.SingleRead
;
24 import eu
.etaxonomy
.cdm
.model
.occurrence
.Collection
;
25 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivedUnit
;
26 import eu
.etaxonomy
.cdm
.model
.occurrence
.FieldUnit
;
27 import eu
.etaxonomy
.cdm
.model
.occurrence
.GatheringEvent
;
28 import eu
.etaxonomy
.cdm
.model
.occurrence
.MediaSpecimen
;
29 import eu
.etaxonomy
.cdm
.model
.occurrence
.SpecimenOrObservationBase
;
30 import eu
.etaxonomy
.cdm
.model
.occurrence
.SpecimenOrObservationType
;
31 import eu
.etaxonomy
.taxeditor
.model
.ImageResources
;
32 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
35 * Label provider for the views to show {@link SpecimenOrObservationBase}s.
37 public class DerivateLabelProvider
extends ColumnLabelProvider
{
39 private Set
<SingleRead
> multiLinkSingleReads
;
41 private static DefinedTerm photoTerm
= null;
42 private static DefinedTerm drawingTerm
= null;
43 private static DefinedTerm specimenScanTerm
= null;
45 private static void initializeTerms() {
46 List
<DefinedTerm
> preferredTerms
= CdmStore
.getTermManager().getPreferredTerms(DefinedTerm
.class);
47 for (DefinedTerm definedTerm
: preferredTerms
) {
48 if(definedTerm
.getUuid().equals(UUID
.fromString("04673952-dab1-42ff-b47a-5e847c350eaf"))){//photo
49 photoTerm
= definedTerm
;
51 else if(definedTerm
.getUuid().equals(UUID
.fromString("76204a15-098f-4afe-9e8f-fa344ee3fdbb"))){//drawing
52 drawingTerm
= definedTerm
;
54 else if(definedTerm
.getUuid().equals(UUID
.fromString("c0b127d6-c849-48f9-bbc3-29e3337c1d03"))){//cover TODO temporary until new term is created
55 specimenScanTerm
= definedTerm
;
60 public static DefinedTerm
getLivingPlantPhotoTerm(){
67 public static DefinedTerm
getArtworkTerm(){
68 if(drawingTerm
==null){
74 public static DefinedTerm
getSpecimenScanTerm(){
75 if(specimenScanTerm
==null){
78 return specimenScanTerm
;
84 public String
getText(Object element
) {
85 return getDerivateText(element
);
90 public String
getToolTipText(Object element
) {
91 return getDerivateText(element
);
99 public static String
getDerivateText(Object element
){
100 TreeNode parentNode
= null;
101 if(element
instanceof TreeNode
){
102 parentNode
= ((TreeNode
) element
).getParent();
103 //unwrap specimen from TreeNode
104 element
= ((TreeNode
) element
).getValue();
108 if(element
instanceof FieldUnit
){
109 FieldUnit fieldUnit
= (FieldUnit
)element
;
110 GatheringEvent gatheringEvent
= fieldUnit
.getGatheringEvent();
111 if(gatheringEvent
!=null){
112 label
+= gatheringEvent
.getCountry()!=null?gatheringEvent
.getCountry().getLabel()+", ":"";
113 label
+= gatheringEvent
.getLocality()!=null?gatheringEvent
.getLocality().getText()+", ":"";
114 // label += gatheringEvent.getGatheringDate()!=null?gatheringEvent.getGatheringDate()+", ":"";
115 label
+= gatheringEvent
.getCollector()!=null?gatheringEvent
.getCollector()+", ":"";
117 label
+= fieldUnit
.getFieldNumber()!=null?fieldUnit
.getFieldNumber():"";
119 else if(element
instanceof DerivedUnit
){
120 DerivedUnit derivedUnit
= (DerivedUnit
)element
;
121 if(derivedUnit
.getRecordBasis()==SpecimenOrObservationType
.PreservedSpecimen
){
122 if(parentNode
!=null && parentNode
.getValue() instanceof FieldUnit
){
123 FieldUnit fieldUnit
= (FieldUnit
) parentNode
.getValue();
124 GatheringEvent gatheringEvent
= fieldUnit
.getGatheringEvent();
125 if(gatheringEvent
!=null){
126 label
+= gatheringEvent
.getCollector()!=null?gatheringEvent
.getCollector()+", ":"";
128 label
+= fieldUnit
.getFieldNumber()!=null?fieldUnit
.getFieldNumber()+", ":"";
130 Collection collection
= derivedUnit
.getCollection();
131 if(collection
!=null){
132 label
+= collection
.getName()!=null?collection
.getName()+" ":"";
133 label
+= collection
.getCode()!=null?
"("+collection
.getCode()+"), ":"";
135 label
+= derivedUnit
.getAccessionNumber()!=null?derivedUnit
.getAccessionNumber()+", ":"";
136 label
+= derivedUnit
.getBarcode()!=null?derivedUnit
.getBarcode():"";
138 else if(derivedUnit
.getRecordBasis()==SpecimenOrObservationType
.TissueSample
){
142 else if(element
instanceof MediaSpecimen
){
143 MediaSpecimen mediaSpecimen
= (MediaSpecimen
)element
;
145 label
+= element
.toString();
147 else if(element
instanceof DnaSample
148 || (element
instanceof DerivedUnit
149 && ((SpecimenOrObservationBase
<?
>) element
).getRecordBasis()==SpecimenOrObservationType
.DnaSample
)){
151 label
+= element
.toString();
154 else if(element
instanceof Sequence
){
155 Sequence sequence
= (Sequence
)element
;
156 label
+= "SampleDesignation?"+", ";
157 label
+= sequence
.getDnaMarker()!=null?sequence
.getDnaMarker():"";
159 else if(element
instanceof SingleRead
){
160 SingleRead singleRead
= (SingleRead
)element
;
161 label
+= singleRead
.getPrimer()!=null?singleRead
.getPrimer().getLabel()+", ":"";
164 else if(element
instanceof SpecimenOrObservationBase
){
165 SpecimenOrObservationBase
<?
> derivate
= (SpecimenOrObservationBase
<?
>) element
;
166 SpecimenOrObservationType type
= derivate
.getRecordBasis();
167 return derivate
.getTitleCache() + (type
!=null?
" ["+type
.toString()+"]":"");
170 label
= element
.toString();
172 else if(label
.endsWith(", ")){
173 label
= label
.substring(0, label
.length()-2);
179 * @see org.eclipse.jface.viewers.ColumnLabelProvider#getImage(java.lang.Object)
182 public Image
getImage(Object element
) {
183 if(element
instanceof TreeNode
){
184 element
= ((TreeNode
) element
).getValue();
186 if(element
instanceof FieldUnit
){
187 return ImageResources
.getImage(ImageResources
.FIELD_UNIT
);
189 else if(element
instanceof DerivedUnit
){
190 DerivedUnit derivedUnit
= (DerivedUnit
)element
;
191 if(derivedUnit
.getRecordBasis()==SpecimenOrObservationType
.FieldUnit
){
192 return ImageResources
.getImage(ImageResources
.FIELD_UNIT
);
194 else if(derivedUnit
.getRecordBasis()==SpecimenOrObservationType
.DnaSample
){
195 return ImageResources
.getImage(ImageResources
.DNA_SAMPLE_DERIVATE
);
197 else if(derivedUnit
.getRecordBasis()==SpecimenOrObservationType
.TissueSample
){
198 return ImageResources
.getImage(ImageResources
.TISSUE_SAMPLE_DERIVATE
);
200 else if(derivedUnit
.getRecordBasis()==SpecimenOrObservationType
.PreservedSpecimen
){
201 return ImageResources
.getImage(ImageResources
.SPECIMEN_DERIVATE
);
203 else if(derivedUnit
.getRecordBasis()==SpecimenOrObservationType
.StillImage
){
204 if(derivedUnit
.getKindOfUnit()!=null){
205 if(derivedUnit
.getKindOfUnit().equals(getArtworkTerm())){
206 return ImageResources
.getImage(ImageResources
.ARTWORK_DERIVATE
);
208 else if(derivedUnit
.getKindOfUnit().equals(getLivingPlantPhotoTerm())){
209 return ImageResources
.getImage(ImageResources
.LIVING_PLANT_PHOTO_DERIVATE
);
211 else if(derivedUnit
.getKindOfUnit().equals(getSpecimenScanTerm())){
212 return ImageResources
.getImage(ImageResources
.SPECIMEN_SCAN_DERIVATE
);
217 else if(element
instanceof Sequence
){
218 return ImageResources
.getImage(ImageResources
.SEQUENCE_DERIVATE
);
221 else if(element
instanceof SingleRead
){
222 if(multiLinkSingleReads
.contains(element
)){
223 return ImageResources
.getImage(ImageResources
.SINGLE_READ_DERIVATE_MULTILINK
);
226 return ImageResources
.getImage(ImageResources
.SINGLE_READ_DERIVATE
);
229 return super.getImage(element
);
233 * @param multiLinkSingleReads2
235 public void setMultiLinkSingleReads(Set
<SingleRead
> multiLinkSingleReads
) {
236 this.multiLinkSingleReads
= multiLinkSingleReads
;