improve FullCoverageDataGenerator
authorAndreas Müller <a.mueller@bgbm.org>
Mon, 20 Oct 2014 23:21:18 +0000 (23:21 +0000)
committerAndreas Müller <a.mueller@bgbm.org>
Mon, 20 Oct 2014 23:21:18 +0000 (23:21 +0000)
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/datagenerator/FullCoverageDataGenerator.java

index 25bd5d201969b1cf7c946a706eb6d84c1616476c..4d2769beba3379d23d00b3b5cb2271618a101303 100644 (file)
@@ -64,6 +64,7 @@ import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.location.Point;\r
 import eu.etaxonomy.cdm.model.location.ReferenceSystem;\r
 import eu.etaxonomy.cdm.model.media.AudioFile;\r
+import eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity;\r
 import eu.etaxonomy.cdm.model.media.ImageFile;\r
 import eu.etaxonomy.cdm.model.media.Media;\r
 import eu.etaxonomy.cdm.model.media.MediaRepresentation;\r
@@ -110,6 +111,7 @@ import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
 import eu.etaxonomy.cdm.strategy.parser.TimePeriodParser;\r
 \r
@@ -187,15 +189,20 @@ public class FullCoverageDataGenerator {
                //Team\r
                Team team = Team.NewTitledInstance("Team title", "Team abbrev title");\r
                team.addTeamMember(person);\r
+               handleIdentifiableEntity(team);\r
+               \r
                \r
                //Institution\r
                Institution institution = Institution.NewInstance();\r
                institution.setCode("institution code");\r
                institution.setName("institution name");\r
+               handleIdentifiableEntity(institution);\r
+               \r
                \r
                //TODO vocabulary\r
 //             voc = "29ad808b-3126-4274-be81-4561e7afc76f"\r
                DefinedTerm instType = DefinedTerm.NewInstitutionTypeInstance("Description forthis instition type", "institution type", "inst. t.");\r
+               cdmBases.add(instType);\r
                institution.addType(instType);\r
                person.addInstitutionalMembership(institution, TimePeriodParser.parseString("1955-1956"), "department", "role");\r
                \r
@@ -206,6 +213,7 @@ public class FullCoverageDataGenerator {
                \r
                cdmBases.add(person);\r
                cdmBases.add(team);\r
+               cdmBases.add(institution);\r
        }\r
        \r
 \r
@@ -213,43 +221,57 @@ public class FullCoverageDataGenerator {
                \r
                //Categorical data\r
                State state = State.NewInstance("Test state", "state", "st.");\r
+               cdmBases.add(state);\r
                CategoricalData categoricalData = CategoricalData.NewInstance(state, Feature.CONSERVATION());\r
                StateData stateData = categoricalData.getStateData().get(0);\r
                stateData.addModifier(DefinedTerm.SEX_FEMALE());\r
+               handleAnnotatableEntity(categoricalData);\r
+                       \r
                \r
-               StateData stateData2 = StateData.NewInstance(State.NewInstance());\r
+               State nextState = State.NewInstance();\r
+               cdmBases.add(nextState);\r
+               StateData stateData2 = StateData.NewInstance(nextState);\r
                stateData2.putModifyingText(Language.ENGLISH(), "State2 modifying text");\r
                categoricalData.addStateData(stateData2);\r
-               \r
-               \r
                categoricalData.setOrderRelevant(true);\r
                \r
                //Quantitative data\r
                Feature leaveLength = Feature.NewInstance("Leave length description", "leave length", "l.l.");\r
+               cdmBases.add(leaveLength);\r
                leaveLength.setSupportsQuantitativeData(true);\r
                QuantitativeData quantitativeData = QuantitativeData.NewInstance(leaveLength);\r
                MeasurementUnit measurementUnit = MeasurementUnit.NewInstance("Measurement Unit", "munit", null);\r
+               cdmBases.add(measurementUnit);\r
                quantitativeData.setUnit(measurementUnit);\r
                quantitativeData.setAverage((float)22.9 , null);\r
+               handleAnnotatableEntity(quantitativeData);\r
+               handleIdentifiableEntity(measurementUnit);\r
                \r
                \r
                CommonTaxonName commonTaxonName = CommonTaxonName.NewInstance("common name", Language.ENGLISH(), Country.UNITEDSTATESOFAMERICA());\r
+               handleAnnotatableEntity(commonTaxonName);\r
                \r
                TextData textData = TextData.NewInstance(Feature.DIAGNOSIS());\r
                textData.putModifyingText(Language.ENGLISH(), "nice diagnosis");\r
-               \r
+               handleAnnotatableEntity(textData);\r
+                               \r
                TextFormat format = TextFormat.NewInstance("format", "format", null);\r
                textData.setFormat(format);\r
+               cdmBases.add(format);\r
+               handleAnnotatableEntity(format);\r
                \r
                DerivedUnit specimen = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);\r
                IndividualsAssociation indAssoc = IndividualsAssociation.NewInstance(specimen);\r
                indAssoc.putDescription(Language.ENGLISH(), "description for individuals association");\r
+               handleAnnotatableEntity(indAssoc);\r
+               \r
                \r
                TaxonInteraction taxonInteraction = TaxonInteraction.NewInstance(Feature.HOSTPLANT());\r
                taxonInteraction.putDescription(Language.ENGLISH(), "interaction description");\r
-               \r
+               handleAnnotatableEntity(taxonInteraction);\r
                \r
                Distribution distribution = Distribution.NewInstance(Country.GERMANY(), PresenceTerm.CULTIVATED());\r
+               handleAnnotatableEntity(distribution);\r
                \r
                \r
                Taxon taxon = getTaxon();\r
@@ -262,6 +284,8 @@ public class FullCoverageDataGenerator {
                \r
                taxonDescription.addScope(DefinedTerm.SEX_FEMALE());\r
                taxonDescription.addGeoScope(Country.GERMANY());\r
+               handleIdentifiableEntity(taxonDescription);\r
+               \r
                \r
                cdmBases.add(taxon);\r
 \r
@@ -273,18 +297,21 @@ public class FullCoverageDataGenerator {
                Reference<?> ref = ReferenceFactory.newArticle();\r
                DescriptionElementSource source = textData.addSource(OriginalSourceType.Import, "22", "taxon description table", ref, "detail");\r
                source.setNameUsedInSource(BotanicalName.NewInstance(Rank.GENUS()));\r
-               \r
+               handleAnnotatableEntity(source);\r
                \r
                \r
                //Specimen description\r
                SpecimenOrObservationBase<?> describedSpecimen = getSpecimen();\r
-               SpecimenDescription.NewInstance(specimen);\r
+               SpecimenDescription specDesc = SpecimenDescription.NewInstance(specimen);\r
                cdmBases.add(describedSpecimen);\r
+               handleAnnotatableEntity(specDesc);\r
                \r
                //Name description\r
                TaxonNameBase<?,?> name = BotanicalName.NewInstance(Rank.GENUS());\r
-               TaxonNameDescription.NewInstance(name);\r
+               TaxonNameDescription nameDesc = TaxonNameDescription.NewInstance(name);\r
                cdmBases.add(name);\r
+               handleAnnotatableEntity(nameDesc);\r
+               \r
                \r
                //Feature Tree\r
                FeatureTree featureTree = FeatureTree.NewInstance();\r
@@ -292,9 +319,12 @@ public class FullCoverageDataGenerator {
                FeatureNode leaveLengthNode = FeatureNode.NewInstance(leaveLength);\r
                featureTree.getRootChildren().add(descriptionFeatureNode);\r
                descriptionFeatureNode.addChild(leaveLengthNode);\r
+               handleIdentifiableEntity(featureTree);          \r
                \r
                State inapplicableState = State.NewInstance("inapplicableState", "inapplicableState", null);\r
                State applicableState = State.NewInstance("only applicable state", "only applicable state", null);\r
+               cdmBases.add(applicableState);\r
+               cdmBases.add(inapplicableState);\r
                leaveLengthNode.addInapplicableState(inapplicableState);\r
                leaveLengthNode.addApplicableState(applicableState);\r
                cdmBases.add(featureTree);\r
@@ -304,14 +334,15 @@ public class FullCoverageDataGenerator {
                workingSet.addDescription(taxonDescription);\r
                workingSet.setLabel("My Workingset");\r
                workingSet.getDescriptiveSystem();\r
-\r
+               handleAnnotatableEntity(workingSet);\r
+               \r
                \r
                //polytomous keys\r
                Taxon coveredTaxon = Taxon.NewInstance(name, null);\r
                PolytomousKey key = PolytomousKey.NewTitledInstance("My Polykey");\r
                handleIdentificationKey(key, taxon, coveredTaxon);\r
                key.setStartNumber(10);\r
-               \r
+                       \r
                \r
                PolytomousKeyNode firstChildNode = PolytomousKeyNode.NewInstance("Green", "What is the leave length?", coveredTaxon, leaveLength);\r
                key.getRoot().addChild(firstChildNode);\r
@@ -349,6 +380,13 @@ public class FullCoverageDataGenerator {
                key.addGeographicalScope(Country.GERMANY());\r
                key.addScopeRestriction(DefinedTerm.SEX_FEMALE());\r
                key.addTaxonomicScope(taxon);\r
+               if (key instanceof IdentifiableEntity<?>){\r
+                       handleIdentifiableEntity((IdentifiableEntity<?>)key);\r
+               }else{\r
+                       handleAnnotatableEntity((AnnotatableEntity)key);\r
+               }\r
+                       \r
+\r
        }\r
        \r
        \r
@@ -367,6 +405,8 @@ public class FullCoverageDataGenerator {
                media.putTitle(Language.ENGLISH(), "Media title");\r
                media.setMediaCreated(DateTime.now());\r
                media.putDescription(Language.ENGLISH(), "Media description");\r
+               handleIdentifiableEntity(media);\r
+               \r
                \r
                Person artist = Person.NewTitledInstance("artist");\r
                media.setArtist(artist);\r
@@ -381,28 +421,37 @@ public class FullCoverageDataGenerator {
                //Amplification\r
                Amplification amplification = Amplification.NewInstance(dnaSample);\r
                DefinedTerm dnaMarker = DefinedTerm.NewDnaMarkerInstance("My dna marker", "dna marker", null);\r
+               cdmBases.add(dnaMarker);\r
                amplification.setDnaMarker(dnaMarker);\r
                amplification.setSuccessful(true);\r
                amplification.setSuccessText("Very successful");\r
+               handleAnnotatableEntity(amplification);\r
                \r
                Primer forwardPrimer = Primer.NewInstance("forward primer");\r
                forwardPrimer.setPublishedIn(getReference());\r
                forwardPrimer.setSequence(Sequence.NewInstance("my sequence"));\r
+               handleAnnotatableEntity(forwardPrimer);\r
                \r
                Primer reversePrimer = Primer.NewInstance("reverse primer");\r
+               handleAnnotatableEntity(reversePrimer);\r
                \r
                amplification.setForwardPrimer(forwardPrimer);\r
                amplification.setReversePrimer(reversePrimer);\r
                \r
                DefinedTerm cloningMethod = DefinedTerm.NewInstance(TermType.MaterialOrMethod, "cloning method", "cloning method", null);\r
+               cdmBases.add(cloningMethod);\r
                Cloning cloning = Cloning.NewInstance(cloningMethod, "My cloning method", "my strain", forwardPrimer, reversePrimer);\r
                amplification.setCloning(cloning);\r
+               handleAnnotatableEntity(cloningMethod);\r
+               handleAnnotatableEntity(cloning);\r
                \r
                DefinedTerm purificationMethod = DefinedTerm.NewInstance(TermType.MaterialOrMethod, "purification method", "purification method", null);\r
+               cdmBases.add(purificationMethod);\r
                MaterialOrMethodEvent purification = MaterialOrMethodEvent.NewInstance(purificationMethod, "purification method");\r
                amplification.setPurification(purification);\r
+               handleAnnotatableEntity(purification);\r
+               handleAnnotatableEntity(purificationMethod);\r
                \r
-\r
                amplification.setLadderUsed("ladder");\r
                amplification.setElectrophoresisVoltage(5.5);\r
                amplification.setGelConcentration(2.4);\r
@@ -410,12 +459,15 @@ public class FullCoverageDataGenerator {
                Media gelPhoto = Media.NewInstance();\r
                amplification.setGelPhoto(gelPhoto);\r
                \r
+               \r
                //SingleRead\r
                SingleRead singleRead = SingleRead.NewInstance();\r
+               handleAnnotatableEntity(singleRead);\r
                amplification.addSingleRead(singleRead);\r
-               MaterialOrMethodEvent readEvent = MaterialOrMethodEvent.NewInstance(null, "read method");\r
+               MaterialOrMethodEvent readMethod = MaterialOrMethodEvent.NewInstance(null, "read method");\r
+               singleRead.setMaterialOrMethod(readMethod);\r
+               handleAnnotatableEntity(readMethod);\r
                \r
-               singleRead.setMaterialOrMethod(readEvent);\r
                Media pherogram = Media.NewInstance();\r
                singleRead.setPherogram(pherogram);\r
                \r
@@ -437,11 +489,13 @@ public class FullCoverageDataGenerator {
                sequence.setHaplotype("haplotype");\r
                Reference<?> sequenceCitation = getReference();\r
                sequence.addCitation(sequenceCitation);\r
-               \r
-               \r
+               handleAnnotatableEntity(sequence);\r
+                       \r
                //Phylogenetic Tree\r
                PhylogeneticTree phyloTree = PhylogeneticTree.NewInstance();\r
                phyloTree.addUsedSequences(sequence);\r
+               handleIdentifiableEntity(phyloTree);\r
+               \r
                \r
                cdmBases.add(dnaSample);\r
                cdmBases.add(phyloTree);\r
@@ -452,24 +506,30 @@ public class FullCoverageDataGenerator {
                Reference<?> sec = getReference();\r
                TaxonNameBase<?,?> name = BotanicalName.NewInstance(Rank.GENUS());\r
                Taxon taxon = Taxon.NewInstance(name, sec);\r
-               \r
+               handleIdentifiableEntity(taxon);\r
+\r
                TaxonNameBase<?,?> synName = BotanicalName.NewInstance(Rank.GENUS());\r
                Synonym syn = Synonym.NewInstance(synName, sec);\r
                taxon.addSynonym(syn, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF(), \r
                                getReference(), "123");\r
                taxon.setDoubtful(true);\r
+               handleIdentifiableEntity(syn);\r
+\r
                \r
                Taxon concept = Taxon.NewInstance(name, getReference());\r
-               taxon.addTaxonRelation(concept, TaxonRelationshipType.CONGRUENT_TO(), \r
+               TaxonRelationship taxRel = taxon.addTaxonRelation(concept, TaxonRelationshipType.CONGRUENT_TO(), \r
                                sec, "444");\r
                taxon.setTaxonStatusUnknown(true);\r
                taxon.setUnplaced(true);\r
                taxon.setExcluded(true);\r
+               handleAnnotatableEntity(taxRel);\r
+\r
                \r
                //Classification\r
                Classification classification = Classification.NewInstance("My classification", sec);\r
                TaxonNode node = classification.addChildTaxon(taxon, sec,"22");\r
-               \r
+               handleIdentifiableEntity(classification);\r
+\r
                Taxon childTaxon = Taxon.NewInstance(synName, sec);\r
                node.addChildTaxon(childTaxon, sec, "44");\r
                \r
@@ -513,6 +573,8 @@ public class FullCoverageDataGenerator {
                Reference<?> journal = ReferenceFactory.newJournal();\r
                reference.setInJournal(journal);\r
                \r
+               handleIdentifiableEntity(reference);\r
+\r
                cdmBases.add(reference);\r
                \r
        }\r
@@ -525,6 +587,9 @@ public class FullCoverageDataGenerator {
                Collection collection = Collection.NewInstance();\r
                Collection subCollection = Collection.NewInstance();\r
                subCollection.setSuperCollection(collection);\r
+               handleIdentifiableEntity(collection);\r
+               handleIdentifiableEntity(subCollection);\r
+               \r
                \r
                collection.setCode("coll code");\r
                collection.setCodeStandard("codeStandard");\r
@@ -539,7 +604,8 @@ public class FullCoverageDataGenerator {
                fieldUnit.setFieldNotes("fieldNotes");\r
                Person primaryCollector = Person.NewInstance();\r
                fieldUnit.setPrimaryCollector(primaryCollector);\r
-               \r
+               handleIdentifiableEntity(fieldUnit);\r
+\r
                GatheringEvent gatheringEvent = GatheringEvent.NewInstance();\r
                fieldUnit.setGatheringEvent(gatheringEvent);\r
                gatheringEvent.putLocality(Language.ENGLISH(), "locality");\r
@@ -559,6 +625,7 @@ public class FullCoverageDataGenerator {
                gatheringEvent.setDistanceToWaterSurface(10.4);\r
                gatheringEvent.setDistanceToWaterSurfaceMax(100.3);\r
                gatheringEvent.setDistanceToWaterSurfaceText("distance to water text");\r
+               handleAnnotatableEntity(gatheringEvent);\r
 \r
                \r
                //Derived Unit\r
@@ -575,27 +642,35 @@ public class FullCoverageDataGenerator {
                PreservationMethod preservation = PreservationMethod.NewInstance(null, "My preservation");\r
                preservation.setTemperature(22.4);\r
                mediaSpecimen.setPreservation(preservation);\r
-               \r
+               handleIdentifiableEntity(mediaSpecimen);\r
+\r
                //DerivationEvent\r
                DerivationEvent event = DerivationEvent.NewInstance(DerivationEventType.ACCESSIONING());\r
                event.addOriginal(fieldUnit);\r
                event.addDerivative(mediaSpecimen);\r
-               \r
+               handleAnnotatableEntity(event);\r
+\r
                \r
                //SpecOrObservationBase\r
                fieldUnit.setSex(DefinedTerm.SEX_FEMALE());\r
-               fieldUnit.setLifeStage(DefinedTerm.NewStageInstance("Live stage", "stage", null));\r
-               fieldUnit.setKindOfUnit(DefinedTerm.NewKindOfUnitInstance("Kind of unit", "Kind of unit", null));\r
+               DefinedTerm lifeStage = DefinedTerm.NewStageInstance("Live stage", "stage", null);\r
+               cdmBases.add(lifeStage);\r
+               fieldUnit.setLifeStage(lifeStage);\r
+               DefinedTerm kindOfUnit = DefinedTerm.NewKindOfUnitInstance("Kind of unit", "Kind of unit", null);\r
+               cdmBases.add(kindOfUnit);\r
+               fieldUnit.setKindOfUnit(kindOfUnit);\r
                fieldUnit.setIndividualCount(3);\r
                fieldUnit.putDefinition(Language.ENGLISH(), "definition");\r
                fieldUnit.setPublish(true);\r
-       \r
+               handleIdentifiableEntity(fieldUnit);\r
+\r
                //Determination\r
                DeterminationEvent determinationEvent = DeterminationEvent.NewInstance(getTaxon(), mediaSpecimen);\r
                determinationEvent.setModifier(DefinedTerm.DETERMINATION_MODIFIER_AFFINIS());\r
                determinationEvent.setPreferredFlag(true);\r
                determinationEvent.addReference(getReference());\r
-               \r
+               handleAnnotatableEntity(determinationEvent);\r
+\r
                cdmBases.add(fieldUnit);\r
                cdmBases.add(mediaSpecimen);\r
                cdmBases.add(collection);\r
@@ -606,6 +681,7 @@ public class FullCoverageDataGenerator {
                BacterialName bacName = BacterialName.NewInstance(Rank.GENUS());\r
                bacName.setSubGenusAuthorship("sub Genus author");\r
                bacName.setNameApprobation("nameApprobation");\r
+               handleIdentifiableEntity(bacName);\r
                \r
                CultivarPlantName botName = CultivarPlantName.NewInstance(Rank.SUBSPECIES());\r
                botName.setAnamorphic(true);\r
@@ -622,6 +698,8 @@ public class FullCoverageDataGenerator {
                botName.setBasionymAuthorTeam(basionymAuthorTeam);\r
                Person exBasionymAuthorTeam = Person.NewInstance();\r
                botName.setExBasionymAuthorTeam(exBasionymAuthorTeam);\r
+               handleIdentifiableEntity(botName);\r
+\r
                \r
                ZoologicalName zooName = ZoologicalName.NewInstance(Rank.GENUS());\r
                zooName.setBreed("breed");\r
@@ -633,7 +711,8 @@ public class FullCoverageDataGenerator {
                zooName.setNomenclaturalReference(getReference());\r
                zooName.addRelationshipFromName(botName, NameRelationshipType.LATER_HOMONYM() , "ruleConsidered");\r
                zooName.addStatus(NomenclaturalStatus.NewInstance(NomenclaturalStatusType.CONSERVED(), getReference(), "p. 222"));\r
-               \r
+               handleIdentifiableEntity(zooName);\r
+\r
                //TypeDesignation\r
                ZoologicalName speciesZooName = ZoologicalName.NewInstance(Rank.SPECIES());\r
                zooName.addNameTypeDesignation(speciesZooName, getReference(), "111", "original name", \r
@@ -641,9 +720,10 @@ public class FullCoverageDataGenerator {
                speciesZooName.addSpecimenTypeDesignation(getSpecimen(), SpecimenTypeDesignationStatus.HOLOTYPE(), \r
                                getReference(), "p,22", "original name", false, true);\r
                \r
-               \r
                ViralName viralName = ViralName.NewInstance(Rank.GENUS());\r
                viralName.setAcronym("acronym");\r
+               handleIdentifiableEntity(viralName);\r
+\r
                \r
                cdmBases.add(bacName);\r
                cdmBases.add(botName);\r
@@ -676,6 +756,12 @@ public class FullCoverageDataGenerator {
                rights.setType(RightsType.COPYRIGHT());\r
                Person owner = Person.NewTitledInstance("Owner");\r
                rights.setAgent(owner);\r
+               identifiableEntity.addRights(rights);\r
+               \r
+               if (identifiableEntity.isInstanceOf(IdentifiableMediaEntity.class)){\r
+                       Media media = Media.NewInstance(URI.create("http://www.identifiableMedia.de"), 22, "img/jpg", "jpg");\r
+                       ((IdentifiableMediaEntity<?>)identifiableEntity).addMedia(media);\r
+               }\r
                \r
                //source\r
                IdentifiableSource source = identifiableEntity.addSource(OriginalSourceType.Import, "id", "idNamespace", \r