merge-update 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.api.service.IVocabularyService;
15 import eu.etaxonomy.cdm.model.agent.AgentBase;
16 import eu.etaxonomy.cdm.model.agent.Institution;
17 import eu.etaxonomy.cdm.model.common.DefinedTerm;
18 import eu.etaxonomy.cdm.model.common.TermType;
19 import eu.etaxonomy.cdm.model.common.TermVocabulary;
20 import eu.etaxonomy.cdm.model.common.TimePeriod;
21 import eu.etaxonomy.cdm.model.common.VocabularyEnum;
22 import eu.etaxonomy.cdm.model.molecular.DnaSample;
23 import eu.etaxonomy.cdm.model.occurrence.Collection;
24 import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;
25 import eu.etaxonomy.taxeditor.store.CdmStore;
26 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
27 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
28 import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
29 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
30 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
31 import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
32 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
33 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
34
35 /**
36 * @author pplitzner
37 * @date 16.12.2013
38 *
39 */
40 public class TissueSampleGeneralDetailElement extends AbstractCdmDetailElement<DnaSample> {
41
42 private final TermVocabulary plantKindOfUnitVocabulary = CdmStore.getService(IVocabularyService.class).find(VocabularyEnum.PlantKindOfUnit.getUuid());
43
44 static private final Logger logger = Logger.getLogger(TissueSampleGeneralDetailElement.class);
45
46 private TermComboElement<DefinedTerm> comboKindOfTissue;
47 private EntitySelectionElement<Institution> selectionInstitution;
48 private EntitySelectionElement<AgentBase> selectionStaff;
49 private TimePeriodElement datePreparation;
50 private TermComboElement<DefinedTerm> comboPreservationMedium;
51 private EntitySelectionElement<Collection> selectionCollection;
52 private TextWithLabelElement textAccessionNumber;
53 private TextWithLabelElement textBarcode;
54 private CheckboxElement checkIsPublish;
55
56
57 /**
58 * @param formFactory
59 * @param formElement
60 */
61 public TissueSampleGeneralDetailElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
62 super(formFactory, formElement);
63 }
64
65 /*
66 * (non-Javadoc)
67 *
68 * @see
69 * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#createControls
70 * (eu.etaxonomy.taxeditor.forms.ICdmFormElement, java.lang.Object, int)
71 */
72 @Override
73 protected void createControls(ICdmFormElement formElement, DnaSample entity, int style) {
74 comboKindOfTissue = formFactory.createDefinedTermComboElement(plantKindOfUnitVocabulary, formElement, "Kind Of Tissue", entity.getKindOfUnit(), style);
75 TimePeriod preparationDate = null;
76 DefinedTerm preservationMedium = null;
77 AgentBase<?> staff = null;
78 Institution institution = null;
79 if(entity.getDerivedFrom()!=null){
80 staff = entity.getDerivedFrom().getActor();
81 preparationDate = entity.getDerivedFrom().getTimeperiod();
82 institution = entity.getDerivedFrom().getInstitution();
83 }
84 if(entity.getPreservation()!=null){
85 preservationMedium = entity.getPreservation().getMedium();
86 }
87 selectionInstitution = formFactory.createSelectionElement(Institution.class, getConversationHolder(), formElement, "Institution", institution, EntitySelectionElement.ALL, style);
88 selectionStaff = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), formElement, "Staff", staff, EntitySelectionElement.ALL,style);
89 datePreparation = formFactory.createTimePeriodElement(formElement, "Preparation date", preparationDate, style);
90 comboPreservationMedium = formFactory.createDefinedTermComboElement(TermType.MaterialOrMethod, formElement, "Preservation medium", preservationMedium, style);
91 selectionCollection = formFactory.createSelectionElement(Collection.class, getConversationHolder(), formElement, "Collection", entity.getCollection(), EntitySelectionElement.ALL, style);
92 textAccessionNumber = formFactory.createTextWithLabelElement(formElement, "Accession Number", entity.getAccessionNumber(), style);
93 textBarcode = formFactory.createTextWithLabelElement(formElement, "Barcode", entity.getBarcode(), style);
94 checkIsPublish = formFactory.createCheckbox(formElement, "Publish", entity.isPublish(), style);
95
96 }
97
98 /*
99 * (non-Javadoc)
100 *
101 * @see
102 * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java
103 * .lang.Object)
104 */
105 @Override
106 public void handleEvent(Object eventSource) {
107 if(eventSource==comboKindOfTissue) {
108 getEntity().setKindOfUnit(comboKindOfTissue.getSelection());
109 }
110 else if(eventSource==comboPreservationMedium) {
111 addPreservationMethod().setMedium(comboPreservationMedium.getSelection());
112 }
113 else if(eventSource==selectionCollection){
114 getEntity().setCollection(selectionCollection.getSelection());
115 }
116 else if(eventSource==textAccessionNumber){
117 getEntity().setAccessionNumber(textAccessionNumber.getText());
118 }
119 else if(eventSource==textBarcode){
120 getEntity().setBarcode(textBarcode.getText());
121 }
122 else if(eventSource==datePreparation){
123 if(getEntity().getDerivedFrom()!=null){
124 getEntity().getDerivedFrom().setTimeperiod(datePreparation.getTimePeriod());
125 }
126 }
127 else if(eventSource==selectionInstitution){
128 if(getEntity().getDerivedFrom()!=null){
129 getEntity().getDerivedFrom().setInstitution(selectionInstitution.getSelection());
130 }
131 }
132 else if(eventSource==selectionStaff){
133 if(getEntity().getDerivedFrom()!=null){
134 getEntity().getDerivedFrom().setActor(selectionStaff.getSelection());
135 }
136 }
137 else if(eventSource==checkIsPublish){
138 getEntity().setPublish(checkIsPublish.getSelection());
139 }
140 }
141
142 private PreservationMethod addPreservationMethod(){
143 PreservationMethod preservationMethod = null;
144 preservationMethod = getEntity().getPreservation();
145 if(getEntity().getPreservation()==null){
146 preservationMethod = PreservationMethod.NewInstance();
147 getEntity().setPreservation(preservationMethod);
148 }
149 return preservationMethod;
150 }
151 }