- partially added handling of input fields
authorPatric Plitzner <p.plitzner@bgbm.org>
Mon, 7 Apr 2014 09:42:22 +0000 (09:42 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Mon, 7 Apr 2014 09:42:22 +0000 (09:42 +0000)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/TissueSampleGeneralDetailElement.java

index 9f145d3b7a7e6a055c97193051dc2011689ba895..2cdda7125fdb43384d7bd85d0530da1622c76386 100644 (file)
@@ -9,9 +9,17 @@
 */
 package eu.etaxonomy.taxeditor.ui.section.occurrence.dna;
 
+import org.apache.log4j.Logger;
+
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.cdm.api.facade.MethodNotSupportedByDerivedUnitTypeException;
 import eu.etaxonomy.cdm.model.agent.AgentBase;
+import eu.etaxonomy.cdm.model.common.DefinedTerm;
+import eu.etaxonomy.cdm.model.common.TimePeriod;
 import eu.etaxonomy.cdm.model.occurrence.Collection;
+import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
@@ -26,11 +34,13 @@ import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
  */
 public class TissueSampleGeneralDetailElement extends AbstractCdmDetailElement<DerivedUnitFacade> {
 
+    static private final Logger logger = Logger.getLogger(TissueSampleGeneralDetailElement.class);
+
     //title cache
     //sample designation
     private TimePeriodElement datePreparation;
     private EntitySelectionElement<AgentBase> selectionPreparedBy;
-    private TextWithLabelElement textPreservationMedium;
+    private TermComboElement<DefinedTerm> comboPreservationMedium;
     private TimePeriodElement datePreservation;
     private EntitySelectionElement<AgentBase> selectionStoredAt;
     private EntitySelectionElement<Collection> selectionCollection;
@@ -55,14 +65,26 @@ public class TissueSampleGeneralDetailElement extends AbstractCdmDetailElement<D
      */
     @Override
     protected void createControls(ICdmFormElement formElement, DerivedUnitFacade entity, int style) {
+        //FIXME handle all parameters here and in handleEvent()
         datePreparation = formFactory.createTimePeriodElement(formElement, "Preparation date", null, style);
         selectionPreparedBy = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), formElement, "Prepared By", null, EntitySelectionElement.ALL, style);
-        textPreservationMedium = formFactory.createTextWithLabelElement(formElement, "Preservation medium", null, style);
-        datePreservation = formFactory.createTimePeriodElement(formElement, "Preservation date", null, style);
+        TimePeriod preservationDate = null;
+        DefinedTerm preservationMedium = null;
+        try {
+            if(entity.getPreservationMethod()!=null){
+                preservationDate = entity.getPreservationMethod().getTimeperiod();
+                preservationMedium = entity.getPreservationMethod().getMedium();
+            }
+        } catch (MethodNotSupportedByDerivedUnitTypeException e) {
+            // we ignore this
+            AbstractUtility.info(e.getMessage());
+        }
+        comboPreservationMedium = formFactory.createTermComboElement(DefinedTerm.class, formElement, "Preservation medium", preservationMedium, style);
+        datePreservation = formFactory.createTimePeriodElement(formElement, "Preservation date", preservationDate, style);
         selectionStoredAt = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), formElement, "Stored at", null, EntitySelectionElement.ALL, style);
-        selectionCollection = formFactory.createSelectionElement(Collection.class, getConversationHolder(), formElement, "Collection", null, EntitySelectionElement.ALL, style);
-        textAccessionNumber = formFactory.createTextWithLabelElement(formElement, "Accession Number", null, style);
-        textBarcode = formFactory.createTextWithLabelElement(formElement, "Barcode", null, style);
+        selectionCollection = formFactory.createSelectionElement(Collection.class, getConversationHolder(), formElement, "Collection", entity.getCollection(), EntitySelectionElement.ALL, style);
+        textAccessionNumber = formFactory.createTextWithLabelElement(formElement, "Accession Number", entity.getAccessionNumber(), style);
+        textBarcode = formFactory.createTextWithLabelElement(formElement, "Barcode", entity.getBarcode(), style);
 
     }
 
@@ -75,6 +97,35 @@ public class TissueSampleGeneralDetailElement extends AbstractCdmDetailElement<D
      */
     @Override
     public void handleEvent(Object eventSource) {
-    }
+        try {
+            if (eventSource==comboPreservationMedium) {
+                PreservationMethod preservationMethod = getEntity().getPreservationMethod();
+                if(preservationMethod==null){
+                    preservationMethod = PreservationMethod.NewInstance();
+                    getEntity().setPreservationMethod(preservationMethod);
+                }
+                preservationMethod.setMedium(comboPreservationMedium.getSelection());
+            }
+            else if (eventSource==datePreservation) {
+                PreservationMethod preservationMethod = getEntity().getPreservationMethod();
+                if(preservationMethod==null){
+                    preservationMethod = PreservationMethod.NewInstance();
+                    getEntity().setPreservationMethod(preservationMethod);
+                }
+                preservationMethod.setTimeperiod(datePreservation.getTimePeriod());
+            }
+        }catch (MethodNotSupportedByDerivedUnitTypeException e) {
+            AbstractUtility.errorDialog("Parameter not available", this, "Could not set preservation parameter!", e);
+        }
+        if(eventSource==selectionCollection){
+            getEntity().setCollection(selectionCollection.getSelection());
+        }
+        else if(eventSource==textAccessionNumber){
+            getEntity().setAccessionNumber(textAccessionNumber.getText());
+        }
+        else if(eventSource==textBarcode){
+            getEntity().setBarcode(textBarcode.getText());
+        }
 
+    }
 }