From e12b4c33782c314703474f0451e520f9264ae0b4 Mon Sep 17 00:00:00 2001
From: Patric Plitzner
Date: Tue, 3 Jun 2014 14:35:46 +0000
Subject: [PATCH] - implemented derivate specific textual representation in
DerivateView
---
.../editor/view/derivate/DerivateView.java | 2 +-
.../derivateSearch/DerivateLabelProvider.java | 82 ++++++++++++++++++-
2 files changed, 80 insertions(+), 4 deletions(-)
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java
index 2745a94d1..ff919dfca 100644
--- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java
+++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java
@@ -106,7 +106,7 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
if(editorInput instanceof DerivateViewEditorInput){
SpecimenOrObservationBase> specimen = ((DerivateViewEditorInput) editorInput).getDerivate();
SpecimenOrObservationBase> rootElement = ((DerivateViewEditorInput) editorInput).getRootElement();
- setPartName(rootElement.toString());
+ setPartName(DerivateLabelProvider.getDerivateText(rootElement));
viewer.setSelection(new StructuredSelection(new TreeNode(specimen)));
}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java
index e59473a89..0ef56d87e 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java
@@ -15,10 +15,14 @@ import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.TreeNode;
import org.eclipse.swt.graphics.Image;
+import eu.etaxonomy.cdm.model.molecular.DnaSample;
import eu.etaxonomy.cdm.model.molecular.Sequence;
import eu.etaxonomy.cdm.model.molecular.SingleRead;
+import eu.etaxonomy.cdm.model.occurrence.Collection;
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
+import eu.etaxonomy.cdm.model.occurrence.GatheringEvent;
+import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
import eu.etaxonomy.taxeditor.model.ImageResources;
@@ -42,16 +46,88 @@ public class DerivateLabelProvider extends ColumnLabelProvider {
return getDerivateText(element);
}
- private String getDerivateText(Object element){
+ /**
+ *
+ * @param element
+ * @return
+ */
+ public static String getDerivateText(Object element){
+ TreeNode parentNode = null;
if(element instanceof TreeNode){
+ parentNode = ((TreeNode) element).getParent();
+ //unwrap specimen from TreeNode
element = ((TreeNode) element).getValue();
}
- if(element instanceof SpecimenOrObservationBase){
+
+ String label = "";
+ if(element instanceof FieldUnit){
+ FieldUnit fieldUnit = (FieldUnit)element;
+ GatheringEvent gatheringEvent = fieldUnit.getGatheringEvent();
+ if(gatheringEvent!=null){
+ label += gatheringEvent.getCountry()!=null?gatheringEvent.getCountry().getLabel()+", ":"";
+ label += gatheringEvent.getLocality()!=null?gatheringEvent.getLocality().getText()+", ":"";
+// label += gatheringEvent.getGatheringDate()!=null?gatheringEvent.getGatheringDate()+", ":"";
+ label += gatheringEvent.getCollector()!=null?gatheringEvent.getCollector()+", ":"";
+ }
+ label += fieldUnit.getFieldNumber()!=null?fieldUnit.getFieldNumber():"";
+ }
+ else if(element instanceof DerivedUnit){
+ DerivedUnit derivedUnit = (DerivedUnit)element;
+ if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.PreservedSpecimen){
+ if(parentNode!=null && parentNode.getValue() instanceof FieldUnit){
+ FieldUnit fieldUnit = (FieldUnit) parentNode.getValue();
+ GatheringEvent gatheringEvent = fieldUnit.getGatheringEvent();
+ if(gatheringEvent!=null){
+ label += gatheringEvent.getCollector()!=null?gatheringEvent.getCollector()+", ":"";
+ }
+ label += fieldUnit.getFieldNumber()!=null?fieldUnit.getFieldNumber()+", ":"";
+ }
+ Collection collection = derivedUnit.getCollection();
+ if(collection!=null){
+ label += collection.getName()!=null?collection.getName()+" ":"";
+ label += collection.getCode()!=null?"("+collection.getCode()+"), ":"";
+ }
+ label += derivedUnit.getAccessionNumber()!=null?derivedUnit.getAccessionNumber()+", ":"";
+ label += derivedUnit.getBarcode()!=null?derivedUnit.getBarcode():"";
+ }
+ else if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.TissueSample){
+
+ }
+ }
+ else if(element instanceof MediaSpecimen){
+ MediaSpecimen mediaSpecimen = (MediaSpecimen)element;
+ //TODO implement
+ label += element.toString();
+ }
+ else if(element instanceof DnaSample
+ || (element instanceof DerivedUnit
+ && ((SpecimenOrObservationBase>) element).getRecordBasis()==SpecimenOrObservationType.DnaSample)){
+ //TODO implement
+ label += element.toString();
+
+ }
+ else if(element instanceof Sequence){
+ Sequence sequence = (Sequence)element;
+ label += "SampleDesignation?"+", ";
+ label += sequence.getDnaMarker()!=null?sequence.getDnaMarker():"";
+ }
+ else if(element instanceof SingleRead){
+ SingleRead singleRead = (SingleRead)element;
+ label += singleRead.getPrimer()!=null?singleRead.getPrimer().getLabel()+", ":"";
+ label += "Marker?";
+ }
+ else if(element instanceof SpecimenOrObservationBase){
SpecimenOrObservationBase> derivate = (SpecimenOrObservationBase>) element;
SpecimenOrObservationType type = derivate.getRecordBasis();
return derivate.getTitleCache() + (type!=null?" ["+type.toString()+"]":"");
}
- return element.toString();
+ if(label.isEmpty()){
+ label = element.toString();
+ }
+ else if(label.endsWith(", ")){
+ label = label.substring(0, label.length()-2);
+ }
+ return label;
}
/* (non-Javadoc)
--
2.34.1