Project

General

Profile

Download (25.9 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.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.DefinedTerm;
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.Feature;
47
import eu.etaxonomy.cdm.model.description.FeatureNode;
48
import eu.etaxonomy.cdm.model.description.FeatureTree;
49
import eu.etaxonomy.cdm.model.description.MeasurementUnit;
50
import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
51
import eu.etaxonomy.cdm.model.description.State;
52
import eu.etaxonomy.cdm.model.description.StatisticalMeasure;
53
import eu.etaxonomy.cdm.model.description.TextFormat;
54
import eu.etaxonomy.cdm.model.location.Country;
55
import eu.etaxonomy.cdm.model.location.NamedArea;
56
import eu.etaxonomy.cdm.model.location.NamedAreaLevel;
57
import eu.etaxonomy.cdm.model.location.NamedAreaType;
58
import eu.etaxonomy.cdm.model.location.ReferenceSystem;
59
import eu.etaxonomy.cdm.model.media.RightsType;
60
import eu.etaxonomy.cdm.model.molecular.DnaSample;
61
import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
62
import eu.etaxonomy.cdm.model.name.HybridRelationship;
63
import eu.etaxonomy.cdm.model.name.HybridRelationshipType;
64
import eu.etaxonomy.cdm.model.name.NameRelationship;
65
import eu.etaxonomy.cdm.model.name.NameRelationshipType;
66
import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
67
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
68
import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
69
import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
70
import eu.etaxonomy.cdm.model.name.Rank;
71
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
72
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
73
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
74
import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;
75
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
76
import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;
77
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
78
import eu.etaxonomy.cdm.model.reference.Reference;
79
import eu.etaxonomy.cdm.model.taxon.Synonym;
80
import eu.etaxonomy.cdm.model.taxon.SynonymType;
81
import eu.etaxonomy.cdm.model.taxon.Taxon;
82
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
83
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
84
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
85

    
86
/**
87
 * @author a.babadshanjan
88
 */
89
@XmlAccessorType(XmlAccessType.FIELD)
90
@XmlType(name = "", propOrder = {
91
	    "terms",
92
	    "termVocabularies",
93
		"agents",
94
		"agentData",
95
		"occurrences",
96
	    "references",
97
	    "referencedEntities",
98
	    "featureData",
99
	    "languageData",
100
	    "taxonomicNames",
101
	    "homotypicalGroups",
102
	    "taxa",
103
	    "synonyms",
104
	    "relationships",
105
	    "media"
106
})
107
@XmlRootElement(name = "DataSet", namespace = "http://etaxonomy.eu/cdm/model/1.0")
108
public class SDDDataSet {
109

    
110
    // Some fields are of type List and some are of type Set.
111
	// This is mainly because
112
	// the service classes return lists, i.e.
113
    // TaxonServiceImpl.getRootTaxa() returns List<Taxon>
114
	// and the Taxon methods return sets, i.e.
115
    // Taxon.getTaxonomicChildren() returns Set<Taxon>.
116

    
117
    @XmlElementWrapper(name = "Agents")
118
    @XmlElements({
119
        @XmlElement(name = "Team", namespace = "http://etaxonomy.eu/cdm/model/agent/1.0", type = Team.class),
120
        @XmlElement(name = "Institution", namespace = "http://etaxonomy.eu/cdm/model/agent/1.0", type = Institution.class),
121
        @XmlElement(name = "Person", namespace = "http://etaxonomy.eu/cdm/model/agent/1.0", type = Person.class)
122
    })
123
    protected List<? extends AgentBase> agents;
124

    
125
    @XmlElementWrapper(name = "AgentData")
126
    @XmlElements({
127
    @XmlElement(name = "Address", namespace = "http://etaxonomy.eu/cdm/model/agent/1.0", type = Address.class),
128
    @XmlElement(name = "Contact", namespace = "http://etaxonomy.eu/cdm/model/agent/1.0", type = Contact.class),
129
    @XmlElement(name = "InstitutionalMembership", namespace = "http://etaxonomy.eu/cdm/model/agent/1.0", type = InstitutionalMembership.class)
130
    })
131
    protected List<VersionableEntity> agentData;
132

    
133
    @XmlElementWrapper(name = "FeatureData")
134
    @XmlElements({
135
    @XmlElement(name = "FeatureNode", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = FeatureNode.class),
136
    @XmlElement(name = "FeatureTree", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = FeatureTree.class)
137
    })
138
//    protected List<VersionableEntity> featureData;
139
    protected List<VersionableEntity> featureData;
140

    
141
    @XmlElementWrapper(name = "LanguageData")
142
    @XmlElements({
143
    @XmlElement(name = "Representation", namespace = "http://etaxonomy.eu/cdm/model/common/1.0", type = Representation.class),
144
    @XmlElement(name = "LanguageString", namespace = "http://etaxonomy.eu/cdm/model/common/1.0", type = LanguageString.class)
145
    })
146
    protected List<LanguageStringBase> languageData;
147

    
148
    @XmlElementWrapper(name = "Terms")
149
    @XmlElements({
150
    	@XmlElement(name = "AnnotationType", namespace = "http://etaxonomy.eu/cdm/model/common/1.0", type = AnnotationType.class),
151
    	@XmlElement(name = "Continent", namespace = "http://etaxonomy.eu/cdm/model/location/1.0", type = NamedArea.class),
152
    	@XmlElement(name = "DerivationEventType", namespace = "http://etaxonomy.eu/cdm/model/occurrence/1.0", type = DerivationEventType.class),
153
    	@XmlElement(name = "DeterminationModifier", namespace = "http://etaxonomy.eu/cdm/model/occurrence/1.0", type = DefinedTerm.class),
154
    	@XmlElement(name = "ExtensionType", namespace = "http://etaxonomy.eu/cdm/model/common/1.0", type = ExtensionType.class),
155
    	@XmlElement(name = "Feature", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = Feature.class),
156
    	@XmlElement(name = "HybridRelationshipType", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = HybridRelationshipType.class),
157
    	@XmlElement(name = "InstitutionType", namespace = "http://etaxonomy.eu/cdm/model/agent/1.0", type = DefinedTerm.class),
158
    	@XmlElement(name = "Language", namespace = "http://etaxonomy.eu/cdm/model/common/1.0", type = Language.class),
159
    	@XmlElement(name = "MarkerType", namespace = "http://etaxonomy.eu/cdm/model/common/1.0", type = MarkerType.class),
160
    	@XmlElement(name = "MeasurementUnit", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = MeasurementUnit.class),
161
    	@XmlElement(name = "Modifier", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = DefinedTerm.class),
162
    	@XmlElement(name = "NamedArea", namespace = "http://etaxonomy.eu/cdm/model/location/1.0", type = NamedArea.class),
163
    	@XmlElement(name = "NamedAreaLevel", namespace = "http://etaxonomy.eu/cdm/model/location/1.0", type = NamedAreaLevel.class),
164
    	@XmlElement(name = "NamedAreaType", namespace = "http://etaxonomy.eu/cdm/model/location/1.0", type = NamedAreaType.class),
165
    	@XmlElement(name = "NameRelationshipType", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = NameRelationshipType.class),
166
    	@XmlElement(name = "NomenclaturalCode", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = NomenclaturalCode.class),
167
    	@XmlElement(name = "NomenclaturalStatusType", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = NomenclaturalStatusType.class),
168
    	@XmlElement(name = "PresenceAbsenceTerm", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = PresenceAbsenceTerm.class),
169
    	@XmlElement(name = "PreservationMethod", namespace = "http://etaxonomy.eu/cdm/model/occurrence/1.0", type = PreservationMethod.class),
170
        @XmlElement(name = "Rank", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = Rank.class),
171
    	@XmlElement(name = "ReferenceSystem", namespace = "http://etaxonomy.eu/cdm/model/location/1.0", type = ReferenceSystem.class),
172
    	@XmlElement(name = "RightsType", namespace = "http://etaxonomy.eu/cdm/model/media/1.0", type = RightsType.class),
173
    	@XmlElement(name = "Scope", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = DefinedTerm.class),
174
    	@XmlElement(name = "Sex", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = DefinedTerm.class),
175
    	@XmlElement(name = "Stage", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = DefinedTerm.class),
176
    	@XmlElement(name = "State", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = State.class),
177
    	@XmlElement(name = "StatisticalMeasure", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = StatisticalMeasure.class),
178
    	@XmlElement(name = "SynonymType", namespace = "http://etaxonomy.eu/cdm/model/taxon/1.0", type = SynonymType.class),
179
    	@XmlElement(name = "TaxonRelationshipType", namespace = "http://etaxonomy.eu/cdm/model/taxon/1.0", type = TaxonRelationshipType.class),
180
    	@XmlElement(name = "TextFormat", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = TextFormat.class),
181
    	@XmlElement(name = "TypeDesignationStatus", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = SpecimenTypeDesignationStatus.class),
182
    	@XmlElement(name = "Country", namespace = "http://etaxonomy.eu/cdm/model/location/1.0", type = Country.class)
183
    })
184
    protected List<DefinedTermBase> terms;
185

    
186
    @XmlElementWrapper(name = "TermVocabularies")
187
    @XmlElement(name = "TermVocabulary", namespace = "http://etaxonomy.eu/cdm/model/common/1.0")
188
    protected List<TermVocabulary<DefinedTermBase>> termVocabularies;
189

    
190
    @XmlElementWrapper(name = "Occurrences")
191
    @XmlElements({
192
    	@XmlElement(name = "DnaSample", namespace = "http://etaxonomy.eu/cdm/model/occurrence/1.0", type = DnaSample.class),
193
    	@XmlElement(name = "FieldUnit", namespace = "http://etaxonomy.eu/cdm/model/occurrence/1.0", type = FieldUnit.class)
194
    })
195
    protected List<SpecimenOrObservationBase> occurrences;
196

    
197
    @XmlElementWrapper(name = "References")
198
   	@XmlElement(name = "Reference", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Reference.class)
199

    
200
    protected List<Reference> references;
201

    
202
    @XmlElementWrapper(name = "ReferencedEntities")
203
    @XmlElements({
204
    	@XmlElement(name = "NomenclaturalStatus", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = NomenclaturalStatus.class),
205
    	@XmlElement(name = "NameTypeDesignation", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = NameTypeDesignation.class),
206
    	@XmlElement(name = "SpecimenTypeDesignation", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = SpecimenTypeDesignation.class)
207
    })
208
    protected List<ReferencedEntityBase> referencedEntities;
209

    
210

    
211
    @XmlElementWrapper(name = "TaxonomicNames")
212
    @XmlElements({
213
    	@XmlElement(name = "TaxonNameBase", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = TaxonNameBase.class),
214
    })
215
    protected List<TaxonNameBase> taxonomicNames;
216

    
217
    @XmlElementWrapper(name = "Taxa")
218
    @XmlElement(name = "Taxon", namespace = "http://etaxonomy.eu/cdm/model/taxon/1.0")
219
    protected List<Taxon> taxa;
220

    
221
    @XmlElementWrapper(name = "Synonyms")
222
    @XmlElement(name = "Synonym", namespace = "http://etaxonomy.eu/cdm/model/taxon/1.0")
223
    protected List<Synonym> synonyms;
224

    
225
    @XmlElementWrapper(name = "Relationships")
226
    @XmlElements({
227
    	@XmlElement(name = "TaxonRelationship", namespace = "http://etaxonomy.eu/cdm/model/taxon/1.0", type = TaxonRelationship.class),
228
     	@XmlElement(name = "NameRelationship", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = NameRelationship.class),
229
    	@XmlElement(name = "HybridRelationship", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = HybridRelationship.class)
230
    })
231
    protected Set<RelationshipBase> relationshipsX;
232

    
233
    @XmlElementWrapper(name = "Media_")
234
    @XmlElement(name = "Media", namespace = "http://etaxonomy.eu/cdm/model/media/1.0")
235
    protected List<VersionableEntity> media;
236

    
237
    @XmlElementWrapper(name = "HomotypicalGroups")
238
    @XmlElement(name = "HomotypicalGroup", namespace = "http://etaxonomy.eu/cdm/model/name/1.0")
239
    protected List<HomotypicalGroup> homotypicalGroups;
240

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

    
243
	public SDDDataSet () {
244

    
245
		agents = new ArrayList<>();
246
		agentData = new ArrayList<>();
247
//		featureData = new ArrayList<VersionableEntity>();
248
		featureData = new ArrayList<>();
249
		languageData = new ArrayList<>();
250
		terms = new ArrayList<>();
251
		termVocabularies = new ArrayList<>();
252
		occurrences = new ArrayList<>();
253
		references = new ArrayList<>();
254
		referencedEntities = new ArrayList<>();
255
		taxonomicNames = new ArrayList<>();
256
		taxa = new ArrayList<>();
257
		synonyms = new ArrayList<>();
258
		media = new ArrayList<>();
259
		homotypicalGroups = new ArrayList<>();
260
	}
261

    
262
    /**
263
     * Gets the value of the agents property.
264
     *
265
     * @return
266
     *     possible object is
267
     *     {@link List<Agent> }
268
     *
269
     */
270
    public List<? extends AgentBase> getAgents() {
271
        return agents;
272
    }
273

    
274
    /**
275
     * Sets the value of the agents property.
276
     *
277
     * @param value
278
     *     allowed object is
279
     *     {@link List<Agent> }
280
     *
281
     */
282
    public void setAgents(List<? extends AgentBase> value) {
283
        this.agents = value;
284
    }
285

    
286
    /**
287
     * Gets the value of the agentData property.
288
     *
289
     * @return
290
     *     possible object is
291
     *     {@link List<VersionableEntity> }
292
     *
293
     */
294
    public List<VersionableEntity> getAgentData() {
295
        return agentData;
296
    }
297

    
298
    /**
299
     * Sets the value of the agentData property.
300
     *
301
     * @param value
302
     *     allowed object is
303
     *     {@link List<VersionableEntity> }
304
     *
305
     */
306
    public void setAgentData(List<VersionableEntity> value) {
307
        this.agentData = value;
308
    }
309

    
310
    /**
311
     * Gets the value of the terms property.
312
     *
313
     * @return
314
     *     possible object is
315
     *     {@link List<TermBase> }
316
     *
317
     */
318

    
319
    //public List<? extends TermBase> getTerms() {
320
    public List<DefinedTermBase> getTerms() {
321
        return terms;
322
    }
323

    
324
    /**
325
     * Sets the value of the terms property.
326
     *
327
     * @param value
328
     *     allowed object is
329
     *     {@link List<TermBase> }
330
     *
331
     */
332
    //public void setTerms(List<? extends TermBase> value) {
333
    public void setTerms(List<DefinedTermBase> value) {
334
        this.terms = value;
335
    }
336

    
337
    /**
338
     * Gets the value of the term vocabularies property.
339
     *
340
     * @return
341
     *     possible object is
342
     *     {@link List<TermVocabulary> }
343
     *
344
     */
345

    
346
    public List<TermVocabulary<DefinedTermBase>> getTermVocabularies() {
347
        return termVocabularies;
348
    }
349

    
350
    /**
351
     * Sets the value of the term vocabularies property.
352
     *
353
     * @param value
354
     *     allowed object is
355
     *     {@link List<TermVocabulary> }
356
     *
357
     */
358
    public void setTermVocabularies(List<TermVocabulary<DefinedTermBase>> value) {
359
        this.termVocabularies = value;
360
    }
361

    
362
    /**
363
     * Gets the value of the taxonomicNames property.
364
     *
365
     * @return
366
     *     possible object is
367
     *     {@link List<axonNameBase> }
368
     *
369
     */
370
    public List<TaxonNameBase> getTaxonomicNames() {
371
        return taxonomicNames;
372
    }
373

    
374
    /**
375
     * Sets the value of the taxonomicNames property.
376
     *
377
     * @param value
378
     *     allowed object is
379
     *     {@link List<TaxonNameBase> }
380
     *
381
     */
382
    public void setTaxonomicNames(List<TaxonNameBase> value) {
383
        this.taxonomicNames = value;
384
    }
385

    
386
    /**
387
     * Gets the value of the references property.
388
     *
389
     * @return
390
     *     possible object is
391
     *     {@link List<SpecimenOrObservationBase> }
392
     *
393
     */
394
    public List<SpecimenOrObservationBase> getOccurrences() {
395
        return occurrences;
396
    }
397

    
398
    /**
399
     * Sets the value of the references property.
400
     *
401
     * @param value
402
     *     allowed object is
403
     *     {@link List<SpecimenOrObservationBase> }
404
     *
405
     */
406
    public void setOccurrences(List<SpecimenOrObservationBase> value) {
407
        this.occurrences = value;
408
    }
409

    
410
    /**
411
     * Gets the value of the references property.
412
     *
413
     * @return
414
     *     possible object is
415
     *     {@link List<Reference> }
416
     *
417
     */
418
    public List<Reference> getReferences() {
419
        return references;
420
    }
421

    
422
    /**
423
     * Sets the value of the references property.
424
     *
425
     * @param value
426
     *     allowed object is
427
     *     {@link List<Reference> }
428
     *
429
     */
430
    public void setReferences(List<Reference> value) {
431
        this.references = value;
432
    }
433

    
434
    /**
435
     * Adds the referenced entities in value to the referenced entity property list.
436
     *
437
     * @param value
438
     *     allowed object is
439
     *     {@link Collection<ReferencedEntityBase> }
440
     *
441
     */
442
    public <T extends ReferencedEntityBase> void addReferencedEntities(Collection<T> value) {
443
    	for (T referencedEntity: value) {
444
    		this.referencedEntities.add(referencedEntity);
445
    	}
446
    }
447

    
448
    /**
449
     * Gets the value of the  property.
450
     *
451
     * @return
452
     *     possible object is
453
     *     {@link List<ReferencedEntityBase> }
454
     *
455
     */
456
    public List<ReferencedEntityBase> getReferencedEntities() {
457
        return referencedEntities;
458
    }
459

    
460
    /**
461
     * Sets the value of the referencedEntities property.
462
     *
463
     * @param value
464
     *     allowed object is
465
     *     {@link List<ReferencedEntityBase> }
466
     *
467
     */
468
    public void setReferencedEntities(List<? extends ReferencedEntityBase> value) {
469
        this.referencedEntities = new ArrayList<ReferencedEntityBase>();
470
        referencedEntities.addAll(value);
471
    }
472

    
473
    /**
474
     * Adds the features in value to the feature data property list.
475
     *
476
     * @param value
477
     *     allowed object is
478
     *     {@link Collection<VersionableEntity> }
479
     *
480
     */
481
    public <T extends VersionableEntity> void addFeatureData(Collection<T> value) {
482
    	for (T featureItem: value) {
483
    		this.featureData.add(featureItem);
484
    	}
485
    }
486

    
487
    /**
488
     * Gets the value of the feature data property.
489
     *
490
     * @return
491
     *     possible object is
492
     *     {@link List<VersionableEntity> }
493
     *
494
     */
495
//    public List<VersionableEntity> getFeatureData() {
496
    public List<VersionableEntity> getFeatureData() {
497
        return featureData;
498
    }
499

    
500
    /**
501
     * Sets the value of the feature data property.
502
     *
503
     * @param value
504
     *     allowed object is
505
     *     {@link List<VersionableEntity> }
506
     *
507
     */
508
    public <T extends VersionableEntity> void setFeatureData(List<T> value) {
509
        featureData = new ArrayList<VersionableEntity>();
510
    	for (T featureItem: value) {
511
    		this.featureData.add(featureItem);
512
    	}
513
    }
514

    
515
//    public void setFeatureData(List<? extends VersionableEntity> value) {
516
    //public void setFeatureData(List<? extends VersionableEntity<?>> value) {
517
//        this.featureData = new ArrayList<VersionableEntity>();
518
    //    this.featureData = new ArrayList<VersionableEntity<?>>();
519
    //    featureData.addAll(value);
520
    //}
521

    
522
    /**
523
     * Adds the features in value to the language data property list.
524
     *
525
     * @param value
526
     *     allowed object is
527
     *     {@link Collection<LanguageStringBase> }
528
     *
529
     */
530
    public <T extends LanguageStringBase> void addLanguageData(Collection<T> value) {
531
    	for (T languageItem: value) {
532
    		this.languageData.add(languageItem);
533
    	}
534
    }
535

    
536
    /**
537
     * Gets the value of the language data property.
538
     *
539
     * @return
540
     *     possible object is
541
     *     {@link List<LanguageStringBase> }
542
     *
543
     */
544
    public List<LanguageStringBase> getLanguageData() {
545
        return languageData;
546
    }
547

    
548
    /**
549
     * Sets the value of the feature data property.
550
     *
551
     * @param value
552
     *     allowed object is
553
     *     {@link List<LanguageStringBase> }
554
     *
555
     */
556
    public void setLanguageData(List<? extends LanguageStringBase> value) {
557
        this.languageData = new ArrayList<LanguageStringBase>();
558
        languageData.addAll(value);
559
    }
560

    
561
    /**
562
     * Adds the taxa in value to the taxa property list.
563
     *
564
     * @param value
565
     *     allowed object is
566
     *     {@link Collection<Taxon> }
567
     *
568
     */
569
    public void addTaxa(Collection<Taxon> value) {
570
    	for (Taxon taxon: value) {
571
    		this.taxa.add(taxon);
572
    	}
573
    }
574

    
575
    /**
576
     * Gets the value of the taxa property.
577
     *
578
     * @return
579
     *     possible object is
580
     *     {@link List<Taxon> }
581
     *
582
     */
583
//    public List<Taxon> getTaxa() {
584
//        return taxa;
585
//    }
586

    
587
    /**
588
     * Gets the value of the taxa property as {@link Collection<TaxonBase> }
589
     *
590
     * @return
591
     *     possible object is
592
     *     {@link Collection<TaxonBase> }
593
     *
594
     */
595
    public Collection<? extends TaxonBase> getTaxa() {
596

    
597
    	//TODO can be deleted when everything works
598
    	//Object obj = taxa;
599
    	//Collection<TaxonBase> taxonBases = (Collection<TaxonBase>)obj;
600
        List<Taxon> list = taxa;
601
    	return list;
602
    }
603

    
604
    public Collection<TaxonBase> getTaxonBases() {
605

    
606
    	Collection<TaxonBase> result = new HashSet<TaxonBase>();;
607
    	if (taxa != null) {
608
        	result.addAll(taxa);
609
    	}
610
    	if (synonyms != null) {
611
        	result.addAll(synonyms);
612
    	}
613
        return result;
614
    }
615

    
616
    /**
617
     * Sets the value of the taxa property.
618
     *
619
     * @param value
620
     *     allowed object is
621
     *     {@link List<Taxon> }
622
     *
623
     */
624
    public void setTaxa(List<Taxon> value) {
625
        this.taxa = value;
626
    }
627

    
628
    /**
629
     * Adds the taxon in value to the taxa property list.
630
     *
631
     * @param value
632
     *
633
     */
634
    public void addTaxon(Taxon value) {
635
    		this.taxa.add(value);
636
    }
637

    
638

    
639
    /**
640
     * Gets the value of the synonyms property.
641
     *
642
     * @return
643
     *     possible object is
644
     *     {@link List<Synonym> }
645
     *
646
     */
647
    public List<Synonym> getSynonyms() {
648
        return synonyms;
649
    }
650

    
651
    /**
652
     * Sets the value of the synonyms property.
653
     *
654
     * @param value
655
     *     allowed object is
656
     *     {@link List<Synonym> }
657
     *
658
     */
659
    public void setSynonyms(List<Synonym> value) {
660
        this.synonyms = value;
661
    }
662

    
663
    /**
664
     * Adds the synonym in value to the taxa property list.
665
     *
666
     * @param value
667
     *
668
     */
669
    public void addSynonym(Synonym value) {
670
    		this.synonyms.add(value);
671
    }
672

    
673
    /**
674
     * Adds the synonym in value to the synonyms property list.
675
     *
676
     * @param value
677
     *     allowed object is
678
     *     {@link Collection<Synonym> }
679
     *
680
     */
681
    public void addSynonyms(Collection<Synonym> value) {
682
    	for (Synonym synonym: value) {
683
    		this.synonyms.add(synonym);
684
    	}
685
    }
686

    
687
    /**
688
     * Adds the media in value to the media property list.
689
     *
690
     * @param value
691
     *     allowed object is
692
     *     {@link Collection<VersionableEntity> }
693
     *
694
     */
695
    public <T extends VersionableEntity> void addMedia(Collection<T> value) {
696
    	for (T medium: value) {
697
    		this.media.add(medium);
698
    	}
699
    }
700

    
701
    /**
702
     * Gets the value of the  property.
703
     *
704
     * @return
705
     *     possible object is
706
     *     {@link List<ReferencedEntityBase> }
707
     *
708
     */
709
    public List<VersionableEntity> getMedia() {
710
        return media;
711
    }
712

    
713
    /**
714
     * Sets the value of the referencedEntities property.
715
     *
716
     * @param value
717
     *     allowed object is
718
     *     {@link List<ReferencedEntityBase> }
719
     *
720
     */
721
    public void setMedia(List<? extends VersionableEntity> value) {
722
        this.media = new ArrayList<VersionableEntity>();
723
        media.addAll(value);
724
    }
725

    
726
    /**
727
     * Gets the value of the synonyms property.
728
     *
729
     * @return
730
     *     possible object is
731
     *     {@link List<Synonym> }
732
     *
733
     */
734
    public List<HomotypicalGroup> getHomotypicalGroups() {
735
        return homotypicalGroups;
736
    }
737

    
738
    /**
739
     * Sets the value of the synonyms property.
740
     *
741
     * @param value
742
     *     allowed object is
743
     *     {@link List<Synonym> }
744
     *
745
     */
746
    public void setHomotypicalGroups(List<HomotypicalGroup> value) {
747
        this.homotypicalGroups = value;
748
    }
749

    
750
}
(2-2/5)