ref #8162 adapt cdmlip to new term package structure
[cdmlib.git] / cdmlib-persistence / src / main / java / eu / etaxonomy / cdm / database / data / FullCoverageDataGenerator.java
index 21a98fc6459d216d85dce2ca9e40e7e10b94a2f5..169b58939f9946f165d8f7b6ce680e73013687a9 100644 (file)
@@ -22,7 +22,6 @@ import eu.etaxonomy.cdm.model.common.AnnotatableEntity;
 import eu.etaxonomy.cdm.model.common.Annotation;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.Credit;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.EventBase;
 import eu.etaxonomy.cdm.model.common.Extension;
 import eu.etaxonomy.cdm.model.common.ExtensionType;
@@ -38,13 +37,12 @@ import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.common.Marker;
 import eu.etaxonomy.cdm.model.common.MarkerType;
 import eu.etaxonomy.cdm.model.common.OriginalSourceType;
-import eu.etaxonomy.cdm.model.common.Representation;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.common.TimePeriod;
 import eu.etaxonomy.cdm.model.common.User;
 import eu.etaxonomy.cdm.model.description.CategoricalData;
 import eu.etaxonomy.cdm.model.description.CommonTaxonName;
 import eu.etaxonomy.cdm.model.description.DescriptionElementSource;
+import eu.etaxonomy.cdm.model.description.DescriptiveDataSet;
 import eu.etaxonomy.cdm.model.description.Distribution;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.description.FeatureNode;
@@ -68,12 +66,13 @@ import eu.etaxonomy.cdm.model.description.TaxonInteraction;
 import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
 import eu.etaxonomy.cdm.model.description.TextData;
 import eu.etaxonomy.cdm.model.description.TextFormat;
-import eu.etaxonomy.cdm.model.description.WorkingSet;
 import eu.etaxonomy.cdm.model.location.Country;
 import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.location.Point;
 import eu.etaxonomy.cdm.model.location.ReferenceSystem;
 import eu.etaxonomy.cdm.model.media.AudioFile;
+import eu.etaxonomy.cdm.model.media.ExternalLink;
+import eu.etaxonomy.cdm.model.media.ExternalLinkType;
 import eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity;
 import eu.etaxonomy.cdm.model.media.ImageFile;
 import eu.etaxonomy.cdm.model.media.Media;
@@ -94,9 +93,6 @@ import eu.etaxonomy.cdm.model.molecular.SequenceString;
 import eu.etaxonomy.cdm.model.molecular.SingleRead;
 import eu.etaxonomy.cdm.model.molecular.SingleReadAlignment;
 import eu.etaxonomy.cdm.model.molecular.SingleReadAlignment.Shift;
-import eu.etaxonomy.cdm.model.name.BacterialName;
-import eu.etaxonomy.cdm.model.name.BotanicalName;
-import eu.etaxonomy.cdm.model.name.CultivarPlantName;
 import eu.etaxonomy.cdm.model.name.HybridRelationship;
 import eu.etaxonomy.cdm.model.name.HybridRelationshipType;
 import eu.etaxonomy.cdm.model.name.NameRelationship;
@@ -106,12 +102,11 @@ import eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus;
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
 import eu.etaxonomy.cdm.model.name.Rank;
+import eu.etaxonomy.cdm.model.name.Registration;
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
-import eu.etaxonomy.cdm.model.name.TaxonNameBase;
+import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
-import eu.etaxonomy.cdm.model.name.ViralName;
-import eu.etaxonomy.cdm.model.name.ZoologicalName;
 import eu.etaxonomy.cdm.model.occurrence.Collection;
 import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
 import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;
@@ -131,8 +126,13 @@ import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.SynonymType;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.model.taxon.TaxonNodeAgentRelation;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.Representation;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.strategy.parser.TimePeriodParser;
 
 /**
@@ -147,7 +147,7 @@ import eu.etaxonomy.cdm.strategy.parser.TimePeriodParser;
  * depend on general parameter than concrete data values.
  *
  * @author a.mueller
- * @created 3013-12-02
+ * @since 3013-12-02
  *
  *
  */
@@ -155,7 +155,7 @@ public class FullCoverageDataGenerator {
 
 
        public void fillWithData(Session session){
-               List<CdmBase> cdmBases = new ArrayList<CdmBase>();
+               List<CdmBase> cdmBases = new ArrayList<>();
 
                createAgents(cdmBases);
 
@@ -200,7 +200,7 @@ public class FullCoverageDataGenerator {
                //Others
                try {
                        LSIDAuthority lsidAuthority = new LSIDAuthority("My authority");
-                       lsidAuthority.addNamespace("lsidNamespace", TaxonNameBase.class);
+                       lsidAuthority.addNamespace("lsidNamespace", TaxonName.class);
                        cdmBases.add(lsidAuthority);
                } catch (MalformedLSIDException e) {
                        e.printStackTrace();
@@ -225,8 +225,8 @@ public class FullCoverageDataGenerator {
        private void createAgents(List<CdmBase> cdmBases) {
                //Person
                Person person = Person.NewTitledInstance("Person Title");
-               person.setFirstname("first name");
-               person.setLastname("last name");
+               person.setGivenName("first name");
+               person.setFamilyName("last name");
                person.setLifespan(TimePeriodParser.parseString("1905-1995"));
                person.setPrefix("prefix");
                person.setSuffix("suffix");
@@ -342,7 +342,7 @@ public class FullCoverageDataGenerator {
 
                Taxon referencedTaxon = getTaxon();
                cdmBases.add(referencedTaxon);
-               languageString.addIntextReference(IntextReference.NewTaxonInstance(referencedTaxon, languageString, 2, 5));
+               languageString.addIntextReference(IntextReference.NewInstance(referencedTaxon, languageString, 2, 5));
                textData.putModifyingText(eng, "nice diagnosis");
                handleAnnotatableEntity(textData);
                handleAnnotatableEntity(languageString);
@@ -390,6 +390,9 @@ public class FullCoverageDataGenerator {
                Reference ref = ReferenceFactory.newArticle();
                DescriptionElementSource source = textData.addSource(OriginalSourceType.Import, "22", "taxon description table", ref, "detail");
                source.setNameUsedInSource(TaxonNameFactory.NewBotanicalInstance(Rank.GENUS()));
+               ExternalLink link = ExternalLink.NewInstance(ExternalLinkType.WebSite,
+                       URI.create("http://wwww.abd.de"), "Somehow useful link", 445);
+               source.addLink(link);
                handleAnnotatableEntity(source);
 
                taxonDescription.addDescriptionSource(ref);
@@ -402,7 +405,7 @@ public class FullCoverageDataGenerator {
                handleAnnotatableEntity(specDesc);
 
                //Name description
-               TaxonNameBase<?,?> name = TaxonNameFactory.NewBotanicalInstance(Rank.GENUS());
+               TaxonName name = TaxonNameFactory.NewBotanicalInstance(Rank.GENUS());
                TaxonNameDescription nameDesc = TaxonNameDescription.NewInstance(name);
                cdmBases.add(name);
                handleAnnotatableEntity(nameDesc);
@@ -427,11 +430,20 @@ public class FullCoverageDataGenerator {
                cdmBases.add(leaveLengthNode);
 
 
-               WorkingSet workingSet = WorkingSet.NewInstance();
-               workingSet.addDescription(taxonDescription);
-               workingSet.setLabel("My Workingset");
-               workingSet.getDescriptiveSystem();
-               handleAnnotatableEntity(workingSet);
+               //DescriptiveDataSet
+               DescriptiveDataSet descriptiveDataSet = DescriptiveDataSet.NewInstance();
+               descriptiveDataSet.addDescription(taxonDescription);
+               descriptiveDataSet.setLabel("My Descriptive Dataset");
+               descriptiveDataSet.getDescriptiveSystem();
+               handleAnnotatableEntity(descriptiveDataSet);
+               descriptiveDataSet.addGeoFilterArea(Country.GERMANY());
+               Classification classification = Classification.NewInstance("DescriptiveDataSet subtree classification");
+               Taxon subTreeTaxon = getTaxon();
+        TaxonNode subtree = classification.addChildTaxon(subTreeTaxon, null, null);
+               descriptiveDataSet.addTaxonSubtree(subtree);
+
+               cdmBases.add(classification);
+               cdmBases.add(subtree);
 
 
                //polytomous keys
@@ -500,7 +512,7 @@ public class FullCoverageDataGenerator {
                media.addRepresentation(mediaRepresentation);
 
                media.putTitle(Language.ENGLISH(), "Media title");
-               media.setMediaCreated(DateTime.now());
+               media.setMediaCreated(TimePeriod.NewInstance(DateTime.now()));
                media.putDescription(Language.ENGLISH(), "Media description");
                handleIdentifiableEntity(media);
 
@@ -627,11 +639,11 @@ public class FullCoverageDataGenerator {
 
        private void createTaxon(List<CdmBase> cdmBases) {
                Reference sec = getReference();
-               TaxonNameBase<?,?> name = TaxonNameFactory.NewBotanicalInstance(Rank.GENUS());
+               TaxonName name = TaxonNameFactory.NewBotanicalInstance(Rank.GENUS());
                Taxon taxon = Taxon.NewInstance(name, sec);
                handleIdentifiableEntity(taxon);
 
-               TaxonNameBase<?,?> synName = TaxonNameFactory.NewBotanicalInstance(Rank.GENUS());
+               TaxonName synName = TaxonNameFactory.NewBotanicalInstance(Rank.GENUS());
                Synonym syn = Synonym.NewInstance(synName, sec, "123");
                taxon.addSynonym(syn, SynonymType.HETEROTYPIC_SYNONYM_OF());
                taxon.setDoubtful(true);
@@ -652,10 +664,14 @@ public class FullCoverageDataGenerator {
                classification.addGeoScope(Country.GERMANY());
                classification.putDescription(Language.ENGLISH(), "An interesting classification");
 
-
                TaxonNode node = classification.addChildTaxon(taxon, sec,"22");
                handleIdentifiableEntity(classification);
                handleAnnotatableEntity(node);
+               node.putExcludedNote(Language.DEFAULT(), "Excluded note");
+               DefinedTerm agentRelationType = DefinedTerm.NewTaxonNodeAgentRelationTypeInstance(null, "agentRelation", "ar");
+               Person agent = Person.NewTitledInstance("Related agent");
+               TaxonNodeAgentRelation agentRelation = node.addAgentRelation(agentRelationType, agent);
+               handleAnnotatableEntity(agentRelation);
 
                Taxon childTaxon = Taxon.NewInstance(synName, sec);
                node.addChildTaxon(childTaxon, sec, "44");
@@ -666,6 +682,7 @@ public class FullCoverageDataGenerator {
                cdmBases.add(concept);
                cdmBases.add(childTaxon);
                cdmBases.add(classification);
+               cdmBases.add(agentRelationType);
 
 
        }
@@ -679,7 +696,7 @@ public class FullCoverageDataGenerator {
                reference.setAuthorship(author);
                reference.setTitle("ref title");
                reference.setAbbrevTitle("abbrev title");
-               reference.setDatePublished(TimePeriodParser.parseString("1999"));
+               reference.setDatePublished(TimePeriodParser.parseStringVerbatim("1999"));
                reference.setEdition("edition");
                reference.setEditor("editor");
                Institution institution = Institution.NewInstance();
@@ -765,7 +782,7 @@ public class FullCoverageDataGenerator {
                mediaSpecimen.setAccessionNumber("accessionNumber");
 //             mediaSpecimen.setCollectorsNumber("collectorsNumber");
                mediaSpecimen.setBarcode("barcode");
-               BotanicalName storedUnder = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
+               TaxonName storedUnder = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
                storedUnder.setTitleCache("Stored under", true);
                mediaSpecimen.setStoredUnder(storedUnder);
                mediaSpecimen.setExsiccatum("exsiccatum");
@@ -792,7 +809,7 @@ public class FullCoverageDataGenerator {
                DefinedTerm kindOfUnit = DefinedTerm.NewKindOfUnitInstance("Kind of unit", "Kind of unit", null);
                cdmBases.add(kindOfUnit);
                fieldUnit.setKindOfUnit(kindOfUnit);
-               fieldUnit.setIndividualCount(3);
+               fieldUnit.setIndividualCount("3");
                fieldUnit.putDefinition(Language.ENGLISH(), "definition");
                fieldUnit.setPublish(true);
                handleIdentifiableEntity(fieldUnit);
@@ -812,12 +829,12 @@ public class FullCoverageDataGenerator {
 
 
        private void createTaxonName(List<CdmBase> cdmBases) {
-               BacterialName bacName = TaxonNameFactory.NewBacterialInstance(Rank.GENUS());
+               TaxonName bacName = TaxonNameFactory.NewBacterialInstance(Rank.GENUS());
                bacName.setSubGenusAuthorship("sub Genus author");
                bacName.setNameApprobation("nameApprobation");
                handleIdentifiableEntity(bacName);
 
-               CultivarPlantName botName = TaxonNameFactory.NewCultivarInstance(Rank.SUBSPECIES());
+               TaxonName botName = TaxonNameFactory.NewCultivarInstance(Rank.SUBSPECIES());
                botName.setAnamorphic(true);
                botName.setCultivarName("cultivarName");
                botName.setGenusOrUninomial("Genus");
@@ -834,13 +851,13 @@ public class FullCoverageDataGenerator {
                botName.setExBasionymAuthorship(exBasionymAuthorship);
                handleIdentifiableEntity(botName);
                handleAnnotatableEntity(botName.getHomotypicalGroup());
-               BotanicalName botName2 = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
+               TaxonName botName2 = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
                HybridRelationship hybridRel = botName2.addHybridChild(botName, HybridRelationshipType.FIRST_PARENT(), "Rule 1.2.3");
                hybridRel.setCitation(ReferenceFactory.newBook());
                hybridRel.setCitationMicroReference("p. 123");
                handleAnnotatableEntity(hybridRel);
 
-               ZoologicalName zooName = TaxonNameFactory.NewZoologicalInstance(Rank.GENUS());
+               TaxonName zooName = TaxonNameFactory.NewZoologicalInstance(Rank.GENUS());
                zooName.setBreed("breed");
                zooName.setPublicationYear(1922);
                zooName.setOriginalPublicationYear(1987);
@@ -856,7 +873,7 @@ public class FullCoverageDataGenerator {
                handleIdentifiableEntity(zooName);
 
                //TypeDesignation
-               ZoologicalName speciesZooName = TaxonNameFactory.NewZoologicalInstance(Rank.SPECIES());
+               TaxonName speciesZooName = TaxonNameFactory.NewZoologicalInstance(Rank.SPECIES());
                NameTypeDesignation nameDesig = zooName.addNameTypeDesignation(speciesZooName, getReference(), "111", "original name",
                                NameTypeDesignationStatus.AUTOMATIC(), true, true, true, true);
                handleAnnotatableEntity(nameDesig);
@@ -864,15 +881,28 @@ public class FullCoverageDataGenerator {
                                getReference(), "p,22", "original name", false, true);
                handleAnnotatableEntity(specimenDesig);
 
-               ViralName viralName = TaxonNameFactory.NewViralInstance(Rank.GENUS());
+               TaxonName viralName = TaxonNameFactory.NewViralInstance(Rank.GENUS());
                viralName.setAcronym("acronym");
                handleIdentifiableEntity(viralName);
 
-
+               //Registration
+               Registration registration = Registration.NewInstance("registration identifier",
+                       "specificIdentifier", speciesZooName, null);
+               registration.addTypeDesignation(specimenDesig);
+               registration.setRegistrationDate(DateTime.now());
+               Registration blockingRegistration = Registration.NewInstance();
+               registration.addBlockedBy(blockingRegistration);
+               registration.setInstitution(Institution.NewInstance());
+               User submitter = User.NewInstance("submitter", "12345");
+               registration.setSubmitter(submitter);
+               handleAnnotatableEntity(registration);;
+
+               cdmBases.add(submitter);
                cdmBases.add(bacName);
                cdmBases.add(botName);
                cdmBases.add(viralName);
                cdmBases.add(zooName);
+               cdmBases.add(botName2);
        }
 
        private void handleEventBase(EventBase event){
@@ -951,7 +981,7 @@ public class FullCoverageDataGenerator {
 
        private Taxon getTaxon() {
                Reference sec = getReference();
-               TaxonNameBase<?,?> name = TaxonNameFactory.NewBotanicalInstance(Rank.GENUS());
+               TaxonName name = TaxonNameFactory.NewBotanicalInstance(Rank.GENUS());
                Taxon taxon = Taxon.NewInstance(name, sec);
                return taxon;