e1bcd519a3fac199ab279af5a7205ec0f0c26179
[cdmlib.git] / cdmlib-io / src / main / java / eu / etaxonomy / cdm / io / specimen / SpecimenImportStateBase.java
1 /**
2 * Copyright (C) 2016 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9 package eu.etaxonomy.cdm.io.specimen;
10
11 import java.util.ArrayList;
12 import java.util.HashMap;
13 import java.util.List;
14
15 import org.springframework.transaction.TransactionStatus;
16
17 import eu.etaxonomy.cdm.api.application.ICdmRepository;
18 import eu.etaxonomy.cdm.io.common.CdmImportBase;
19 import eu.etaxonomy.cdm.io.common.ImportStateBase;
20 import eu.etaxonomy.cdm.io.common.MapWrapper;
21 import eu.etaxonomy.cdm.io.specimen.abcd206.in.SpecimenImportReport;
22 import eu.etaxonomy.cdm.model.agent.Institution;
23 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
24 import eu.etaxonomy.cdm.model.common.OriginalSourceBase;
25 import eu.etaxonomy.cdm.model.description.TaxonDescription;
26 import eu.etaxonomy.cdm.model.occurrence.Collection;
27 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
28 import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
29 import eu.etaxonomy.cdm.model.reference.Reference;
30 import eu.etaxonomy.cdm.model.taxon.Classification;
31
32 /**
33 * @author k.luther
34 * @param <CONFIG>
35 * @date 15.07.2016
36 *
37 */
38 public class SpecimenImportStateBase<CONFIG extends SpecimenImportConfiguratorBase, STATE extends SpecimenImportStateBase>
39 extends ImportStateBase<CONFIG , CdmImportBase<CONFIG , STATE >>{
40
41
42 /**
43 * @param config
44 */
45 public SpecimenImportStateBase(CONFIG config) {
46 super(config);
47 }
48
49 private TransactionStatus tx;
50
51 private ICdmRepository cdmRepository;
52 private Classification classification = null;
53 private Classification defaultClassification = null;
54 private Reference ref = null;
55
56 private TaxonDescription descriptionGroup = null;
57 private DerivedUnit derivedUnitBase;
58
59 private SpecimenImportReport report;
60
61 protected SpecimenDataHolder dataHolder;
62
63 private List<OriginalSourceBase<?>> associationRefs = new ArrayList<OriginalSourceBase<?>>();
64 private boolean associationSourcesSet=false;
65 private List<OriginalSourceBase<?>> descriptionRefs = new ArrayList<OriginalSourceBase<?>>();
66 private boolean descriptionSourcesSet=false;
67 private List<OriginalSourceBase<?>> derivedUnitSources = new ArrayList<OriginalSourceBase<?>>();
68 private boolean derivedUnitSourcesSet=false;
69 private boolean descriptionGroupSet = false;
70 protected HashMap<String, Institution> institutions = new HashMap<String, Institution>();
71 protected HashMap<String, Collection> collections= new HashMap<String, Collection>();
72 private HashMap<String,FieldUnit> fieldUnits = new HashMap<String, FieldUnit>();
73
74 MapWrapper<TeamOrPersonBase<?>> personStore;
75
76
77 /* -----Getter/Setter ---*/
78
79 /**
80 * @return the personStore
81 */
82 public MapWrapper<TeamOrPersonBase<?>> getPersonStore() {
83 return personStore;
84 }
85
86 /**
87 * @param personStore the personStore to set
88 */
89 public void setPersonStore(MapWrapper<TeamOrPersonBase<?>> personStore) {
90 this.personStore = personStore;
91 }
92
93 /**
94 * @return the fieldUnits
95 */
96 public FieldUnit getFieldUnit(String fieldNumber) {
97 return fieldUnits.get(fieldNumber);
98 }
99
100 /**
101 * @param fieldUnits the fieldUnits to set
102 */
103 public void setFieldUnit(FieldUnit fieldUnit) {
104 this.fieldUnits.put(fieldUnit.getFieldNumber(), fieldUnit);
105 }
106
107 @Override
108 public CONFIG getConfig(){
109 return super.getConfig();
110 }
111
112 public List<OriginalSourceBase<?>> getAssociationRefs() {
113 return associationRefs;
114 }
115
116 public void setAssociationRefs(List<OriginalSourceBase<?>> associationRefs) {
117 this.associationRefs = associationRefs;
118 }
119
120 public boolean isAssociationSourcesSet() {
121 return associationSourcesSet;
122 }
123
124 public void setAssociationSourcesSet(boolean associationSourcesSet) {
125 this.associationSourcesSet = associationSourcesSet;
126 }
127
128 public List<OriginalSourceBase<?>> getDescriptionRefs() {
129 return descriptionRefs;
130 }
131
132 public void setDescriptionRefs(List<OriginalSourceBase<?>> descriptionRefs) {
133 this.descriptionRefs = descriptionRefs;
134 }
135
136 public boolean isDescriptionSourcesSet() {
137 return descriptionSourcesSet;
138 }
139
140 public void setDescriptionSourcesSet(boolean descriptionSourcesSet) {
141 this.descriptionSourcesSet = descriptionSourcesSet;
142 }
143
144 public List<OriginalSourceBase<?>> getDerivedUnitSources() {
145 return derivedUnitSources;
146 }
147
148 public void setDerivedUnitSources(List<OriginalSourceBase<?>> derivedUnitSources) {
149 this.derivedUnitSources = derivedUnitSources;
150 }
151
152 public boolean isDerivedUnitSourcesSet() {
153 return derivedUnitSourcesSet;
154 }
155
156 public void setDerivedUnitSourcesSet(boolean derivedUnitSourcesSet) {
157 this.derivedUnitSourcesSet = derivedUnitSourcesSet;
158 }
159
160 public boolean isDescriptionGroupSet() {
161 return descriptionGroupSet;
162 }
163
164 public void setDescriptionGroupSet(boolean descriptionGroupSet) {
165 this.descriptionGroupSet = descriptionGroupSet;
166 }
167
168 public TransactionStatus getTx() {
169 return tx;
170 }
171
172 public void setTx(TransactionStatus tx) {
173 this.tx = tx;
174 }
175
176 public ICdmRepository getCdmRepository() {
177 return cdmRepository;
178 }
179
180 public void setCdmRepository(ICdmRepository cdmRepository) {
181 this.cdmRepository = cdmRepository;
182 }
183
184 public Classification getClassification() {
185 return classification;
186 }
187
188 public void setClassification(Classification classification) {
189 this.classification = classification;
190 }
191
192 public Classification getDefaultClassification() {
193 if(defaultClassification==null){
194 final String defaultClassificationAbcd = "Default Classification Specimen Import";
195 for (Classification classif : cdmRepository.getClassificationService().list(Classification.class, null, null, null, null)){
196 if (classif.getTitleCache()!=null && classif.getTitleCache().equalsIgnoreCase(defaultClassificationAbcd)
197 && classif.getCitation()!=null && classif.getCitation().equals(getRef())) {
198 defaultClassification = classif;
199 break;
200 }
201 }
202 if(defaultClassification==null){
203 defaultClassification = Classification.NewInstance(defaultClassificationAbcd);
204 cdmRepository.getClassificationService().save(defaultClassification);
205 }
206 }
207 return defaultClassification;
208 }
209
210 public void setDefaultClassification(Classification defaultClassification) {
211 this.defaultClassification = defaultClassification;
212 }
213
214 public Reference getRef() {
215 return ref;
216 }
217
218 public void setRef(Reference ref) {
219 this.ref = ref;
220 }
221
222 public TaxonDescription getDescriptionGroup() {
223 return descriptionGroup;
224 }
225
226 public void setDescriptionGroup(TaxonDescription descriptionGroup) {
227 this.descriptionGroup = descriptionGroup;
228 }
229
230 public DerivedUnit getDerivedUnitBase() {
231 return derivedUnitBase;
232 }
233
234 public void setDerivedUnitBase(DerivedUnit derivedUnitBase) {
235 this.derivedUnitBase = derivedUnitBase;
236 }
237
238 /**
239 * @return the report
240 */
241 public SpecimenImportReport getReport() {
242 if (report == null){
243 report = new SpecimenImportReport();
244 }
245 return report;
246 }
247
248 /**
249 * @param report the report to set
250 */
251 public void setReport(SpecimenImportReport report) {
252 this.report = report;
253 }
254
255
256 /**
257 * @return the dataHolder
258 */
259 public SpecimenDataHolder getDataHolder() {
260 return dataHolder;
261 }
262
263 /**
264 * @param dataHolder the dataHolder to set
265 */
266 public void setDataHolder(SpecimenDataHolder dataHolder) {
267 this.dataHolder = dataHolder;
268 }
269 public void reset() {
270 getDataHolder().reset();
271 // setDerivedUnitBase(null);
272 }
273
274 }