cleanup
[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.HashSet;
14 import java.util.List;
15 import java.util.Map;
16 import java.util.Set;
17 import java.util.UUID;
18
19 import org.springframework.transaction.TransactionStatus;
20
21 import eu.etaxonomy.cdm.api.application.ICdmRepository;
22 import eu.etaxonomy.cdm.common.URI;
23 import eu.etaxonomy.cdm.io.common.CdmImportBase;
24 import eu.etaxonomy.cdm.io.common.ImportStateBase;
25 import eu.etaxonomy.cdm.io.common.MapWrapper;
26 import eu.etaxonomy.cdm.io.specimen.abcd206.in.SpecimenImportReport;
27 import eu.etaxonomy.cdm.model.agent.Institution;
28 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
29 import eu.etaxonomy.cdm.model.description.TaxonDescription;
30 import eu.etaxonomy.cdm.model.name.TaxonName;
31 import eu.etaxonomy.cdm.model.occurrence.Collection;
32 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
33 import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
34 import eu.etaxonomy.cdm.model.reference.OriginalSourceBase;
35 import eu.etaxonomy.cdm.model.reference.Reference;
36 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
37 import eu.etaxonomy.cdm.model.taxon.Classification;
38
39 /**
40 * @author k.luther
41 * @since 15.07.2016
42 */
43 public class SpecimenImportStateBase<CONFIG extends SpecimenImportConfiguratorBase, STATE extends SpecimenImportStateBase>
44 extends ImportStateBase<CONFIG , CdmImportBase<CONFIG , STATE >>{
45
46 public SpecimenImportStateBase(CONFIG config) {
47 super(config);
48 }
49
50 private TransactionStatus tx;
51
52 private ICdmRepository cdmRepository;
53 private Classification classification = null;
54 private Classification defaultClassification = null;
55 private Reference ref = null;
56
57 private HashMap<UUID, TaxonDescription> individualsAssociationDescriptionPerTaxon = new HashMap<>();
58 private DerivedUnit derivedUnitBase;
59
60 private SpecimenImportReport report;
61
62 protected SpecimenDataHolder dataHolder;
63
64 private List<OriginalSourceBase> associationRefs = new ArrayList<>();
65 private boolean associationSourcesSet=false;
66 private List<OriginalSourceBase> descriptionRefs = new ArrayList<>();
67 private boolean descriptionSourcesSet=false;
68 private List<OriginalSourceBase> derivedUnitSources = new ArrayList<>();
69 private boolean derivedUnitSourcesSet=false;
70 private boolean descriptionGroupSet = false;
71 protected Map<String, Institution> institutions = new HashMap<>();
72 protected Map<String, Collection> collections= new HashMap<>();
73 protected Map<String, TaxonName> names= new HashMap<>();
74 private Map<String,FieldUnit> fieldUnits = new HashMap<>();
75
76 private MapWrapper<TeamOrPersonBase<?>> personStore;
77 private Map<String, Reference> importReferences = new HashMap<>();
78 private URI actualAccessPoint;
79 private Set<URI> allAccesPoints = new HashSet<>();
80
81 // ************************* Getter/Setter **************/
82
83 public MapWrapper<TeamOrPersonBase<?>> getPersonStore() {
84 return personStore;
85 }
86 public void setPersonStore(MapWrapper<TeamOrPersonBase<?>> personStore) {
87 this.personStore = personStore;
88 }
89
90 public FieldUnit getFieldUnit(String fieldNumber) {
91 return fieldUnits.get(fieldNumber);
92 }
93 public void setFieldUnit(FieldUnit fieldUnit) {
94 this.fieldUnits.put(fieldUnit.getFieldNumber(), fieldUnit);
95 }
96
97 @Override
98 public CONFIG getConfig(){
99 return super.getConfig();
100 }
101
102 public List<OriginalSourceBase> getAssociationRefs() {
103 return associationRefs;
104 }
105
106 public void setAssociationRefs(List<OriginalSourceBase> associationRefs) {
107 this.associationRefs = associationRefs;
108 }
109
110 public boolean isAssociationSourcesSet() {
111 return associationSourcesSet;
112 }
113
114 public void setAssociationSourcesSet(boolean associationSourcesSet) {
115 this.associationSourcesSet = associationSourcesSet;
116 }
117
118 public List<OriginalSourceBase> getDescriptionRefs() {
119 return descriptionRefs;
120 }
121
122 public void setDescriptionRefs(List<OriginalSourceBase> descriptionRefs) {
123 this.descriptionRefs = descriptionRefs;
124 }
125
126 public boolean isDescriptionSourcesSet() {
127 return descriptionSourcesSet;
128 }
129
130 public void setDescriptionSourcesSet(boolean descriptionSourcesSet) {
131 this.descriptionSourcesSet = descriptionSourcesSet;
132 }
133
134 public List<OriginalSourceBase> getDerivedUnitSources() {
135 return derivedUnitSources;
136 }
137
138 public void setDerivedUnitSources(List<OriginalSourceBase> derivedUnitSources) {
139 this.derivedUnitSources = derivedUnitSources;
140 }
141
142 public boolean isDerivedUnitSourcesSet() {
143 return derivedUnitSourcesSet;
144 }
145
146 public void setDerivedUnitSourcesSet(boolean derivedUnitSourcesSet) {
147 this.derivedUnitSourcesSet = derivedUnitSourcesSet;
148 }
149
150 public boolean isDescriptionGroupSet() {
151 return descriptionGroupSet;
152 }
153
154 public void setDescriptionGroupSet(boolean descriptionGroupSet) {
155 this.descriptionGroupSet = descriptionGroupSet;
156 }
157
158 public TransactionStatus getTx() {
159 return tx;
160 }
161
162 public void setTx(TransactionStatus tx) {
163 this.tx = tx;
164 }
165
166 public ICdmRepository getCdmRepository() {
167 return cdmRepository;
168 }
169
170 public void setCdmRepository(ICdmRepository cdmRepository) {
171 this.cdmRepository = cdmRepository;
172 }
173
174 public Classification getClassification() {
175 return classification;
176 }
177
178 public void setClassification(Classification classification) {
179 this.classification = classification;
180 }
181
182 public Classification getDefaultClassification(boolean createIfNotExist) {
183 if(defaultClassification==null && createIfNotExist){
184 final String defaultClassificationAbcd = "Default Classification Specimen Import";
185 for (Classification classif : cdmRepository.getClassificationService().list(Classification.class, null, null, null, null)){
186 if (classif.getTitleCache()!=null && classif.getTitleCache().equalsIgnoreCase(defaultClassificationAbcd)
187 && classif.getReference()!=null && classif.getReference().equals(getRef())) {
188 defaultClassification = classif;
189 break;
190 }
191 }
192 if(defaultClassification==null){
193 defaultClassification = Classification.NewInstance(defaultClassificationAbcd);
194 cdmRepository.getClassificationService().save(defaultClassification);
195 }
196 }
197 return defaultClassification;
198 }
199
200 public void setDefaultClassification(Classification defaultClassification) {
201 this.defaultClassification = defaultClassification;
202 }
203
204 public Reference getRef() {
205 return ref;
206 }
207 public void setRef(Reference ref) {
208 this.ref = ref;
209 }
210
211 public TaxonDescription getIndividualsAssociationDescriptionPerTaxon(UUID taxonUUID) {
212 return individualsAssociationDescriptionPerTaxon.get(taxonUUID);
213 }
214
215 public void setIndividualsAssociationDescriptionPerTaxon(TaxonDescription description) {
216 this.individualsAssociationDescriptionPerTaxon.put(description.getTaxon().getUuid(), description);
217 }
218
219 public DerivedUnit getDerivedUnitBase() {
220 return derivedUnitBase;
221 }
222 public void setDerivedUnitBase(DerivedUnit derivedUnitBase) {
223 this.derivedUnitBase = derivedUnitBase;
224 }
225
226 public URI getActualAccessPoint() {
227 return actualAccessPoint;
228 }
229
230 public Set<URI> getAllAccesPoint() {
231 return allAccesPoints;
232 }
233
234 public void addActualAccesPoint(URI actualAccesPoint) {
235 this.allAccesPoints.add(actualAccesPoint);
236 }
237 public void setActualAccessPoint(URI actualAccessPoint) {
238 this.addActualAccesPoint(actualAccessPoint);
239 this.actualAccessPoint = actualAccessPoint;
240 }
241
242 public SpecimenImportReport getReport() {
243 if (report == null){
244 report = new SpecimenImportReport();
245 }
246 return report;
247 }
248 public void setReport(SpecimenImportReport report) {
249 this.report = report;
250 }
251
252 public SpecimenDataHolder getDataHolder() {
253 return dataHolder;
254 }
255 public void setDataHolder(SpecimenDataHolder dataHolder) {
256 this.dataHolder = dataHolder;
257 }
258 public void reset() {
259 getDataHolder().reset();
260 // setDerivedUnitBase(null);
261 }
262
263 public Reference getImportReference(URI accessPoint){
264 if (accessPoint == null){
265 return null;
266 }
267 if (importReferences == null){
268 importReferences = new HashMap<>();
269 }
270 if (this.importReferences.containsKey(accessPoint.toString())){
271 return this.importReferences.get(accessPoint.toString());
272 }else{
273 Reference ref = ReferenceFactory.newGeneric();
274 ref.setUri(accessPoint);
275 ref.setTitle(accessPoint.toString());
276 this.importReferences.put(accessPoint.toString(), ref);
277 return ref;
278 }
279 }
280
281 public void addImportReference(Reference ref) {
282 if (ref.getUri() != null){
283 this.importReferences.put(ref.getUri().toString(), ref);
284 }
285 }
286 }