minor
[cdmlib.git] / cdmlib-io / src / main / java / eu / etaxonomy / cdm / io / jaxb / DataSet.java
index 64a25ab7b20855eb9571e09a36fc1757248fe5e4..0a3099fe1ae9bd77f27ed841d08ecbe1627d038f 100644 (file)
@@ -2,15 +2,16 @@
 * Copyright (C) 2008 EDIT\r
 * European Distributed Institute of Taxonomy \r
 * http://www.e-taxonomy.eu\r
+ * \r
+ * The contents of this file are subject to the Mozilla Public License Version 1.1\r
+ * See LICENSE.TXT at the top of this package for the full license terms.\r
 */\r
 \r
 package eu.etaxonomy.cdm.io.jaxb;\r
 \r
 import java.util.ArrayList;\r
 import java.util.Collection;\r
-import java.util.HashSet;\r
 import java.util.List;\r
-import java.util.Set;\r
 \r
 import javax.xml.bind.annotation.XmlAccessType;\r
 import javax.xml.bind.annotation.XmlAccessorType;\r
@@ -20,35 +21,34 @@ import javax.xml.bind.annotation.XmlElements;
 import javax.xml.bind.annotation.XmlRootElement;\r
 import javax.xml.bind.annotation.XmlType;\r
 \r
-import eu.etaxonomy.cdm.model.agent.Address;\r
-import eu.etaxonomy.cdm.model.agent.Agent;\r
-import eu.etaxonomy.cdm.model.agent.Contact;\r
+import org.springframework.security.core.GrantedAuthority;\r
+\r
+import eu.etaxonomy.cdm.model.agent.AgentBase;\r
 import eu.etaxonomy.cdm.model.agent.Institution;\r
 import eu.etaxonomy.cdm.model.agent.InstitutionType;\r
-import eu.etaxonomy.cdm.model.agent.InstitutionalMembership;\r
 import eu.etaxonomy.cdm.model.agent.Person;\r
 import eu.etaxonomy.cdm.model.agent.Team;\r
 import eu.etaxonomy.cdm.model.common.AnnotationType;\r
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
+import eu.etaxonomy.cdm.model.common.EventBase;\r
 import eu.etaxonomy.cdm.model.common.ExtensionType;\r
-import eu.etaxonomy.cdm.model.common.Keyword;\r
+import eu.etaxonomy.cdm.model.common.Figure;\r
+import eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl;\r
+import eu.etaxonomy.cdm.model.common.Group;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
 import eu.etaxonomy.cdm.model.common.LanguageString;\r
-import eu.etaxonomy.cdm.model.common.LanguageStringBase;\r
 import eu.etaxonomy.cdm.model.common.MarkerType;\r
-import eu.etaxonomy.cdm.model.common.MultilanguageText;\r
-import eu.etaxonomy.cdm.model.common.ReferencedEntityBase;\r
-import eu.etaxonomy.cdm.model.common.RelationshipBase;\r
-import eu.etaxonomy.cdm.model.common.Representation;\r
-import eu.etaxonomy.cdm.model.common.TermBase;\r
+import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;\r
 import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
-import eu.etaxonomy.cdm.model.common.VersionableEntity;\r
+import eu.etaxonomy.cdm.model.common.User;\r
 import eu.etaxonomy.cdm.model.description.AbsenceTerm;\r
 import eu.etaxonomy.cdm.model.description.Feature;\r
 import eu.etaxonomy.cdm.model.description.FeatureNode;\r
 import eu.etaxonomy.cdm.model.description.FeatureTree;\r
 import eu.etaxonomy.cdm.model.description.MeasurementUnit;\r
+import eu.etaxonomy.cdm.model.description.MediaKey;\r
 import eu.etaxonomy.cdm.model.description.Modifier;\r
+import eu.etaxonomy.cdm.model.description.PolytomousKey;\r
 import eu.etaxonomy.cdm.model.description.PresenceTerm;\r
 import eu.etaxonomy.cdm.model.description.Scope;\r
 import eu.etaxonomy.cdm.model.description.Sex;\r
@@ -57,137 +57,102 @@ import eu.etaxonomy.cdm.model.description.State;
 import eu.etaxonomy.cdm.model.description.StatisticalMeasure;\r
 import eu.etaxonomy.cdm.model.description.TextFormat;\r
 import eu.etaxonomy.cdm.model.location.Continent;\r
-import eu.etaxonomy.cdm.model.location.NamedArea;\r
 import eu.etaxonomy.cdm.model.location.NamedAreaLevel;\r
 import eu.etaxonomy.cdm.model.location.NamedAreaType;\r
 import eu.etaxonomy.cdm.model.location.ReferenceSystem;\r
 import eu.etaxonomy.cdm.model.location.TdwgArea;\r
 import eu.etaxonomy.cdm.model.location.WaterbodyOrCountry;\r
 import eu.etaxonomy.cdm.model.media.Media;\r
-import eu.etaxonomy.cdm.model.media.MediaRepresentation;\r
-import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;\r
 import eu.etaxonomy.cdm.model.media.RightsTerm;\r
 import eu.etaxonomy.cdm.model.molecular.DnaSample;\r
+import eu.etaxonomy.cdm.model.molecular.PhylogeneticTree;\r
 import eu.etaxonomy.cdm.model.name.BacterialName;\r
 import eu.etaxonomy.cdm.model.name.BotanicalName;\r
 import eu.etaxonomy.cdm.model.name.CultivarPlantName;\r
 import eu.etaxonomy.cdm.model.name.HomotypicalGroup;\r
-import eu.etaxonomy.cdm.model.name.HybridRelationship;\r
 import eu.etaxonomy.cdm.model.name.HybridRelationshipType;\r
-import eu.etaxonomy.cdm.model.name.NameRelationship;\r
 import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
 import eu.etaxonomy.cdm.model.name.NameTypeDesignation;\r
+import eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus;\r
 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
-import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;\r
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;\r
+import eu.etaxonomy.cdm.model.name.NonViralName;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;\r
+import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.name.TypeDesignationStatus;\r
+import eu.etaxonomy.cdm.model.name.TypeDesignationBase;\r
 import eu.etaxonomy.cdm.model.name.ViralName;\r
 import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
+import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;\r
 import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;\r
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;\r
 import eu.etaxonomy.cdm.model.occurrence.DeterminationModifier;\r
 import eu.etaxonomy.cdm.model.occurrence.FieldObservation;\r
 import eu.etaxonomy.cdm.model.occurrence.Fossil;\r
+import eu.etaxonomy.cdm.model.occurrence.GatheringEvent;\r
 import eu.etaxonomy.cdm.model.occurrence.LivingBeing;\r
 import eu.etaxonomy.cdm.model.occurrence.Observation;\r
 import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;\r
 import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
-import eu.etaxonomy.cdm.model.reference.Article;\r
-import eu.etaxonomy.cdm.model.reference.BibtexEntryType;\r
-import eu.etaxonomy.cdm.model.reference.Book;\r
-import eu.etaxonomy.cdm.model.reference.BookSection;\r
-import eu.etaxonomy.cdm.model.reference.CdDvd;\r
-import eu.etaxonomy.cdm.model.reference.Database;\r
-import eu.etaxonomy.cdm.model.reference.Generic;\r
-import eu.etaxonomy.cdm.model.reference.InProceedings;\r
-import eu.etaxonomy.cdm.model.reference.Journal;\r
-import eu.etaxonomy.cdm.model.reference.Map;\r
-import eu.etaxonomy.cdm.model.reference.Patent;\r
-import eu.etaxonomy.cdm.model.reference.PersonalCommunication;\r
-import eu.etaxonomy.cdm.model.reference.PrintSeries;\r
-import eu.etaxonomy.cdm.model.reference.Proceedings;\r
+//import eu.etaxonomy.cdm.model.reference.Article;\r
+//import eu.etaxonomy.cdm.model.reference.Book;\r
+//import eu.etaxonomy.cdm.model.reference.BookSection;\r
+//import eu.etaxonomy.cdm.model.reference.CdDvd;\r
+//import eu.etaxonomy.cdm.model.reference.Database;\r
+//import eu.etaxonomy.cdm.model.reference.Generic;\r
+//import eu.etaxonomy.cdm.model.reference.InProceedings;\r
+//import eu.etaxonomy.cdm.model.reference.Journal;\r
+//import eu.etaxonomy.cdm.model.reference.Map;\r
+//import eu.etaxonomy.cdm.model.reference.Patent;\r
+//import eu.etaxonomy.cdm.model.reference.PersonalCommunication;\r
+//import eu.etaxonomy.cdm.model.reference.PrintSeries;\r
+//import eu.etaxonomy.cdm.model.reference.Proceedings;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
-import eu.etaxonomy.cdm.model.reference.Report;\r
-import eu.etaxonomy.cdm.model.reference.Thesis;\r
-import eu.etaxonomy.cdm.model.reference.WebPage;\r
+//import eu.etaxonomy.cdm.model.reference.Report;\r
+//import eu.etaxonomy.cdm.model.reference.Thesis;\r
+//import eu.etaxonomy.cdm.model.reference.WebPage;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
-import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
 \r
 /**\r
  * @author a.babadshanjan\r
  */\r
 @XmlAccessorType(XmlAccessType.FIELD)\r
-@XmlType(name = "", propOrder = {\r
+@XmlType(name = "DataSet", propOrder = {\r
            "terms",\r
            "termVocabularies",\r
                "agents",\r
-               "agentData",\r
+               "collections",\r
                "occurrences",\r
+               "eventBases",\r
            "references",\r
-           "referencedEntities",\r
-           "featureData",\r
-           "languageData",\r
+           "typeDesignations",\r
+           "featureTrees",\r
+           "taxonNodes",\r
+           "taxonomicTrees",\r
            "taxonomicNames",\r
            "homotypicalGroups",\r
-           "taxa",\r
-           "synonyms",\r
-           "relationships",\r
-           "media"\r
+           "taxonBases",\r
+           "media",\r
+           "users",\r
+           "groups",\r
+           "grantedAuthorities",\r
+           "languageStrings"\r
 })\r
-@XmlRootElement(name = "DataSet", namespace = "http://etaxonomy.eu/cdm/model/1.0")\r
+@XmlRootElement(name = "DataSet")\r
 public class DataSet {\r
        \r
-    // Some fields are of type List and some are of type Set. \r
-       // This is mainly because\r
-       // the service classes return lists, i.e.\r
-    // TaxonServiceImpl.getRootTaxa() returns List<Taxon>\r
-       // and the Taxon methods return sets, i.e.\r
-    // Taxon.getTaxonomicChildren() returns Set<Taxon>.\r
-\r
-    @XmlElementWrapper(name = "Agents")\r
-    @XmlElements({\r
-        @XmlElement(name = "Team", namespace = "http://etaxonomy.eu/cdm/model/agent/1.0", type = Team.class),\r
-        @XmlElement(name = "Institution", namespace = "http://etaxonomy.eu/cdm/model/agent/1.0", type = Institution.class),\r
-        @XmlElement(name = "Person", namespace = "http://etaxonomy.eu/cdm/model/agent/1.0", type = Person.class)\r
-    })\r
-    protected List<? extends Agent> agents;\r
-    \r
-    @XmlElementWrapper(name = "AgentData")\r
-    @XmlElements({\r
-    @XmlElement(name = "Address", namespace = "http://etaxonomy.eu/cdm/model/agent/1.0", type = Address.class),\r
-    @XmlElement(name = "Contact", namespace = "http://etaxonomy.eu/cdm/model/agent/1.0", type = Contact.class),\r
-    @XmlElement(name = "InstitutionalMembership", namespace = "http://etaxonomy.eu/cdm/model/agent/1.0", type = InstitutionalMembership.class)\r
-    })\r
-    protected List<VersionableEntity> agentData;\r
-\r
-    @XmlElementWrapper(name = "FeatureData")\r
-    @XmlElements({\r
-    @XmlElement(name = "FeatureNode", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = FeatureNode.class),\r
-    @XmlElement(name = "FeatureTree", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = FeatureTree.class)\r
-    })\r
-//    protected List<VersionableEntity> featureData;\r
-    protected List<VersionableEntity<?>> featureData;\r
-\r
-    @XmlElementWrapper(name = "LanguageData")\r
-    @XmlElements({\r
-    @XmlElement(name = "Representation", namespace = "http://etaxonomy.eu/cdm/model/common/1.0", type = Representation.class),\r
-    @XmlElement(name = "LanguageString", namespace = "http://etaxonomy.eu/cdm/model/common/1.0", type = LanguageString.class)\r
-    })\r
-    protected List<LanguageStringBase> languageData;\r
-    \r
-    @XmlElementWrapper(name = "Terms")\r
+       @XmlElementWrapper(name = "Terms")\r
     @XmlElements({\r
        @XmlElement(name = "AbsenceTerm", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = AbsenceTerm.class),\r
        @XmlElement(name = "AnnotationType", namespace = "http://etaxonomy.eu/cdm/model/common/1.0", type = AnnotationType.class),\r
-       @XmlElement(name = "BibtexEntryType", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = BibtexEntryType.class),\r
        @XmlElement(name = "Continent", namespace = "http://etaxonomy.eu/cdm/model/location/1.0", type = Continent.class),\r
        @XmlElement(name = "DerivationEventType", namespace = "http://etaxonomy.eu/cdm/model/occurrence/1.0", type = DerivationEventType.class),\r
        @XmlElement(name = "DeterminationModifier", namespace = "http://etaxonomy.eu/cdm/model/occurrence/1.0", type = DeterminationModifier.class),\r
@@ -195,15 +160,16 @@ public class DataSet {
        @XmlElement(name = "Feature", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = Feature.class),\r
        @XmlElement(name = "HybridRelationshipType", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = HybridRelationshipType.class),\r
        @XmlElement(name = "InstitutionType", namespace = "http://etaxonomy.eu/cdm/model/agent/1.0", type = InstitutionType.class),\r
-        @XmlElement(name = "Keyword", namespace = "http://etaxonomy.eu/cdm/model/common/1.0", type = Keyword.class),\r
+//        @XmlElement(name = "Keyword", namespace = "http://etaxonomy.eu/cdm/model/common/1.0", type = Keyword.class),\r
        @XmlElement(name = "Language", namespace = "http://etaxonomy.eu/cdm/model/common/1.0", type = Language.class),\r
        @XmlElement(name = "MarkerType", namespace = "http://etaxonomy.eu/cdm/model/common/1.0", type = MarkerType.class),\r
        @XmlElement(name = "MeasurementUnit", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = MeasurementUnit.class),\r
        @XmlElement(name = "Modifier", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = Modifier.class),\r
-       @XmlElement(name = "NamedArea", namespace = "http://etaxonomy.eu/cdm/model/location/1.0", type = NamedArea.class),\r
+       @XmlElement(name = "NamedArea", namespace = "http://etaxonomy.eu/cdm/model/location/1.0", type = TdwgArea.class),\r
        @XmlElement(name = "NamedAreaLevel", namespace = "http://etaxonomy.eu/cdm/model/location/1.0", type = NamedAreaLevel.class),\r
        @XmlElement(name = "NamedAreaType", namespace = "http://etaxonomy.eu/cdm/model/location/1.0", type = NamedAreaType.class),\r
        @XmlElement(name = "NameRelationshipType", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = NameRelationshipType.class),\r
+       @XmlElement(name = "NameTypeDesignationStatus", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = NameTypeDesignationStatus.class),\r
        @XmlElement(name = "NomenclaturalCode", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = NomenclaturalCode.class),\r
        @XmlElement(name = "NomenclaturalStatusType", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = NomenclaturalStatusType.class),\r
        @XmlElement(name = "PresenceTerm", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = PresenceTerm.class),\r
@@ -213,23 +179,62 @@ public class DataSet {
        @XmlElement(name = "RightsTerm", namespace = "http://etaxonomy.eu/cdm/model/media/1.0", type = RightsTerm.class),\r
        @XmlElement(name = "Scope", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = Scope.class),\r
        @XmlElement(name = "Sex", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = Sex.class),\r
+       @XmlElement(name = "SpecimenTypeDesignationStatus", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = SpecimenTypeDesignationStatus.class),\r
        @XmlElement(name = "Stage", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = Stage.class),\r
        @XmlElement(name = "State", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = State.class),\r
        @XmlElement(name = "StatisticalMeasure", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = StatisticalMeasure.class),\r
        @XmlElement(name = "SynonymRelationshipType", namespace = "http://etaxonomy.eu/cdm/model/taxon/1.0", type = SynonymRelationshipType.class),\r
        @XmlElement(name = "TaxonRelationshipType", namespace = "http://etaxonomy.eu/cdm/model/taxon/1.0", type = TaxonRelationshipType.class),\r
+       //      @XmlElement(name = "TdwgArea", namespace = "http://etaxonomy.eu/cdm/model/location/1.0", type = TdwgArea.class),\r
        @XmlElement(name = "TextFormat", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = TextFormat.class),\r
-       @XmlElement(name = "TypeDesignationStatus", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = TypeDesignationStatus.class),\r
        @XmlElement(name = "WaterbodyOrCountry", namespace = "http://etaxonomy.eu/cdm/model/location/1.0", type = WaterbodyOrCountry.class)\r
+       \r
     })\r
-    protected List<DefinedTermBase> terms;\r
+    protected List<DefinedTermBase> terms = new ArrayList<DefinedTermBase>();\r
+       \r
+       @XmlElementWrapper(name = "TermVocabularies")\r
+    @XmlElements({\r
+        @XmlElement(name = "TermVocabulary", namespace = "http://etaxonomy.eu/cdm/model/common/1.0", type = TermVocabulary.class),\r
+        @XmlElement(name = "OrderedTermVocabulary", namespace = "http://etaxonomy.eu/cdm/model/common/1.0", type = OrderedTermVocabulary.class)\r
+    })\r
+        \r
+    protected List<TermVocabulary<DefinedTermBase>> termVocabularies = new ArrayList<TermVocabulary<DefinedTermBase>>();\r
+       \r
+       \r
+    @XmlElementWrapper(name = "Agents")\r
+    @XmlElements({             \r
+        @XmlElement(name = "Team", namespace = "http://etaxonomy.eu/cdm/model/agent/1.0", type = Team.class),\r
+        @XmlElement(name = "Institution", namespace = "http://etaxonomy.eu/cdm/model/agent/1.0", type = Institution.class),\r
+        @XmlElement(name = "Person", namespace = "http://etaxonomy.eu/cdm/model/agent/1.0", type = Person.class)\r
+    })\r
+    protected List<AgentBase> agents = new ArrayList<AgentBase>();\r
 \r
-    @XmlElementWrapper(name = "TermVocabularies")\r
-    @XmlElement(name = "TermVocabulary", namespace = "http://etaxonomy.eu/cdm/model/common/1.0")\r
-    protected List<TermVocabulary<DefinedTermBase>> termVocabularies;\r
+\r
+    @XmlElementWrapper(name = "Collections")\r
+    @XmlElement(name = "Collection", namespace = "http://etaxonomy.eu/cdm/model/occurrence/1.0")\r
+    protected List<eu.etaxonomy.cdm.model.occurrence.Collection> collections = new ArrayList<eu.etaxonomy.cdm.model.occurrence.Collection>();\r
+        \r
+    @XmlElementWrapper(name = "FeatureTrees")\r
+    @XmlElements({\r
+      @XmlElement(name = "FeatureTree", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = FeatureTree.class),\r
+      @XmlElement(name = "PolytomousKey", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = PolytomousKey.class)\r
+    })\r
+    protected List<FeatureTree> featureTrees = new ArrayList<FeatureTree>();\r
+    \r
+    @XmlElementWrapper(name = "TaxonomicTrees")\r
+    @XmlElement(name = "TaxonomicTree", namespace = "http://etaxonomy.eu/cdm/model/taxon/1.0")\r
+    protected List<TaxonomicTree> taxonomicTrees = new ArrayList<TaxonomicTree>();\r
+    \r
+    @XmlElementWrapper(name = "TaxonNodes")\r
+    @XmlElement(name = "TaxonNodes", namespace = "http://etaxonomy.eu/cdm/model/taxon/1.0")\r
+    protected List<TaxonNode> taxonNodes = new ArrayList<TaxonNode>();\r
+   \r
+    protected List<LanguageString> languageStrings =new ArrayList<LanguageString>();\r
+      \r
 \r
     @XmlElementWrapper(name = "Occurrences")\r
     @XmlElements({\r
+       @XmlElement(name = "DerivedUnit", namespace = "http://etaxonomy.eu/cdm/model/occurrence/1.0", type = DerivedUnit.class),\r
        @XmlElement(name = "DnaSample", namespace = "http://etaxonomy.eu/cdm/model/occurrence/1.0", type = DnaSample.class),\r
        @XmlElement(name = "FieldObservation", namespace = "http://etaxonomy.eu/cdm/model/occurrence/1.0", type = FieldObservation.class),\r
        @XmlElement(name = "Fossil", namespace = "http://etaxonomy.eu/cdm/model/occurrence/1.0", type = Fossil.class),\r
@@ -237,96 +242,86 @@ public class DataSet {
        @XmlElement(name = "Observation", namespace = "http://etaxonomy.eu/cdm/model/occurrence/1.0", type = Observation.class),\r
        @XmlElement(name = "Specimen", namespace = "http://etaxonomy.eu/cdm/model/occurrence/1.0", type = Specimen.class)\r
     })\r
-    protected List<SpecimenOrObservationBase> occurrences;\r
+    protected List<SpecimenOrObservationBase> occurrences = new ArrayList<SpecimenOrObservationBase>();\r
+    \r
+    @XmlElementWrapper(name = "EventBases")\r
+    @XmlElements({\r
+       @XmlElement(name = "DerivationEvent", namespace = "http://etaxonomy.eu/cdm/model/occurrence/1.0", type = DerivationEvent.class),\r
+       @XmlElement(name = "GatheringEvent", namespace = "http://etaxonomy.eu/cdm/model/occurrence/1.0", type = GatheringEvent.class)\r
+    })\r
+    protected List<EventBase> eventBases = new ArrayList<EventBase>();\r
     \r
     @XmlElementWrapper(name = "References")\r
     @XmlElements({\r
-       @XmlElement(name = "Article", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Article.class),\r
-       @XmlElement(name = "Book", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Book.class),\r
-       @XmlElement(name = "BookSection", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = BookSection.class),\r
-       @XmlElement(name = "CdDvd", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = CdDvd.class),\r
-       @XmlElement(name = "Database", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Database.class),\r
-       @XmlElement(name = "Generic", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Generic.class),\r
-       @XmlElement(name = "InProceedings", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = InProceedings.class),\r
-       @XmlElement(name = "Journal", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Journal.class),\r
-       @XmlElement(name = "Map", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Map.class),\r
-       @XmlElement(name = "Patent", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Patent.class),\r
-       @XmlElement(name = "PersonalCommunication", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = PersonalCommunication.class),\r
-       @XmlElement(name = "PrintSeries", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = PrintSeries.class),\r
-       @XmlElement(name = "Proceedings", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Proceedings.class),\r
-       @XmlElement(name = "Report", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Report.class),\r
-       @XmlElement(name = "Thesis", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Thesis.class),\r
-       @XmlElement(name = "WebPage", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = WebPage.class)\r
+       @XmlElement(name = "ReferenceBase", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = ReferenceBase.class)\r
+//     @XmlElement(name = "Article", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Article.class),\r
+//     @XmlElement(name = "Book", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Book.class),\r
+//     @XmlElement(name = "BookSection", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = BookSection.class),\r
+//     @XmlElement(name = "CdDvd", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = CdDvd.class),\r
+//     @XmlElement(name = "Database", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Database.class),\r
+//     @XmlElement(name = "Generic", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Generic.class),\r
+//     @XmlElement(name = "InProceedings", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = InProceedings.class),\r
+//     @XmlElement(name = "Journal", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Journal.class),\r
+//     @XmlElement(name = "Map", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Map.class),\r
+//     @XmlElement(name = "Patent", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Patent.class),\r
+//     @XmlElement(name = "PersonalCommunication", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = PersonalCommunication.class),\r
+//     @XmlElement(name = "PrintSeries", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = PrintSeries.class),\r
+//     @XmlElement(name = "Proceedings", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Proceedings.class),\r
+//     @XmlElement(name = "Report", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Report.class),\r
+//     @XmlElement(name = "Thesis", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Thesis.class),\r
+//     @XmlElement(name = "WebPage", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = WebPage.class)\r
     })\r
-    protected List<ReferenceBase> references;\r
+    protected List<ReferenceBase> references = new ArrayList<ReferenceBase>();\r
 \r
-    @XmlElementWrapper(name = "ReferencedEntities")\r
+    @XmlElementWrapper(name = "TypeDesignations")\r
     @XmlElements({\r
-       @XmlElement(name = "NomenclaturalStatus", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = NomenclaturalStatus.class),\r
        @XmlElement(name = "NameTypeDesignation", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = NameTypeDesignation.class),\r
        @XmlElement(name = "SpecimenTypeDesignation", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = SpecimenTypeDesignation.class)\r
     })\r
-    protected List<ReferencedEntityBase> referencedEntities;\r
-\r
+    protected List<TypeDesignationBase> typeDesignations = new ArrayList<TypeDesignationBase>();\r
        \r
     @XmlElementWrapper(name = "TaxonomicNames")\r
     @XmlElements({\r
        @XmlElement(name = "BacterialName", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = BacterialName.class),\r
        @XmlElement(name = "BotanicalName", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = BotanicalName.class),\r
        @XmlElement(name = "CultivarPlantName", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = CultivarPlantName.class),\r
+       @XmlElement(name = "NonViralName", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = NonViralName.class),\r
        @XmlElement(name = "ViralName", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = ViralName.class),\r
        @XmlElement(name = "ZoologicalName", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = ZoologicalName.class)\r
     })\r
-    protected List<TaxonNameBase> taxonomicNames;\r
-\r
-    @XmlElementWrapper(name = "Taxa")\r
-    @XmlElement(name = "Taxon", namespace = "http://etaxonomy.eu/cdm/model/taxon/1.0")\r
-    protected List<Taxon> taxa;\r
-       \r
-    @XmlElementWrapper(name = "Synonyms")\r
-    @XmlElement(name = "Synonym", namespace = "http://etaxonomy.eu/cdm/model/taxon/1.0")\r
-    protected List<Synonym> synonyms;\r
+    protected List<TaxonNameBase> taxonomicNames = new ArrayList<TaxonNameBase>();\r
 \r
-    @XmlElementWrapper(name = "Relationships")\r
+    @XmlElementWrapper(name = "TaxonBases")\r
     @XmlElements({\r
-       @XmlElement(name = "TaxonRelationship", namespace = "http://etaxonomy.eu/cdm/model/taxon/1.0", type = TaxonRelationship.class),\r
-       @XmlElement(name = "SynonymRelationship", namespace = "http://etaxonomy.eu/cdm/model/taxon/1.0", type = SynonymRelationship.class),\r
-       @XmlElement(name = "NameRelationship", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = NameRelationship.class),\r
-       @XmlElement(name = "HybridRelationship", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = HybridRelationship.class)\r
+      @XmlElement(name = "Taxon", namespace = "http://etaxonomy.eu/cdm/model/taxon/1.0", type = Taxon.class),\r
+      @XmlElement(name = "Synonym", namespace = "http://etaxonomy.eu/cdm/model/taxon/1.0", type = Synonym.class)\r
     })\r
-    protected Set<RelationshipBase> relationships;\r
+    protected List<TaxonBase> taxonBases = new ArrayList<TaxonBase>();\r
 \r
-    @XmlElementWrapper(name = "Media_")\r
-    @XmlElement(name = "Media", namespace = "http://etaxonomy.eu/cdm/model/media/1.0")\r
-    protected List<Media> media;\r
-    //protected List<VersionableEntity> media;\r
-    \r
+    @XmlElementWrapper(name = "Media")\r
+    @XmlElements({\r
+      @XmlElement(name = "Media", namespace = "http://etaxonomy.eu/cdm/model/media/1.0", type = Media.class),\r
+      @XmlElement(name = "MediaKey", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = MediaKey.class),\r
+      @XmlElement(name = "Figure", namespace = "http://etaxonomy.eu/cdm/model/common/1.0", type = Figure.class),\r
+      @XmlElement(name = "PhylogeneticTree", namespace = "http://etaxonomy.eu/cdm/model/molecular/1.0", type = PhylogeneticTree.class)\r
+    })\r
+    protected List<Media> media = new ArrayList<Media>();\r
+        \r
     @XmlElementWrapper(name = "HomotypicalGroups")\r
     @XmlElement(name = "HomotypicalGroup", namespace = "http://etaxonomy.eu/cdm/model/name/1.0")\r
-    protected List<HomotypicalGroup> homotypicalGroups;\r
-\r
-//     @XmlElement(name = "TdwgArea", namespace = "http://etaxonomy.eu/cdm/model/location/1.0", type = TdwgArea.class),\r
-\r
-       public DataSet () {\r
-               \r
-               agents = new ArrayList<Agent>(); \r
-               agentData = new ArrayList<VersionableEntity>();\r
-//             featureData = new ArrayList<VersionableEntity>();\r
-               featureData = new ArrayList<VersionableEntity<?>>();\r
-               languageData = new ArrayList<LanguageStringBase>();\r
-               terms = new ArrayList<DefinedTermBase>();\r
-               termVocabularies = new ArrayList<TermVocabulary<DefinedTermBase>>();\r
-               occurrences = new ArrayList<SpecimenOrObservationBase>();\r
-               references = new ArrayList<ReferenceBase>();\r
-               referencedEntities = new ArrayList<ReferencedEntityBase>();\r
-               taxonomicNames = new ArrayList<TaxonNameBase>();\r
-               taxa = new ArrayList<Taxon>();\r
-               synonyms = new ArrayList<Synonym>();\r
-               relationships = new HashSet<RelationshipBase>();\r
-               media = new ArrayList<Media>();\r
-               //media = new ArrayList<VersionableEntity>();\r
-               homotypicalGroups = new ArrayList<HomotypicalGroup>();\r
-       }\r
+    protected List<HomotypicalGroup> homotypicalGroups = new ArrayList<HomotypicalGroup>();\r
+    \r
+    @XmlElementWrapper(name = "Users")\r
+    @XmlElement(name = "User", namespace = "http://etaxonomy.eu/cdm/model/common/1.0")\r
+    protected List<User> users = new ArrayList<User>();\r
+    \r
+    @XmlElementWrapper(name = "Groups")\r
+    @XmlElement(name = "Group", namespace = "http://etaxonomy.eu/cdm/model/common/1.0")\r
+    protected List<Group> groups = new ArrayList<Group>();\r
+    \r
+    @XmlElementWrapper(name = "GrantedAuthorities")\r
+    @XmlElement(name = "GrantedAuthority", namespace = "http://etaxonomy.eu/cdm/model/common/1.0", type = GrantedAuthorityImpl.class)\r
+    protected List<GrantedAuthority> grantedAuthorities = new ArrayList<GrantedAuthority>();\r
 \r
     /**\r
      * Gets the value of the agents property.\r
@@ -336,7 +331,7 @@ public class DataSet {
      *     {@link List<Agent> }\r
      *     \r
      */\r
-    public List<? extends Agent> getAgents() {\r
+    public List<AgentBase> getAgents() {\r
         return agents;\r
     }\r
 \r
@@ -348,32 +343,32 @@ public class DataSet {
      *     {@link List<Agent> }\r
      *     \r
      */\r
-    public void setAgents(List<? extends Agent> value) {\r
+    public void setAgents(List<AgentBase> value) {\r
         this.agents = value;\r
     }\r
 \r
     /**\r
-     * Gets the value of the agentData property.\r
+     * Gets the value of the collections property.\r
      * \r
      * @return\r
      *     possible object is\r
-     *     {@link List<VersionableEntity> }\r
+     *     {@link List<eu.etaxonomy.cdm.model.occurrence.Collection> }\r
      *     \r
      */\r
-    public List<VersionableEntity> getAgentData() {\r
-        return agentData;\r
+    public List<eu.etaxonomy.cdm.model.occurrence.Collection> getCollections() {\r
+        return collections;\r
     }\r
 \r
     /**\r
-     * Sets the value of the agentData property.\r
+     * Sets the value of the collections property.\r
      * \r
      * @param value\r
      *     allowed object is\r
-     *     {@link List<VersionableEntity> }\r
+     *     {@link List<eu.etaxonomy.cdm.model.occurrence.Collection> }\r
      *     \r
      */\r
-    public void setAgentData(List<VersionableEntity> value) {\r
-        this.agentData = value;\r
+    public void setCollections(List<eu.etaxonomy.cdm.model.occurrence.Collection> value) {\r
+        this.collections = value;\r
     }\r
 \r
     /**\r
@@ -384,8 +379,6 @@ public class DataSet {
      *     {@link List<TermBase> }\r
      *     \r
      */\r
-    \r
-    //public List<? extends TermBase> getTerms() {\r
     public List<DefinedTermBase> getTerms() {\r
         return terms;\r
     }\r
@@ -398,7 +391,6 @@ public class DataSet {
      *     {@link List<TermBase> }\r
      *     \r
      */\r
-    //public void setTerms(List<? extends TermBase> value) {\r
     public void setTerms(List<DefinedTermBase> value) {\r
         this.terms = value;\r
     }\r
@@ -427,6 +419,8 @@ public class DataSet {
     public void setTermVocabularies(List<TermVocabulary<DefinedTermBase>> value) {\r
         this.termVocabularies = value;\r
     }\r
+    \r
+    \r
 \r
     /**\r
      * Gets the value of the taxonomicNames property.\r
@@ -451,9 +445,33 @@ public class DataSet {
     public void setTaxonomicNames(List<TaxonNameBase> value) {\r
         this.taxonomicNames = value;\r
     }\r
+    \r
+    /**\r
+     * Gets the value of the eventBases property.\r
+     * \r
+     * @return\r
+     *     possible object is\r
+     *     {@link List<EventBase> }\r
+     *     \r
+     */\r
+    public List<EventBase> getEventBases() {\r
+        return eventBases;\r
+    }\r
 \r
     /**\r
-     * Gets the value of the references property.\r
+     * Sets the value of the eventBases property.\r
+     * \r
+     * @param value\r
+     *     allowed object is\r
+     *     {@link List<EventBase> }\r
+     *     \r
+     */\r
+    public void setEventBases(List<EventBase> value) {\r
+        this.eventBases = value;\r
+    }\r
+\r
+    /**\r
+     * Gets the value of the occurrences property.\r
      * \r
      * @return\r
      *     possible object is\r
@@ -465,7 +483,7 @@ public class DataSet {
     }\r
 \r
     /**\r
-     * Sets the value of the references property.\r
+     * Sets the value of the occurrences property.\r
      * \r
      * @param value\r
      *     allowed object is\r
@@ -475,7 +493,29 @@ public class DataSet {
     public void setOccurrences(List<SpecimenOrObservationBase> value) {\r
         this.occurrences = value;\r
     }\r
-\r
+    /*\r
+    * Gets the value of the occurrences property.\r
+    * \r
+    * @return\r
+    *     possible object is\r
+    *     {@link List<LanguageStringBase> }\r
+    *     \r
+    */\r
+   public List<LanguageString> getLanguageStrings() {\r
+       return languageStrings;\r
+   }\r
+\r
+   /**\r
+    * Sets the value of the occurrences property.\r
+    * \r
+    * @param value\r
+    *     allowed object is\r
+    *     {@link List<SpecimenOrObservationBase> }\r
+    *     \r
+    */\r
+   public void setLanguageStrings(List<LanguageString> value) {\r
+       this.languageStrings = value;\r
+   }\r
     /**\r
      * Gets the value of the references property.\r
      * \r
@@ -501,361 +541,285 @@ public class DataSet {
     }\r
 \r
     /**\r
-     * Adds the referenced entities in value to the referenced entity property list.\r
-     * \r
-     * @param value\r
-     *     allowed object is\r
-     *     {@link Collection<ReferencedEntityBase> }\r
-     *     \r
-     */\r
-    public <T extends ReferencedEntityBase> void addReferencedEntities(Collection<T> value) {\r
-       for (T referencedEntity: value) {\r
-               this.referencedEntities.add(referencedEntity);\r
-       }\r
-    }\r
-\r
-    /**\r
-     * Gets the value of the  property.\r
+     * Gets the value of the featureTrees property.\r
      * \r
      * @return\r
      *     possible object is\r
-     *     {@link List<ReferencedEntityBase> }\r
+     *     {@link List<FeatureTree> }\r
      *     \r
      */\r
-    public List<ReferencedEntityBase> getReferencedEntities() {\r
-        return referencedEntities;\r
+    public List<FeatureTree> getFeatureTrees() {\r
+        return featureTrees;\r
     }\r
 \r
     /**\r
-     * Sets the value of the referencedEntities property.\r
+     * Sets the value of the featureTrees property.\r
      * \r
      * @param value\r
      *     allowed object is\r
-     *     {@link List<ReferencedEntityBase> }\r
+     *     {@link List<FeatureTree> }\r
      *     \r
      */\r
-    public void setReferencedEntities(List<? extends ReferencedEntityBase> value) {\r
-        this.referencedEntities = new ArrayList<ReferencedEntityBase>();\r
-        referencedEntities.addAll(value);\r
+    public void setTaxonomicTrees(List<TaxonomicTree> value) {\r
+       this.taxonomicTrees = value;\r
     }\r
     \r
+    \r
     /**\r
-     * Adds the features in value to the feature data property list.\r
-     * \r
-     * @param value\r
-     *     allowed object is\r
-     *     {@link Collection<VersionableEntity> }\r
-     *     \r
-     */\r
-    public <T extends VersionableEntity> void addFeatureData(Collection<T> value) {\r
-       for (T featureItem: value) {\r
-               this.featureData.add(featureItem);\r
-       }\r
-    }\r
-\r
-    /**\r
-     * Gets the value of the feature data property.\r
+     * Gets the value of the featureTrees property.\r
      * \r
      * @return\r
      *     possible object is\r
-     *     {@link List<VersionableEntity> }\r
+     *     {@link List<FeatureTree> }\r
      *     \r
      */\r
-//    public List<VersionableEntity> getFeatureData() {\r
-    public List<VersionableEntity<?>> getFeatureData() {\r
-        return featureData;\r
+    public List<TaxonomicTree> getTaxonomicTrees() {\r
+        return taxonomicTrees;\r
     }\r
-\r
     /**\r
-     * Sets the value of the feature data property.\r
+     * Sets the value of the featureTrees property.\r
      * \r
      * @param value\r
      *     allowed object is\r
-     *     {@link List<VersionableEntity> }\r
+     *     {@link List<FeatureTree> }\r
      *     \r
      */\r
-    public <T extends VersionableEntity> void setFeatureData(List<T> value) {\r
-        featureData = new ArrayList<VersionableEntity<?>>();\r
-       for (T featureItem: value) {\r
-               this.featureData.add(featureItem);\r
-       }\r
+    public void setTaxonNodes(List<TaxonNode> value) {\r
+       this.taxonNodes = value;\r
     }\r
-\r
-//    public void setFeatureData(List<? extends VersionableEntity> value) {\r
-    //public void setFeatureData(List<? extends VersionableEntity<?>> value) {\r
-//        this.featureData = new ArrayList<VersionableEntity>();\r
-    //    this.featureData = new ArrayList<VersionableEntity<?>>();\r
-    //    featureData.addAll(value);\r
-    //}\r
+    \r
     \r
     /**\r
-     * Adds the features in value to the language data property list.\r
-     * \r
-     * @param value\r
-     *     allowed object is\r
-     *     {@link Collection<LanguageStringBase> }\r
-     *     \r
-     */\r
-    public <T extends LanguageStringBase> void addLanguageData(Collection<T> value) {\r
-       for (T languageItem: value) {\r
-               this.languageData.add(languageItem);\r
-       }\r
-    }\r
-\r
-    /**\r
-     * Gets the value of the language data property.\r
+     * Gets the value of the featureTrees property.\r
      * \r
      * @return\r
      *     possible object is\r
-     *     {@link List<LanguageStringBase> }\r
+     *     {@link List<FeatureTree> }\r
      *     \r
      */\r
-    public List<LanguageStringBase> getLanguageData() {\r
-        return languageData;\r
+    public List<TaxonNode> getTaxonNodes() {\r
+        return taxonNodes;\r
     }\r
 \r
     /**\r
-     * Sets the value of the feature data property.\r
+     * Sets the value of the featureTrees property.\r
      * \r
      * @param value\r
      *     allowed object is\r
-     *     {@link List<LanguageStringBase> }\r
+     *     {@link List<FeatureTree> }\r
      *     \r
      */\r
-    public void setLanguageData(List<? extends LanguageStringBase> value) {\r
-        this.languageData = new ArrayList<LanguageStringBase>();\r
-        languageData.addAll(value);\r
+    public void setFeatureTrees(List<FeatureTree> value) {\r
+       this.featureTrees = value;\r
     }\r
     \r
     /**\r
-     * Adds the taxa in value to the taxa property list.\r
+     * Adds the taxonBases in value to the taxonBases property list.\r
      * \r
      * @param value\r
      *     allowed object is\r
-     *     {@link Collection<Taxon> }\r
+     *     {@link Collection<TaxonBase> }\r
      *     \r
      */\r
-    public void addTaxa(Collection<Taxon> value) {\r
-       for (Taxon taxon: value) {\r
-               this.taxa.add(taxon);\r
-       }\r
+    public void addTaxonBases(Collection<TaxonBase> value) {\r
+       this.taxonBases.addAll(value);\r
     }\r
 \r
     /**\r
-     * Gets the value of the taxa property.\r
+     * Gets the value of the taxonBases property as {@link Collection<TaxonBase> }\r
      * \r
      * @return\r
      *     possible object is\r
-     *     {@link List<Taxon> }\r
+     *     {@link List<TaxonBase> }\r
      *     \r
      */\r
-//    public List<Taxon> getTaxa() {\r
-//        return taxa;\r
-//    }\r
+    public List<TaxonBase> getTaxonBases() {\r
+       return taxonBases;\r
+    }\r
 \r
     /**\r
-     * Gets the value of the taxa property as {@link Collection<TaxonBase> }\r
+     * Sets the value of the taxonBases property.\r
      * \r
-     * @return\r
-     *     possible object is\r
-     *     {@link Collection<TaxonBase> }\r
+     * @param value\r
+     *     allowed object is\r
+     *     {@link List<TaxonBase> }\r
      *     \r
      */\r
-    public Collection<? extends TaxonBase> getTaxa() {\r
-       \r
-       //TODO can be deleted when everything works\r
-       //Object obj = taxa;\r
-       //Collection<TaxonBase> taxonBases = (Collection<TaxonBase>)obj;\r
-        List<Taxon> list = taxa;\r
-       return list;\r
-    }\r
-\r
-    public Collection<TaxonBase> getTaxonBases() {\r
-       \r
-       Collection<TaxonBase> result = new HashSet<TaxonBase>();;\r
-       if (taxa != null) {\r
-               result.addAll(taxa);\r
-       }\r
-       if (synonyms != null) {\r
-               result.addAll(synonyms);\r
-       }\r
-        return result;\r
+    public void setTaxonBases(List<TaxonBase> value) {\r
+        this.taxonBases = value;\r
     }\r
 \r
     /**\r
-     * Sets the value of the taxa property.\r
+     * Adds the taxonBase in value to the taxonBases property list.\r
      * \r
      * @param value\r
-     *     allowed object is\r
-     *     {@link List<Taxon> }\r
      *     \r
      */\r
-    public void setTaxa(List<Taxon> value) {\r
-        this.taxa = value;\r
+    public void addTaxonBase(TaxonBase value) {\r
+               this.taxonBases.add(value);\r
     }\r
 \r
     /**\r
-     * Adds the taxon in value to the taxa property list.\r
+     * Adds the media in value to the media property list.\r
      * \r
      * @param value\r
+     *     allowed object is\r
+     *     {@link Collection<VersionableEntity> }\r
      *     \r
      */\r
-    public void addTaxon(Taxon value) {\r
-               this.taxa.add(value);\r
+    public <T extends Media> void addMedia(Collection<T> value) {\r
+       for (T medium: value) {\r
+               this.media.add(medium);\r
+       }\r
     }\r
 \r
-\r
     /**\r
-     * Gets the value of the synonyms property.\r
+     * Gets the value of the  property.\r
      * \r
      * @return\r
      *     possible object is\r
-     *     {@link List<Synonym> }\r
+     *     {@link List<ReferencedEntityBase> }\r
      *     \r
      */\r
-    public List<Synonym> getSynonyms() {\r
-        return synonyms;\r
+    public List<Media> getMedia() {\r
+        return media;\r
     }\r
 \r
     /**\r
-     * Sets the value of the synonyms property.\r
+     * Sets the value of the referencedEntities property.\r
      * \r
      * @param value\r
      *     allowed object is\r
-     *     {@link List<Synonym> }\r
+     *     {@link List<ReferencedEntityBase> }\r
      *     \r
      */\r
-    public void setSynonyms(List<Synonym> value) {\r
-        this.synonyms = value;\r
+    public void setMedia(List<Media> value) {\r
+        this.media = new ArrayList<Media>();\r
+        media.addAll(value);\r
     }\r
     \r
     /**\r
-     * Adds the synonym in value to the taxa property list.\r
+     * Gets the value of the synonyms property.\r
      * \r
-     * @param value\r
+     * @return\r
+     *     possible object is\r
+     *     {@link List<Synonym> }\r
      *     \r
      */\r
-    public void addSynonym(Synonym value) {\r
-               this.synonyms.add(value);\r
+    public List<HomotypicalGroup> getHomotypicalGroups() {\r
+        return homotypicalGroups;\r
     }\r
-    \r
+\r
     /**\r
-     * Adds the synonym in value to the synonyms property list.\r
+     * Sets the value of the synonyms property.\r
      * \r
      * @param value\r
      *     allowed object is\r
-     *     {@link Collection<Synonym> }\r
+     *     {@link List<Synonym> }\r
      *     \r
      */\r
-    public void addSynonyms(Collection<Synonym> value) {\r
-       for (Synonym synonym: value) {\r
-               this.synonyms.add(synonym);\r
-       }\r
+    public void setHomotypicalGroups(List<HomotypicalGroup> value) {\r
+        this.homotypicalGroups = value;\r
     }\r
 \r
     /**\r
-     * Gets the value of the relationships property.\r
+     * Gets the value of the typeDesignations property.\r
      * \r
      * @return\r
      *     possible object is\r
-     *     {@link Set<RelationshipBase> }\r
+     *     {@link List<TypeDesignationBase> }\r
      *     \r
      */\r
-    public Set<RelationshipBase> getRelationships() {\r
-        return relationships;\r
+    public List<TypeDesignationBase> getTypeDesignations() {\r
+       return typeDesignations;\r
     }\r
-\r
+    \r
     /**\r
-     * Sets the value of the relationships property.\r
+     * Sets the value of the typeDesignations property.\r
      * \r
      * @param value\r
      *     allowed object is\r
-     *     {@link Set<RelationshipBase> }\r
+     *     {@link List<TypeDesignationBase> }\r
      *     \r
      */\r
-    public void setRelationships(Set<RelationshipBase> value) {\r
-        this.relationships = value;\r
-    }\r
+       public void addTypeDesignations(List<TypeDesignationBase> typeDesignations) {\r
+               this.typeDesignations.addAll(typeDesignations);\r
+       }\r
 \r
-    /**\r
-     * Adds the relationship in value to the relationships property list.\r
+       /**\r
+     * Gets the value of the users property.\r
      * \r
-     * @param value\r
-     *     allowed object is\r
-     *     {@link Collection<RelationshipBase> }\r
+     * @return\r
+     *     possible object is\r
+     *     {@link List<User> }\r
      *     \r
      */\r
-    public void addRelationships(Collection<? extends RelationshipBase> value) {\r
-       for (RelationshipBase relationship: value) {\r
-               this.relationships.add(relationship);\r
-       }\r
-    }\r
+       public List<User> getUsers() {\r
+               return users;\r
+       }\r
 \r
-    /**\r
-     * Adds the media in value to the media property list.\r
+       /**\r
+     * Sets the value of the users property.\r
      * \r
      * @param value\r
      *     allowed object is\r
-     *     {@link Collection<VersionableEntity> }\r
+     *     {@link List<User> }\r
      *     \r
      */\r
-    public <T extends Media> void addMedia(Collection<T> value) {\r
-    //public <T extends VersionableEntity> void addMedia(Collection<T> value) {\r
-       for (T medium: value) {\r
-               this.media.add(medium);\r
-       }\r
-    }\r
+       public void setUsers(List<User> users) {\r
+               this.users = users;\r
+       }\r
 \r
-    /**\r
-     * Gets the value of the  property.\r
+       /**\r
+     * Gets the value of the groups property.\r
      * \r
      * @return\r
      *     possible object is\r
-     *     {@link List<ReferencedEntityBase> }\r
+     *     {@link List<Group> }\r
      *     \r
      */\r
-    public List<Media> getMedia() {\r
-    //public List<VersionableEntity> getMedia() {\r
-        return media;\r
-    }\r
+       public List<Group> getGroups() {\r
+               return groups;\r
+       }\r
 \r
-    /**\r
-     * Sets the value of the referencedEntities property.\r
+       /**\r
+     * Sets the value of the groups property.\r
      * \r
      * @param value\r
      *     allowed object is\r
-     *     {@link List<ReferencedEntityBase> }\r
+     *     {@link List<Group> }\r
      *     \r
      */\r
-    public void setMedia(List<? extends Media> value) {\r
-    //public void setMedia(List<? extends VersionableEntity> value) {\r
-        this.media = new ArrayList<Media>();\r
-        //this.media = new ArrayList<VersionableEntity>();\r
-        media.addAll(value);\r
-    }\r
-    \r
-    /**\r
-     * Gets the value of the synonyms property.\r
+       public void setGroups(List<Group> groups) {\r
+               this.groups = groups;\r
+       }\r
+\r
+       /**\r
+     * Gets the value of the grantedAuthorities property.\r
      * \r
      * @return\r
      *     possible object is\r
-     *     {@link List<Synonym> }\r
+     *     {@link List<GrantedAuthority> }\r
      *     \r
      */\r
-    public List<HomotypicalGroup> getHomotypicalGroups() {\r
-        return homotypicalGroups;\r
-    }\r
+       public List<GrantedAuthority> getGrantedAuthorities() {\r
+               return grantedAuthorities;\r
+       }\r
 \r
-    /**\r
-     * Sets the value of the synonyms property.\r
+       /**\r
+     * Sets the value of the grantedAuthorities property.\r
      * \r
      * @param value\r
      *     allowed object is\r
-     *     {@link List<Synonym> }\r
+     *     {@link List<GrantedAuthority> }\r
      *     \r
      */\r
-    public void setHomotypicalGroups(List<HomotypicalGroup> value) {\r
-        this.homotypicalGroups = value;\r
-    }\r
-    \r
+       public void setGrantedAuthorities(List<GrantedAuthority> grantedAuthorities) {\r
+               this.grantedAuthorities = grantedAuthorities;\r
+       }\r
+\r
+       public void addUser(User deproxy) {\r
+               this.users.add(deproxy);\r
+               \r
+       }    \r
 }\r