Project

General

Profile

Download (29.6 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2007 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

    
10
package eu.etaxonomy.cdm.io.sdd.out;
11

    
12
import java.util.ArrayList;
13
import java.util.Collection;
14
import java.util.HashSet;
15
import java.util.List;
16
import java.util.Set;
17

    
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;
25

    
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.InstitutionType;
31
import eu.etaxonomy.cdm.model.agent.InstitutionalMembership;
32
import eu.etaxonomy.cdm.model.agent.Person;
33
import eu.etaxonomy.cdm.model.agent.Team;
34
import eu.etaxonomy.cdm.model.common.AnnotationType;
35
import eu.etaxonomy.cdm.model.common.DefinedTermBase;
36
import eu.etaxonomy.cdm.model.common.ExtensionType;
37
import eu.etaxonomy.cdm.model.common.Language;
38
import eu.etaxonomy.cdm.model.common.LanguageString;
39
import eu.etaxonomy.cdm.model.common.LanguageStringBase;
40
import eu.etaxonomy.cdm.model.common.MarkerType;
41
import eu.etaxonomy.cdm.model.common.ReferencedEntityBase;
42
import eu.etaxonomy.cdm.model.common.RelationshipBase;
43
import eu.etaxonomy.cdm.model.common.Representation;
44
import eu.etaxonomy.cdm.model.common.TermVocabulary;
45
import eu.etaxonomy.cdm.model.common.VersionableEntity;
46
import eu.etaxonomy.cdm.model.description.AbsenceTerm;
47
import eu.etaxonomy.cdm.model.description.Feature;
48
import eu.etaxonomy.cdm.model.description.FeatureNode;
49
import eu.etaxonomy.cdm.model.description.FeatureTree;
50
import eu.etaxonomy.cdm.model.description.MeasurementUnit;
51
import eu.etaxonomy.cdm.model.description.Modifier;
52
import eu.etaxonomy.cdm.model.description.PresenceTerm;
53
import eu.etaxonomy.cdm.model.description.Scope;
54
import eu.etaxonomy.cdm.model.description.Sex;
55
import eu.etaxonomy.cdm.model.description.Stage;
56
import eu.etaxonomy.cdm.model.description.State;
57
import eu.etaxonomy.cdm.model.description.StatisticalMeasure;
58
import eu.etaxonomy.cdm.model.description.TextFormat;
59
import eu.etaxonomy.cdm.model.location.Continent;
60
import eu.etaxonomy.cdm.model.location.NamedArea;
61
import eu.etaxonomy.cdm.model.location.NamedAreaLevel;
62
import eu.etaxonomy.cdm.model.location.NamedAreaType;
63
import eu.etaxonomy.cdm.model.location.ReferenceSystem;
64
import eu.etaxonomy.cdm.model.location.WaterbodyOrCountry;
65
import eu.etaxonomy.cdm.model.media.RightsTerm;
66
import eu.etaxonomy.cdm.model.molecular.DnaSample;
67
import eu.etaxonomy.cdm.model.name.BacterialName;
68
import eu.etaxonomy.cdm.model.name.BotanicalName;
69
import eu.etaxonomy.cdm.model.name.CultivarPlantName;
70
import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
71
import eu.etaxonomy.cdm.model.name.HybridRelationship;
72
import eu.etaxonomy.cdm.model.name.HybridRelationshipType;
73
import eu.etaxonomy.cdm.model.name.NameRelationship;
74
import eu.etaxonomy.cdm.model.name.NameRelationshipType;
75
import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
76
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
77
import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
78
import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
79
import eu.etaxonomy.cdm.model.name.Rank;
80
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
81
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
82
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
83
import eu.etaxonomy.cdm.model.name.ViralName;
84
import eu.etaxonomy.cdm.model.name.ZoologicalName;
85
import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;
86
import eu.etaxonomy.cdm.model.occurrence.DeterminationModifier;
87
import eu.etaxonomy.cdm.model.occurrence.FieldObservation;
88
import eu.etaxonomy.cdm.model.occurrence.Fossil;
89
import eu.etaxonomy.cdm.model.occurrence.LivingBeing;
90
import eu.etaxonomy.cdm.model.occurrence.Observation;
91
import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;
92
import eu.etaxonomy.cdm.model.occurrence.Specimen;
93
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
94
import eu.etaxonomy.cdm.model.reference.Reference;
95
import eu.etaxonomy.cdm.model.taxon.Synonym;
96
import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;
97
import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;
98
import eu.etaxonomy.cdm.model.taxon.Taxon;
99
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
100
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
101
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
102

    
103
/**
104
 * @author a.babadshanjan
105
 */
106
@XmlAccessorType(XmlAccessType.FIELD)
107
@XmlType(name = "", propOrder = {
108
	    "terms",
109
	    "termVocabularies",
110
		"agents",
111
		"agentData",
112
		"occurrences",
113
	    "references",
114
	    "referencedEntities",
115
	    "featureData",
116
	    "languageData",
117
	    "taxonomicNames",
118
	    "homotypicalGroups",
119
	    "taxa",
120
	    "synonyms",
121
	    "relationships",
122
	    "media"
123
})
124
@XmlRootElement(name = "DataSet", namespace = "http://etaxonomy.eu/cdm/model/1.0")
125
public class SDDDataSet {
126
	
127
    // Some fields are of type List and some are of type Set. 
128
	// This is mainly because
129
	// the service classes return lists, i.e.
130
    // TaxonServiceImpl.getRootTaxa() returns List<Taxon>
131
	// and the Taxon methods return sets, i.e.
132
    // Taxon.getTaxonomicChildren() returns Set<Taxon>.
133

    
134
    @XmlElementWrapper(name = "Agents")
135
    @XmlElements({
136
        @XmlElement(name = "Team", namespace = "http://etaxonomy.eu/cdm/model/agent/1.0", type = Team.class),
137
        @XmlElement(name = "Institution", namespace = "http://etaxonomy.eu/cdm/model/agent/1.0", type = Institution.class),
138
        @XmlElement(name = "Person", namespace = "http://etaxonomy.eu/cdm/model/agent/1.0", type = Person.class)
139
    })
140
    protected List<? extends AgentBase> agents;
141
    
142
    @XmlElementWrapper(name = "AgentData")
143
    @XmlElements({
144
    @XmlElement(name = "Address", namespace = "http://etaxonomy.eu/cdm/model/agent/1.0", type = Address.class),
145
    @XmlElement(name = "Contact", namespace = "http://etaxonomy.eu/cdm/model/agent/1.0", type = Contact.class),
146
    @XmlElement(name = "InstitutionalMembership", namespace = "http://etaxonomy.eu/cdm/model/agent/1.0", type = InstitutionalMembership.class)
147
    })
148
    protected List<VersionableEntity> agentData;
149

    
150
    @XmlElementWrapper(name = "FeatureData")
151
    @XmlElements({
152
    @XmlElement(name = "FeatureNode", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = FeatureNode.class),
153
    @XmlElement(name = "FeatureTree", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = FeatureTree.class)
154
    })
155
//    protected List<VersionableEntity> featureData;
156
    protected List<VersionableEntity> featureData;
157

    
158
    @XmlElementWrapper(name = "LanguageData")
159
    @XmlElements({
160
    @XmlElement(name = "Representation", namespace = "http://etaxonomy.eu/cdm/model/common/1.0", type = Representation.class),
161
    @XmlElement(name = "LanguageString", namespace = "http://etaxonomy.eu/cdm/model/common/1.0", type = LanguageString.class)
162
    })
163
    protected List<LanguageStringBase> languageData;
164
    
165
    @XmlElementWrapper(name = "Terms")
166
    @XmlElements({
167
    	@XmlElement(name = "AbsenceTerm", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = AbsenceTerm.class),
168
    	@XmlElement(name = "AnnotationType", namespace = "http://etaxonomy.eu/cdm/model/common/1.0", type = AnnotationType.class),
169
    	@XmlElement(name = "Continent", namespace = "http://etaxonomy.eu/cdm/model/location/1.0", type = Continent.class),
170
    	@XmlElement(name = "DerivationEventType", namespace = "http://etaxonomy.eu/cdm/model/occurrence/1.0", type = DerivationEventType.class),
171
    	@XmlElement(name = "DeterminationModifier", namespace = "http://etaxonomy.eu/cdm/model/occurrence/1.0", type = DeterminationModifier.class),
172
    	@XmlElement(name = "ExtensionType", namespace = "http://etaxonomy.eu/cdm/model/common/1.0", type = ExtensionType.class),
173
    	@XmlElement(name = "Feature", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = Feature.class),
174
    	@XmlElement(name = "HybridRelationshipType", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = HybridRelationshipType.class),
175
    	@XmlElement(name = "InstitutionType", namespace = "http://etaxonomy.eu/cdm/model/agent/1.0", type = InstitutionType.class),
176
    	@XmlElement(name = "Language", namespace = "http://etaxonomy.eu/cdm/model/common/1.0", type = Language.class),
177
    	@XmlElement(name = "MarkerType", namespace = "http://etaxonomy.eu/cdm/model/common/1.0", type = MarkerType.class),
178
    	@XmlElement(name = "MeasurementUnit", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = MeasurementUnit.class),
179
    	@XmlElement(name = "Modifier", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = Modifier.class),
180
    	@XmlElement(name = "NamedArea", namespace = "http://etaxonomy.eu/cdm/model/location/1.0", type = NamedArea.class),
181
    	@XmlElement(name = "NamedAreaLevel", namespace = "http://etaxonomy.eu/cdm/model/location/1.0", type = NamedAreaLevel.class),
182
    	@XmlElement(name = "NamedAreaType", namespace = "http://etaxonomy.eu/cdm/model/location/1.0", type = NamedAreaType.class),
183
    	@XmlElement(name = "NameRelationshipType", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = NameRelationshipType.class),
184
    	@XmlElement(name = "NomenclaturalCode", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = NomenclaturalCode.class),
185
    	@XmlElement(name = "NomenclaturalStatusType", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = NomenclaturalStatusType.class),
186
    	@XmlElement(name = "PresenceTerm", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = PresenceTerm.class),
187
    	@XmlElement(name = "PreservationMethod", namespace = "http://etaxonomy.eu/cdm/model/occurrence/1.0", type = PreservationMethod.class),
188
        @XmlElement(name = "Rank", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = Rank.class),
189
    	@XmlElement(name = "ReferenceSystem", namespace = "http://etaxonomy.eu/cdm/model/location/1.0", type = ReferenceSystem.class),
190
    	@XmlElement(name = "RightsTerm", namespace = "http://etaxonomy.eu/cdm/model/media/1.0", type = RightsTerm.class),
191
    	@XmlElement(name = "Scope", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = Scope.class),
192
    	@XmlElement(name = "Sex", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = Sex.class),
193
    	@XmlElement(name = "Stage", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = Stage.class),
194
    	@XmlElement(name = "State", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = State.class),
195
    	@XmlElement(name = "StatisticalMeasure", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = StatisticalMeasure.class),
196
    	@XmlElement(name = "SynonymRelationshipType", namespace = "http://etaxonomy.eu/cdm/model/taxon/1.0", type = SynonymRelationshipType.class),
197
    	@XmlElement(name = "TaxonRelationshipType", namespace = "http://etaxonomy.eu/cdm/model/taxon/1.0", type = TaxonRelationshipType.class),
198
    	@XmlElement(name = "TextFormat", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = TextFormat.class),
199
    	@XmlElement(name = "TypeDesignationStatus", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = SpecimenTypeDesignationStatus.class),
200
    	@XmlElement(name = "WaterbodyOrCountry", namespace = "http://etaxonomy.eu/cdm/model/location/1.0", type = WaterbodyOrCountry.class)
201
    })
202
    protected List<DefinedTermBase> terms;
203

    
204
    @XmlElementWrapper(name = "TermVocabularies")
205
    @XmlElement(name = "TermVocabulary", namespace = "http://etaxonomy.eu/cdm/model/common/1.0")
206
    protected List<TermVocabulary<DefinedTermBase>> termVocabularies;
207

    
208
    @XmlElementWrapper(name = "Occurrences")
209
    @XmlElements({
210
    	@XmlElement(name = "DnaSample", namespace = "http://etaxonomy.eu/cdm/model/occurrence/1.0", type = DnaSample.class),
211
    	@XmlElement(name = "FieldObservation", namespace = "http://etaxonomy.eu/cdm/model/occurrence/1.0", type = FieldObservation.class),
212
    	@XmlElement(name = "Fossil", namespace = "http://etaxonomy.eu/cdm/model/occurrence/1.0", type = Fossil.class),
213
    	@XmlElement(name = "LivingBeing", namespace = "http://etaxonomy.eu/cdm/model/occurrence/1.0", type = LivingBeing.class),
214
    	@XmlElement(name = "Observation", namespace = "http://etaxonomy.eu/cdm/model/occurrence/1.0", type = Observation.class),
215
    	@XmlElement(name = "Specimen", namespace = "http://etaxonomy.eu/cdm/model/occurrence/1.0", type = Specimen.class)
216
    })
217
    protected List<SpecimenOrObservationBase> occurrences;
218
    
219
    @XmlElementWrapper(name = "References")
220
   	@XmlElement(name = "Reference", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Reference.class)
221

    
222
    protected List<Reference> references;
223

    
224
    @XmlElementWrapper(name = "ReferencedEntities")
225
    @XmlElements({
226
    	@XmlElement(name = "NomenclaturalStatus", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = NomenclaturalStatus.class),
227
    	@XmlElement(name = "NameTypeDesignation", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = NameTypeDesignation.class),
228
    	@XmlElement(name = "SpecimenTypeDesignation", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = SpecimenTypeDesignation.class)
229
    })
230
    protected List<ReferencedEntityBase> referencedEntities;
231

    
232
    	
233
    @XmlElementWrapper(name = "TaxonomicNames")
234
    @XmlElements({
235
    	@XmlElement(name = "BacterialName", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = BacterialName.class),
236
    	@XmlElement(name = "BotanicalName", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = BotanicalName.class),
237
    	@XmlElement(name = "CultivarPlantName", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = CultivarPlantName.class),
238
    	@XmlElement(name = "ViralName", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = ViralName.class),
239
    	@XmlElement(name = "ZoologicalName", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = ZoologicalName.class)
240
    })
241
    protected List<TaxonNameBase> taxonomicNames;
242

    
243
    @XmlElementWrapper(name = "Taxa")
244
    @XmlElement(name = "Taxon", namespace = "http://etaxonomy.eu/cdm/model/taxon/1.0")
245
    protected List<Taxon> taxa;
246
	
247
    @XmlElementWrapper(name = "Synonyms")
248
    @XmlElement(name = "Synonym", namespace = "http://etaxonomy.eu/cdm/model/taxon/1.0")
249
    protected List<Synonym> synonyms;
250

    
251
    @XmlElementWrapper(name = "Relationships")
252
    @XmlElements({
253
    	@XmlElement(name = "TaxonRelationship", namespace = "http://etaxonomy.eu/cdm/model/taxon/1.0", type = TaxonRelationship.class),
254
    	@XmlElement(name = "SynonymRelationship", namespace = "http://etaxonomy.eu/cdm/model/taxon/1.0", type = SynonymRelationship.class),
255
    	@XmlElement(name = "NameRelationship", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = NameRelationship.class),
256
    	@XmlElement(name = "HybridRelationship", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = HybridRelationship.class)
257
    })
258
    protected Set<RelationshipBase> relationships;
259

    
260
    @XmlElementWrapper(name = "Media_")
261
    @XmlElement(name = "Media", namespace = "http://etaxonomy.eu/cdm/model/media/1.0")
262
    protected List<VersionableEntity> media;
263
    
264
    @XmlElementWrapper(name = "HomotypicalGroups")
265
    @XmlElement(name = "HomotypicalGroup", namespace = "http://etaxonomy.eu/cdm/model/name/1.0")
266
    protected List<HomotypicalGroup> homotypicalGroups;
267

    
268
//	@XmlElement(name = "TdwgArea", namespace = "http://etaxonomy.eu/cdm/model/location/1.0", type = TdwgArea.class),
269

    
270
	public SDDDataSet () {
271
		
272
		agents = new ArrayList<AgentBase>(); 
273
		agentData = new ArrayList<VersionableEntity>();
274
//		featureData = new ArrayList<VersionableEntity>();
275
		featureData = new ArrayList<VersionableEntity>();
276
		languageData = new ArrayList<LanguageStringBase>();
277
		terms = new ArrayList<DefinedTermBase>();
278
		termVocabularies = new ArrayList<TermVocabulary<DefinedTermBase>>();
279
		occurrences = new ArrayList<SpecimenOrObservationBase>();
280
		references = new ArrayList<Reference>();
281
		referencedEntities = new ArrayList<ReferencedEntityBase>();
282
		taxonomicNames = new ArrayList<TaxonNameBase>();
283
		taxa = new ArrayList<Taxon>();
284
		synonyms = new ArrayList<Synonym>();
285
		relationships = new HashSet<RelationshipBase>();
286
		media = new ArrayList<VersionableEntity>();
287
		homotypicalGroups = new ArrayList<HomotypicalGroup>();
288
	}
289

    
290
    /**
291
     * Gets the value of the agents property.
292
     * 
293
     * @return
294
     *     possible object is
295
     *     {@link List<Agent> }
296
     *     
297
     */
298
    public List<? extends AgentBase> getAgents() {
299
        return agents;
300
    }
301

    
302
    /**
303
     * Sets the value of the agents property.
304
     * 
305
     * @param value
306
     *     allowed object is
307
     *     {@link List<Agent> }
308
     *     
309
     */
310
    public void setAgents(List<? extends AgentBase> value) {
311
        this.agents = value;
312
    }
313

    
314
    /**
315
     * Gets the value of the agentData property.
316
     * 
317
     * @return
318
     *     possible object is
319
     *     {@link List<VersionableEntity> }
320
     *     
321
     */
322
    public List<VersionableEntity> getAgentData() {
323
        return agentData;
324
    }
325

    
326
    /**
327
     * Sets the value of the agentData property.
328
     * 
329
     * @param value
330
     *     allowed object is
331
     *     {@link List<VersionableEntity> }
332
     *     
333
     */
334
    public void setAgentData(List<VersionableEntity> value) {
335
        this.agentData = value;
336
    }
337

    
338
    /**
339
     * Gets the value of the terms property.
340
     * 
341
     * @return
342
     *     possible object is
343
     *     {@link List<TermBase> }
344
     *     
345
     */
346
    
347
    //public List<? extends TermBase> getTerms() {
348
    public List<DefinedTermBase> getTerms() {
349
        return terms;
350
    }
351

    
352
    /**
353
     * Sets the value of the terms property.
354
     * 
355
     * @param value
356
     *     allowed object is
357
     *     {@link List<TermBase> }
358
     *     
359
     */
360
    //public void setTerms(List<? extends TermBase> value) {
361
    public void setTerms(List<DefinedTermBase> value) {
362
        this.terms = value;
363
    }
364

    
365
    /**
366
     * Gets the value of the term vocabularies property.
367
     * 
368
     * @return
369
     *     possible object is
370
     *     {@link List<TermVocabulary> }
371
     *     
372
     */
373
    
374
    public List<TermVocabulary<DefinedTermBase>> getTermVocabularies() {
375
        return termVocabularies;
376
    }
377

    
378
    /**
379
     * Sets the value of the term vocabularies property.
380
     * 
381
     * @param value
382
     *     allowed object is
383
     *     {@link List<TermVocabulary> }
384
     *     
385
     */
386
    public void setTermVocabularies(List<TermVocabulary<DefinedTermBase>> value) {
387
        this.termVocabularies = value;
388
    }
389

    
390
    /**
391
     * Gets the value of the taxonomicNames property.
392
     * 
393
     * @return
394
     *     possible object is
395
     *     {@link List<axonNameBase> }
396
     *     
397
     */
398
    public List<TaxonNameBase> getTaxonomicNames() {
399
        return taxonomicNames;
400
    }
401

    
402
    /**
403
     * Sets the value of the taxonomicNames property.
404
     * 
405
     * @param value
406
     *     allowed object is
407
     *     {@link List<TaxonNameBase> }
408
     *     
409
     */
410
    public void setTaxonomicNames(List<TaxonNameBase> value) {
411
        this.taxonomicNames = value;
412
    }
413

    
414
    /**
415
     * Gets the value of the references property.
416
     * 
417
     * @return
418
     *     possible object is
419
     *     {@link List<SpecimenOrObservationBase> }
420
     *     
421
     */
422
    public List<SpecimenOrObservationBase> getOccurrences() {
423
        return occurrences;
424
    }
425

    
426
    /**
427
     * Sets the value of the references property.
428
     * 
429
     * @param value
430
     *     allowed object is
431
     *     {@link List<SpecimenOrObservationBase> }
432
     *     
433
     */
434
    public void setOccurrences(List<SpecimenOrObservationBase> value) {
435
        this.occurrences = value;
436
    }
437

    
438
    /**
439
     * Gets the value of the references property.
440
     * 
441
     * @return
442
     *     possible object is
443
     *     {@link List<Reference> }
444
     *     
445
     */
446
    public List<Reference> getReferences() {
447
        return references;
448
    }
449

    
450
    /**
451
     * Sets the value of the references property.
452
     * 
453
     * @param value
454
     *     allowed object is
455
     *     {@link List<Reference> }
456
     *     
457
     */
458
    public void setReferences(List<Reference> value) {
459
        this.references = value;
460
    }
461

    
462
    /**
463
     * Adds the referenced entities in value to the referenced entity property list.
464
     * 
465
     * @param value
466
     *     allowed object is
467
     *     {@link Collection<ReferencedEntityBase> }
468
     *     
469
     */
470
    public <T extends ReferencedEntityBase> void addReferencedEntities(Collection<T> value) {
471
    	for (T referencedEntity: value) {
472
    		this.referencedEntities.add(referencedEntity);
473
    	}
474
    }
475

    
476
    /**
477
     * Gets the value of the  property.
478
     * 
479
     * @return
480
     *     possible object is
481
     *     {@link List<ReferencedEntityBase> }
482
     *     
483
     */
484
    public List<ReferencedEntityBase> getReferencedEntities() {
485
        return referencedEntities;
486
    }
487

    
488
    /**
489
     * Sets the value of the referencedEntities property.
490
     * 
491
     * @param value
492
     *     allowed object is
493
     *     {@link List<ReferencedEntityBase> }
494
     *     
495
     */
496
    public void setReferencedEntities(List<? extends ReferencedEntityBase> value) {
497
        this.referencedEntities = new ArrayList<ReferencedEntityBase>();
498
        referencedEntities.addAll(value);
499
    }
500
    
501
    /**
502
     * Adds the features in value to the feature data property list.
503
     * 
504
     * @param value
505
     *     allowed object is
506
     *     {@link Collection<VersionableEntity> }
507
     *     
508
     */
509
    public <T extends VersionableEntity> void addFeatureData(Collection<T> value) {
510
    	for (T featureItem: value) {
511
    		this.featureData.add(featureItem);
512
    	}
513
    }
514

    
515
    /**
516
     * Gets the value of the feature data property.
517
     * 
518
     * @return
519
     *     possible object is
520
     *     {@link List<VersionableEntity> }
521
     *     
522
     */
523
//    public List<VersionableEntity> getFeatureData() {
524
    public List<VersionableEntity> getFeatureData() {
525
        return featureData;
526
    }
527

    
528
    /**
529
     * Sets the value of the feature data property.
530
     * 
531
     * @param value
532
     *     allowed object is
533
     *     {@link List<VersionableEntity> }
534
     *     
535
     */
536
    public <T extends VersionableEntity> void setFeatureData(List<T> value) {
537
        featureData = new ArrayList<VersionableEntity>();
538
    	for (T featureItem: value) {
539
    		this.featureData.add(featureItem);
540
    	}
541
    }
542

    
543
//    public void setFeatureData(List<? extends VersionableEntity> value) {
544
    //public void setFeatureData(List<? extends VersionableEntity<?>> value) {
545
//        this.featureData = new ArrayList<VersionableEntity>();
546
    //    this.featureData = new ArrayList<VersionableEntity<?>>();
547
    //    featureData.addAll(value);
548
    //}
549
    
550
    /**
551
     * Adds the features in value to the language data property list.
552
     * 
553
     * @param value
554
     *     allowed object is
555
     *     {@link Collection<LanguageStringBase> }
556
     *     
557
     */
558
    public <T extends LanguageStringBase> void addLanguageData(Collection<T> value) {
559
    	for (T languageItem: value) {
560
    		this.languageData.add(languageItem);
561
    	}
562
    }
563

    
564
    /**
565
     * Gets the value of the language data property.
566
     * 
567
     * @return
568
     *     possible object is
569
     *     {@link List<LanguageStringBase> }
570
     *     
571
     */
572
    public List<LanguageStringBase> getLanguageData() {
573
        return languageData;
574
    }
575

    
576
    /**
577
     * Sets the value of the feature data property.
578
     * 
579
     * @param value
580
     *     allowed object is
581
     *     {@link List<LanguageStringBase> }
582
     *     
583
     */
584
    public void setLanguageData(List<? extends LanguageStringBase> value) {
585
        this.languageData = new ArrayList<LanguageStringBase>();
586
        languageData.addAll(value);
587
    }
588
    
589
    /**
590
     * Adds the taxa in value to the taxa property list.
591
     * 
592
     * @param value
593
     *     allowed object is
594
     *     {@link Collection<Taxon> }
595
     *     
596
     */
597
    public void addTaxa(Collection<Taxon> value) {
598
    	for (Taxon taxon: value) {
599
    		this.taxa.add(taxon);
600
    	}
601
    }
602

    
603
    /**
604
     * Gets the value of the taxa property.
605
     * 
606
     * @return
607
     *     possible object is
608
     *     {@link List<Taxon> }
609
     *     
610
     */
611
//    public List<Taxon> getTaxa() {
612
//        return taxa;
613
//    }
614

    
615
    /**
616
     * Gets the value of the taxa property as {@link Collection<TaxonBase> }
617
     * 
618
     * @return
619
     *     possible object is
620
     *     {@link Collection<TaxonBase> }
621
     *     
622
     */
623
    public Collection<? extends TaxonBase> getTaxa() {
624
    	
625
    	//TODO can be deleted when everything works
626
    	//Object obj = taxa;
627
    	//Collection<TaxonBase> taxonBases = (Collection<TaxonBase>)obj;
628
        List<Taxon> list = taxa;
629
    	return list;
630
    }
631

    
632
    public Collection<TaxonBase> getTaxonBases() {
633
    	
634
    	Collection<TaxonBase> result = new HashSet<TaxonBase>();;
635
    	if (taxa != null) {
636
        	result.addAll(taxa);
637
    	}
638
    	if (synonyms != null) {
639
        	result.addAll(synonyms);
640
    	}
641
        return result;
642
    }
643

    
644
    /**
645
     * Sets the value of the taxa property.
646
     * 
647
     * @param value
648
     *     allowed object is
649
     *     {@link List<Taxon> }
650
     *     
651
     */
652
    public void setTaxa(List<Taxon> value) {
653
        this.taxa = value;
654
    }
655

    
656
    /**
657
     * Adds the taxon in value to the taxa property list.
658
     * 
659
     * @param value
660
     *     
661
     */
662
    public void addTaxon(Taxon value) {
663
    		this.taxa.add(value);
664
    }
665

    
666

    
667
    /**
668
     * Gets the value of the synonyms property.
669
     * 
670
     * @return
671
     *     possible object is
672
     *     {@link List<Synonym> }
673
     *     
674
     */
675
    public List<Synonym> getSynonyms() {
676
        return synonyms;
677
    }
678

    
679
    /**
680
     * Sets the value of the synonyms property.
681
     * 
682
     * @param value
683
     *     allowed object is
684
     *     {@link List<Synonym> }
685
     *     
686
     */
687
    public void setSynonyms(List<Synonym> value) {
688
        this.synonyms = value;
689
    }
690
    
691
    /**
692
     * Adds the synonym in value to the taxa property list.
693
     * 
694
     * @param value
695
     *     
696
     */
697
    public void addSynonym(Synonym value) {
698
    		this.synonyms.add(value);
699
    }
700
    
701
    /**
702
     * Adds the synonym in value to the synonyms property list.
703
     * 
704
     * @param value
705
     *     allowed object is
706
     *     {@link Collection<Synonym> }
707
     *     
708
     */
709
    public void addSynonyms(Collection<Synonym> value) {
710
    	for (Synonym synonym: value) {
711
    		this.synonyms.add(synonym);
712
    	}
713
    }
714

    
715
    /**
716
     * Gets the value of the relationships property.
717
     * 
718
     * @return
719
     *     possible object is
720
     *     {@link Set<RelationshipBase> }
721
     *     
722
     */
723
    public Set<RelationshipBase> getRelationships() {
724
        return relationships;
725
    }
726

    
727
    /**
728
     * Sets the value of the relationships property.
729
     * 
730
     * @param value
731
     *     allowed object is
732
     *     {@link Set<RelationshipBase> }
733
     *     
734
     */
735
    public void setRelationships(Set<RelationshipBase> value) {
736
        this.relationships = value;
737
    }
738

    
739
    /**
740
     * Adds the relationship in value to the relationships property list.
741
     * 
742
     * @param value
743
     *     allowed object is
744
     *     {@link Collection<RelationshipBase> }
745
     *     
746
     */
747
    public void addRelationships(Collection<? extends RelationshipBase> value) {
748
    	for (RelationshipBase relationship: value) {
749
    		this.relationships.add(relationship);
750
    	}
751
    }
752

    
753
    /**
754
     * Adds the media in value to the media property list.
755
     * 
756
     * @param value
757
     *     allowed object is
758
     *     {@link Collection<VersionableEntity> }
759
     *     
760
     */
761
    public <T extends VersionableEntity> void addMedia(Collection<T> value) {
762
    	for (T medium: value) {
763
    		this.media.add(medium);
764
    	}
765
    }
766

    
767
    /**
768
     * Gets the value of the  property.
769
     * 
770
     * @return
771
     *     possible object is
772
     *     {@link List<ReferencedEntityBase> }
773
     *     
774
     */
775
    public List<VersionableEntity> getMedia() {
776
        return media;
777
    }
778

    
779
    /**
780
     * Sets the value of the referencedEntities property.
781
     * 
782
     * @param value
783
     *     allowed object is
784
     *     {@link List<ReferencedEntityBase> }
785
     *     
786
     */
787
    public void setMedia(List<? extends VersionableEntity> value) {
788
        this.media = new ArrayList<VersionableEntity>();
789
        media.addAll(value);
790
    }
791
    
792
    /**
793
     * Gets the value of the synonyms property.
794
     * 
795
     * @return
796
     *     possible object is
797
     *     {@link List<Synonym> }
798
     *     
799
     */
800
    public List<HomotypicalGroup> getHomotypicalGroups() {
801
        return homotypicalGroups;
802
    }
803

    
804
    /**
805
     * Sets the value of the synonyms property.
806
     * 
807
     * @param value
808
     *     allowed object is
809
     *     {@link List<Synonym> }
810
     *     
811
     */
812
    public void setHomotypicalGroups(List<HomotypicalGroup> value) {
813
        this.homotypicalGroups = value;
814
    }
815
    
816
}
(2-2/5)