latest changes from trunk
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / occurrence / dna / TissueSampleGeneralDetailElement.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.ui.section.occurrence.dna;
11
12 import org.apache.log4j.Logger;
13
14 import eu.etaxonomy.cdm.model.agent.AgentBase;
15 import eu.etaxonomy.cdm.model.common.DefinedTerm;
16 import eu.etaxonomy.cdm.model.common.TermType;
17 import eu.etaxonomy.cdm.model.common.TimePeriod;
18 import eu.etaxonomy.cdm.model.molecular.DnaSample;
19 import eu.etaxonomy.cdm.model.occurrence.Collection;
20 import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;
21 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
22 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
23 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
24 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
25 import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
26 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
27 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
28
29 /**
30 * @author pplitzner
31 * @date 16.12.2013
32 *
33 */
34 public class TissueSampleGeneralDetailElement extends AbstractCdmDetailElement<DnaSample> {
35
36 static private final Logger logger = Logger.getLogger(TissueSampleGeneralDetailElement.class);
37
38 private TermComboElement<DefinedTerm> comboKindOfTissue;
39 private EntitySelectionElement<AgentBase> selectionInstitution;
40 private EntitySelectionElement<AgentBase> selectionStaff;
41 private TimePeriodElement datePreparation;
42 private TermComboElement<DefinedTerm> comboPreservationMedium;
43 private EntitySelectionElement<Collection> selectionCollection;
44 private TextWithLabelElement textAccessionNumber;
45 private TextWithLabelElement textBarcode;
46
47
48 /**
49 * @param formFactory
50 * @param formElement
51 */
52 public TissueSampleGeneralDetailElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
53 super(formFactory, formElement);
54 }
55
56 /*
57 * (non-Javadoc)
58 *
59 * @see
60 * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#createControls
61 * (eu.etaxonomy.taxeditor.forms.ICdmFormElement, java.lang.Object, int)
62 */
63 @Override
64 protected void createControls(ICdmFormElement formElement, DnaSample entity, int style) {
65 //TODO handle all parameters here and in handleEvent()
66 comboKindOfTissue = formFactory.createDefinedTermComboElement(TermType.KindOfUnit, formElement, "Kind Of Tissue", entity.getKindOfUnit(), style);
67 //TODO: institute
68 TimePeriod preparationDate = null;
69 DefinedTerm preservationMedium = null;
70 AgentBase<?> staff = null;
71 if(entity.getDerivedFrom()!=null){
72 staff = entity.getDerivedFrom().getActor();
73 preparationDate = entity.getDerivedFrom().getTimeperiod();
74 }
75 if(entity.getPreservation()!=null){
76 preservationMedium = entity.getPreservation().getMedium();
77 }
78 selectionStaff = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), formElement, "Staff", staff, EntitySelectionElement.ALL,style);
79 datePreparation = formFactory.createTimePeriodElement(formElement, "Preparation date", preparationDate, style);
80 comboPreservationMedium = formFactory.createDefinedTermComboElement(TermType.MaterialOrMethod, formElement, "Preservation medium", preservationMedium, style);
81 selectionCollection = formFactory.createSelectionElement(Collection.class, getConversationHolder(), formElement, "Collection", entity.getCollection(), EntitySelectionElement.ALL, style);
82 textAccessionNumber = formFactory.createTextWithLabelElement(formElement, "Accession Number", entity.getAccessionNumber(), style);
83 textBarcode = formFactory.createTextWithLabelElement(formElement, "Barcode", entity.getBarcode(), style);
84
85 }
86
87 /*
88 * (non-Javadoc)
89 *
90 * @see
91 * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java
92 * .lang.Object)
93 */
94 @Override
95 public void handleEvent(Object eventSource) {
96 //TODO: institute
97 if(eventSource==comboKindOfTissue) {
98 getEntity().setKindOfUnit(comboKindOfTissue.getSelection());
99 }
100 else if(eventSource==comboPreservationMedium) {
101 addPreservationMethod().setMedium(comboPreservationMedium.getSelection());
102 }
103 else if(eventSource==selectionCollection){
104 getEntity().setCollection(selectionCollection.getSelection());
105 }
106 else if(eventSource==textAccessionNumber){
107 getEntity().setAccessionNumber(textAccessionNumber.getText());
108 }
109 else if(eventSource==textBarcode){
110 getEntity().setBarcode(textBarcode.getText());
111 }
112 else if(eventSource==datePreparation){
113 if(getEntity().getDerivedFrom()!=null){
114 getEntity().getDerivedFrom().setTimeperiod(datePreparation.getTimePeriod());
115 }
116 }
117 else if(eventSource==selectionStaff){
118 if(getEntity().getDerivedFrom()!=null){
119 getEntity().getDerivedFrom().setActor(selectionStaff.getSelection());
120 }
121 }
122 }
123
124 private PreservationMethod addPreservationMethod(){
125 PreservationMethod preservationMethod = null;
126 preservationMethod = getEntity().getPreservation();
127 if(getEntity().getPreservation()==null){
128 preservationMethod = PreservationMethod.NewInstance();
129 getEntity().setPreservation(preservationMethod);
130 }
131 return preservationMethod;
132 }
133 }