2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
10 package eu
.etaxonomy
.cdm
.io
.sdd
.out
;
12 import java
.util
.ArrayList
;
13 import java
.util
.Collection
;
14 import java
.util
.HashSet
;
15 import java
.util
.List
;
18 import javax
.xml
.bind
.annotation
.XmlAccessType
;
19 import javax
.xml
.bind
.annotation
.XmlAccessorType
;
20 import javax
.xml
.bind
.annotation
.XmlElement
;
21 import javax
.xml
.bind
.annotation
.XmlElementWrapper
;
22 import javax
.xml
.bind
.annotation
.XmlElements
;
23 import javax
.xml
.bind
.annotation
.XmlRootElement
;
24 import javax
.xml
.bind
.annotation
.XmlType
;
26 import eu
.etaxonomy
.cdm
.model
.agent
.Address
;
27 import eu
.etaxonomy
.cdm
.model
.agent
.AgentBase
;
28 import eu
.etaxonomy
.cdm
.model
.agent
.Contact
;
29 import eu
.etaxonomy
.cdm
.model
.agent
.Institution
;
30 import eu
.etaxonomy
.cdm
.model
.agent
.InstitutionalMembership
;
31 import eu
.etaxonomy
.cdm
.model
.agent
.Person
;
32 import eu
.etaxonomy
.cdm
.model
.agent
.Team
;
33 import eu
.etaxonomy
.cdm
.model
.common
.AnnotationType
;
34 import eu
.etaxonomy
.cdm
.model
.common
.ExtensionType
;
35 import eu
.etaxonomy
.cdm
.model
.common
.Language
;
36 import eu
.etaxonomy
.cdm
.model
.common
.LanguageString
;
37 import eu
.etaxonomy
.cdm
.model
.common
.LanguageStringBase
;
38 import eu
.etaxonomy
.cdm
.model
.common
.MarkerType
;
39 import eu
.etaxonomy
.cdm
.model
.common
.ReferencedEntityBase
;
40 import eu
.etaxonomy
.cdm
.model
.common
.RelationshipBase
;
41 import eu
.etaxonomy
.cdm
.model
.common
.SourcedEntityBase
;
42 import eu
.etaxonomy
.cdm
.model
.common
.VersionableEntity
;
43 import eu
.etaxonomy
.cdm
.model
.description
.Feature
;
44 import eu
.etaxonomy
.cdm
.model
.description
.MeasurementUnit
;
45 import eu
.etaxonomy
.cdm
.model
.description
.PresenceAbsenceTerm
;
46 import eu
.etaxonomy
.cdm
.model
.description
.State
;
47 import eu
.etaxonomy
.cdm
.model
.description
.StatisticalMeasure
;
48 import eu
.etaxonomy
.cdm
.model
.description
.TextFormat
;
49 import eu
.etaxonomy
.cdm
.model
.location
.Country
;
50 import eu
.etaxonomy
.cdm
.model
.location
.NamedArea
;
51 import eu
.etaxonomy
.cdm
.model
.location
.NamedAreaLevel
;
52 import eu
.etaxonomy
.cdm
.model
.location
.NamedAreaType
;
53 import eu
.etaxonomy
.cdm
.model
.location
.ReferenceSystem
;
54 import eu
.etaxonomy
.cdm
.model
.media
.RightsType
;
55 import eu
.etaxonomy
.cdm
.model
.molecular
.DnaSample
;
56 import eu
.etaxonomy
.cdm
.model
.name
.HomotypicalGroup
;
57 import eu
.etaxonomy
.cdm
.model
.name
.HybridRelationship
;
58 import eu
.etaxonomy
.cdm
.model
.name
.HybridRelationshipType
;
59 import eu
.etaxonomy
.cdm
.model
.name
.NameRelationship
;
60 import eu
.etaxonomy
.cdm
.model
.name
.NameRelationshipType
;
61 import eu
.etaxonomy
.cdm
.model
.name
.NameTypeDesignation
;
62 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalCode
;
63 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalStatus
;
64 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalStatusType
;
65 import eu
.etaxonomy
.cdm
.model
.name
.Rank
;
66 import eu
.etaxonomy
.cdm
.model
.name
.SpecimenTypeDesignation
;
67 import eu
.etaxonomy
.cdm
.model
.name
.SpecimenTypeDesignationStatus
;
68 import eu
.etaxonomy
.cdm
.model
.name
.TaxonName
;
69 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivationEventType
;
70 import eu
.etaxonomy
.cdm
.model
.occurrence
.FieldUnit
;
71 import eu
.etaxonomy
.cdm
.model
.occurrence
.PreservationMethod
;
72 import eu
.etaxonomy
.cdm
.model
.occurrence
.SpecimenOrObservationBase
;
73 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
74 import eu
.etaxonomy
.cdm
.model
.taxon
.Synonym
;
75 import eu
.etaxonomy
.cdm
.model
.taxon
.SynonymType
;
76 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
77 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonBase
;
78 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonRelationship
;
79 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonRelationshipType
;
80 import eu
.etaxonomy
.cdm
.model
.term
.DefinedTerm
;
81 import eu
.etaxonomy
.cdm
.model
.term
.DefinedTermBase
;
82 import eu
.etaxonomy
.cdm
.model
.term
.TermTreeNode
;
83 import eu
.etaxonomy
.cdm
.model
.term
.TermTree
;
84 import eu
.etaxonomy
.cdm
.model
.term
.Representation
;
85 import eu
.etaxonomy
.cdm
.model
.term
.TermVocabulary
;
88 * @author a.babadshanjan
90 @XmlAccessorType(XmlAccessType
.FIELD
)
91 @XmlType(name
= "", propOrder
= {
108 @XmlRootElement(name
= "DataSet", namespace
= "http://etaxonomy.eu/cdm/model/1.0")
109 public class SDDDataSet
{
111 // Some fields are of type List and some are of type Set.
112 // This is mainly because
113 // the service classes return lists, i.e.
114 // TaxonServiceImpl.getRootTaxa() returns List<Taxon>
115 // and the Taxon methods return sets, i.e.
116 // Taxon.getTaxonomicChildren() returns Set<Taxon>.
118 @XmlElementWrapper(name
= "Agents")
120 @XmlElement(name
= "Team", namespace
= "http://etaxonomy.eu/cdm/model/agent/1.0", type
= Team
.class),
121 @XmlElement(name
= "Institution", namespace
= "http://etaxonomy.eu/cdm/model/agent/1.0", type
= Institution
.class),
122 @XmlElement(name
= "Person", namespace
= "http://etaxonomy.eu/cdm/model/agent/1.0", type
= Person
.class)
124 protected List
<?
extends AgentBase
> agents
;
126 @XmlElementWrapper(name
= "AgentData")
128 @XmlElement(name
= "Address", namespace
= "http://etaxonomy.eu/cdm/model/agent/1.0", type
= Address
.class),
129 @XmlElement(name
= "Contact", namespace
= "http://etaxonomy.eu/cdm/model/agent/1.0", type
= Contact
.class),
130 @XmlElement(name
= "InstitutionalMembership", namespace
= "http://etaxonomy.eu/cdm/model/agent/1.0", type
= InstitutionalMembership
.class)
132 protected List
<VersionableEntity
> agentData
;
134 @XmlElementWrapper(name
= "FeatureData")
136 @XmlElement(name
= "FeatureNode", namespace
= "http://etaxonomy.eu/cdm/model/description/1.0", type
= TermTreeNode
.class),
137 @XmlElement(name
= "FeatureTree", namespace
= "http://etaxonomy.eu/cdm/model/description/1.0", type
= TermTree
.class)
139 // protected List<VersionableEntity> featureData;
140 protected List
<VersionableEntity
> featureData
;
142 @XmlElementWrapper(name
= "LanguageData")
144 @XmlElement(name
= "Representation", namespace
= "http://etaxonomy.eu/cdm/model/common/1.0", type
= Representation
.class),
145 @XmlElement(name
= "LanguageString", namespace
= "http://etaxonomy.eu/cdm/model/common/1.0", type
= LanguageString
.class)
147 protected List
<LanguageStringBase
> languageData
;
149 @XmlElementWrapper(name
= "Terms")
151 @XmlElement(name
= "AnnotationType", namespace
= "http://etaxonomy.eu/cdm/model/common/1.0", type
= AnnotationType
.class),
152 @XmlElement(name
= "Continent", namespace
= "http://etaxonomy.eu/cdm/model/location/1.0", type
= NamedArea
.class),
153 @XmlElement(name
= "DerivationEventType", namespace
= "http://etaxonomy.eu/cdm/model/occurrence/1.0", type
= DerivationEventType
.class),
154 @XmlElement(name
= "DeterminationModifier", namespace
= "http://etaxonomy.eu/cdm/model/occurrence/1.0", type
= DefinedTerm
.class),
155 @XmlElement(name
= "ExtensionType", namespace
= "http://etaxonomy.eu/cdm/model/common/1.0", type
= ExtensionType
.class),
156 @XmlElement(name
= "Feature", namespace
= "http://etaxonomy.eu/cdm/model/description/1.0", type
= Feature
.class),
157 @XmlElement(name
= "HybridRelationshipType", namespace
= "http://etaxonomy.eu/cdm/model/name/1.0", type
= HybridRelationshipType
.class),
158 @XmlElement(name
= "InstitutionType", namespace
= "http://etaxonomy.eu/cdm/model/agent/1.0", type
= DefinedTerm
.class),
159 @XmlElement(name
= "Language", namespace
= "http://etaxonomy.eu/cdm/model/common/1.0", type
= Language
.class),
160 @XmlElement(name
= "MarkerType", namespace
= "http://etaxonomy.eu/cdm/model/common/1.0", type
= MarkerType
.class),
161 @XmlElement(name
= "MeasurementUnit", namespace
= "http://etaxonomy.eu/cdm/model/description/1.0", type
= MeasurementUnit
.class),
162 @XmlElement(name
= "Modifier", namespace
= "http://etaxonomy.eu/cdm/model/description/1.0", type
= DefinedTerm
.class),
163 @XmlElement(name
= "NamedArea", namespace
= "http://etaxonomy.eu/cdm/model/location/1.0", type
= NamedArea
.class),
164 @XmlElement(name
= "NamedAreaLevel", namespace
= "http://etaxonomy.eu/cdm/model/location/1.0", type
= NamedAreaLevel
.class),
165 @XmlElement(name
= "NamedAreaType", namespace
= "http://etaxonomy.eu/cdm/model/location/1.0", type
= NamedAreaType
.class),
166 @XmlElement(name
= "NameRelationshipType", namespace
= "http://etaxonomy.eu/cdm/model/name/1.0", type
= NameRelationshipType
.class),
167 @XmlElement(name
= "NomenclaturalCode", namespace
= "http://etaxonomy.eu/cdm/model/name/1.0", type
= NomenclaturalCode
.class),
168 @XmlElement(name
= "NomenclaturalStatusType", namespace
= "http://etaxonomy.eu/cdm/model/name/1.0", type
= NomenclaturalStatusType
.class),
169 @XmlElement(name
= "PresenceAbsenceTerm", namespace
= "http://etaxonomy.eu/cdm/model/description/1.0", type
= PresenceAbsenceTerm
.class),
170 @XmlElement(name
= "PreservationMethod", namespace
= "http://etaxonomy.eu/cdm/model/occurrence/1.0", type
= PreservationMethod
.class),
171 @XmlElement(name
= "Rank", namespace
= "http://etaxonomy.eu/cdm/model/name/1.0", type
= Rank
.class),
172 @XmlElement(name
= "ReferenceSystem", namespace
= "http://etaxonomy.eu/cdm/model/location/1.0", type
= ReferenceSystem
.class),
173 @XmlElement(name
= "RightsType", namespace
= "http://etaxonomy.eu/cdm/model/media/1.0", type
= RightsType
.class),
174 @XmlElement(name
= "Scope", namespace
= "http://etaxonomy.eu/cdm/model/description/1.0", type
= DefinedTerm
.class),
175 @XmlElement(name
= "Sex", namespace
= "http://etaxonomy.eu/cdm/model/description/1.0", type
= DefinedTerm
.class),
176 @XmlElement(name
= "Stage", namespace
= "http://etaxonomy.eu/cdm/model/description/1.0", type
= DefinedTerm
.class),
177 @XmlElement(name
= "State", namespace
= "http://etaxonomy.eu/cdm/model/description/1.0", type
= State
.class),
178 @XmlElement(name
= "StatisticalMeasure", namespace
= "http://etaxonomy.eu/cdm/model/description/1.0", type
= StatisticalMeasure
.class),
179 @XmlElement(name
= "SynonymType", namespace
= "http://etaxonomy.eu/cdm/model/taxon/1.0", type
= SynonymType
.class),
180 @XmlElement(name
= "TaxonRelationshipType", namespace
= "http://etaxonomy.eu/cdm/model/taxon/1.0", type
= TaxonRelationshipType
.class),
181 @XmlElement(name
= "TextFormat", namespace
= "http://etaxonomy.eu/cdm/model/description/1.0", type
= TextFormat
.class),
182 @XmlElement(name
= "TypeDesignationStatus", namespace
= "http://etaxonomy.eu/cdm/model/name/1.0", type
= SpecimenTypeDesignationStatus
.class),
183 @XmlElement(name
= "Country", namespace
= "http://etaxonomy.eu/cdm/model/location/1.0", type
= Country
.class)
185 protected List
<DefinedTermBase
> terms
;
187 @XmlElementWrapper(name
= "TermVocabularies")
188 @XmlElement(name
= "TermVocabulary", namespace
= "http://etaxonomy.eu/cdm/model/common/1.0")
189 protected List
<TermVocabulary
<DefinedTermBase
>> termVocabularies
;
191 @XmlElementWrapper(name
= "Occurrences")
193 @XmlElement(name
= "DnaSample", namespace
= "http://etaxonomy.eu/cdm/model/occurrence/1.0", type
= DnaSample
.class),
194 @XmlElement(name
= "FieldUnit", namespace
= "http://etaxonomy.eu/cdm/model/occurrence/1.0", type
= FieldUnit
.class)
196 protected List
<SpecimenOrObservationBase
> occurrences
;
198 @XmlElementWrapper(name
= "References")
199 @XmlElement(name
= "Reference", namespace
= "http://etaxonomy.eu/cdm/model/reference/1.0", type
= Reference
.class)
201 protected List
<Reference
> references
;
203 @XmlElementWrapper(name
= "ReferencedEntities")
205 @XmlElement(name
= "NomenclaturalStatus", namespace
= "http://etaxonomy.eu/cdm/model/name/1.0", type
= NomenclaturalStatus
.class),
207 protected List
<ReferencedEntityBase
> referencedEntities
;
209 @XmlElementWrapper(name
= "SourcedEntities")
211 @XmlElement(name
= "NameTypeDesignation", namespace
= "http://etaxonomy.eu/cdm/model/name/1.0", type
= NameTypeDesignation
.class),
212 @XmlElement(name
= "SpecimenTypeDesignation", namespace
= "http://etaxonomy.eu/cdm/model/name/1.0", type
= SpecimenTypeDesignation
.class)
214 protected List
<SourcedEntityBase
> sourcedEntities
;
217 @XmlElementWrapper(name
= "TaxonomicNames")
219 @XmlElement(name
= "TaxonName", namespace
= "http://etaxonomy.eu/cdm/model/name/1.0", type
= TaxonName
.class),
221 protected List
<TaxonName
> taxonomicNames
;
223 @XmlElementWrapper(name
= "Taxa")
224 @XmlElement(name
= "Taxon", namespace
= "http://etaxonomy.eu/cdm/model/taxon/1.0")
225 protected List
<Taxon
> taxa
;
227 @XmlElementWrapper(name
= "Synonyms")
228 @XmlElement(name
= "Synonym", namespace
= "http://etaxonomy.eu/cdm/model/taxon/1.0")
229 protected List
<Synonym
> synonyms
;
231 @XmlElementWrapper(name
= "Relationships")
233 @XmlElement(name
= "TaxonRelationship", namespace
= "http://etaxonomy.eu/cdm/model/taxon/1.0", type
= TaxonRelationship
.class),
234 @XmlElement(name
= "NameRelationship", namespace
= "http://etaxonomy.eu/cdm/model/name/1.0", type
= NameRelationship
.class),
235 @XmlElement(name
= "HybridRelationship", namespace
= "http://etaxonomy.eu/cdm/model/name/1.0", type
= HybridRelationship
.class)
237 protected Set
<RelationshipBase
> relationships
;
239 @XmlElementWrapper(name
= "Media_")
240 @XmlElement(name
= "Media", namespace
= "http://etaxonomy.eu/cdm/model/media/1.0")
241 protected List
<VersionableEntity
> media
;
243 @XmlElementWrapper(name
= "HomotypicalGroups")
244 @XmlElement(name
= "HomotypicalGroup", namespace
= "http://etaxonomy.eu/cdm/model/name/1.0")
245 protected List
<HomotypicalGroup
> homotypicalGroups
;
247 // @XmlElement(name = "TdwgArea", namespace = "http://etaxonomy.eu/cdm/model/location/1.0", type = TdwgArea.class),
249 public SDDDataSet () {
251 agents
= new ArrayList
<>();
252 agentData
= new ArrayList
<>();
253 featureData
= new ArrayList
<>();
254 languageData
= new ArrayList
<>();
255 terms
= new ArrayList
<>();
256 termVocabularies
= new ArrayList
<>();
257 occurrences
= new ArrayList
<>();
258 references
= new ArrayList
<>();
259 referencedEntities
= new ArrayList
<>();
260 taxonomicNames
= new ArrayList
<>();
261 taxa
= new ArrayList
<>();
262 synonyms
= new ArrayList
<>();
263 media
= new ArrayList
<>();
264 homotypicalGroups
= new ArrayList
<>();
267 public List
<?
extends AgentBase
> getAgents() {
270 public void setAgents(List
<?
extends AgentBase
> value
) {
275 public List
<VersionableEntity
> getAgentData() {
278 public void setAgentData(List
<VersionableEntity
> value
) {
279 this.agentData
= value
;
282 //public List<? extends TermBase> getTerms() {
283 public List
<DefinedTermBase
> getTerms() {
287 //public void setTerms(List<? extends TermBase> value) {
288 public void setTerms(List
<DefinedTermBase
> value
) {
292 public List
<TermVocabulary
<DefinedTermBase
>> getTermVocabularies() {
293 return termVocabularies
;
296 public void setTermVocabularies(List
<TermVocabulary
<DefinedTermBase
>> value
) {
297 this.termVocabularies
= value
;
300 public List
<TaxonName
> getTaxonomicNames() {
301 return taxonomicNames
;
303 public void setTaxonomicNames(List
<TaxonName
> value
) {
304 this.taxonomicNames
= value
;
307 public List
<SpecimenOrObservationBase
> getOccurrences() {
311 public void setOccurrences(List
<SpecimenOrObservationBase
> value
) {
312 this.occurrences
= value
;
315 public List
<Reference
> getReferences() {
318 public void setReferences(List
<Reference
> value
) {
319 this.references
= value
;
322 public <T
extends ReferencedEntityBase
> void addReferencedEntities(Collection
<T
> value
) {
323 for (T referencedEntity
: value
) {
324 this.referencedEntities
.add(referencedEntity
);
327 public List
<ReferencedEntityBase
> getReferencedEntities() {
328 return referencedEntities
;
330 public void setReferencedEntities(List
<?
extends ReferencedEntityBase
> value
) {
331 this.referencedEntities
= new ArrayList
<>();
332 referencedEntities
.addAll(value
);
335 public <T
extends SourcedEntityBase
> void addSourcedEntities(Collection
<T
> value
) {
336 if (sourcedEntities
== null){
337 this.sourcedEntities
= new ArrayList
<>();
339 for (T sourcedEntity
: value
) {
340 this.sourcedEntities
.add(sourcedEntity
);
344 public List
<SourcedEntityBase
> getSourcedEntities() {
345 return sourcedEntities
;
347 public void setSourcedEntities(List
<?
extends SourcedEntityBase
> value
) {
348 this.sourcedEntities
= new ArrayList
<>();
349 sourcedEntities
.addAll(value
);
352 public <T
extends VersionableEntity
> void addFeatureData(Collection
<T
> value
) {
353 for (T featureItem
: value
) {
354 this.featureData
.add(featureItem
);
357 // public List<VersionableEntity> getFeatureData() {
358 public List
<VersionableEntity
> getFeatureData() {
361 public <T
extends VersionableEntity
> void setFeatureData(List
<T
> value
) {
362 featureData
= new ArrayList
<>();
363 for (T featureItem
: value
) {
364 this.featureData
.add(featureItem
);
368 // public void setFeatureData(List<? extends VersionableEntity> value) {
369 //public void setFeatureData(List<? extends VersionableEntity<?>> value) {
370 // this.featureData = new ArrayList<VersionableEntity>();
371 // this.featureData = new ArrayList<VersionableEntity<?>>();
372 // featureData.addAll(value);
375 public <T
extends LanguageStringBase
> void addLanguageData(Collection
<T
> value
) {
376 for (T languageItem
: value
) {
377 this.languageData
.add(languageItem
);
380 public List
<LanguageStringBase
> getLanguageData() {
383 public void setLanguageData(List
<?
extends LanguageStringBase
> value
) {
384 this.languageData
= new ArrayList
<>();
385 languageData
.addAll(value
);
388 public void addTaxa(Collection
<Taxon
> value
) {
389 for (Taxon taxon
: value
) {
390 this.taxa
.add(taxon
);
394 public Collection
<?
extends TaxonBase
> getTaxa() {
396 //TODO can be deleted when everything works
398 //Collection<TaxonBase> taxonBases = (Collection<TaxonBase>)obj;
399 List
<Taxon
> list
= taxa
;
403 public Collection
<TaxonBase
> getTaxonBases() {
405 Collection
<TaxonBase
> result
= new HashSet
<>();
409 if (synonyms
!= null) {
410 result
.addAll(synonyms
);
415 public void setTaxa(List
<Taxon
> value
) {
418 public void addTaxon(Taxon value
) {
419 this.taxa
.add(value
);
422 public List
<Synonym
> getSynonyms() {
425 public void setSynonyms(List
<Synonym
> value
) {
426 this.synonyms
= value
;
429 public void addSynonym(Synonym value
) {
430 this.synonyms
.add(value
);
432 public void addSynonyms(Collection
<Synonym
> value
) {
433 for (Synonym synonym
: value
) {
434 this.synonyms
.add(synonym
);
438 public <T
extends VersionableEntity
> void addMedia(Collection
<T
> value
) {
439 for (T medium
: value
) {
440 this.media
.add(medium
);
444 public List
<VersionableEntity
> getMedia() {
448 public void setMedia(List
<?
extends VersionableEntity
> value
) {
449 this.media
= new ArrayList
<>();
453 public List
<HomotypicalGroup
> getHomotypicalGroups() {
454 return homotypicalGroups
;
457 public void setHomotypicalGroups(List
<HomotypicalGroup
> value
) {
458 this.homotypicalGroups
= value
;