4 package eu
.etaxonomy
.cdm
.datagenerator
;
7 import java
.util
.ArrayList
;
10 import org
.hibernate
.Session
;
11 import org
.joda
.time
.DateTime
;
13 import com
.ibm
.lsid
.MalformedLSIDException
;
15 import eu
.etaxonomy
.cdm
.common
.DOI
;
16 import eu
.etaxonomy
.cdm
.model
.agent
.Address
;
17 import eu
.etaxonomy
.cdm
.model
.agent
.Contact
;
18 import eu
.etaxonomy
.cdm
.model
.agent
.Institution
;
19 import eu
.etaxonomy
.cdm
.model
.agent
.Person
;
20 import eu
.etaxonomy
.cdm
.model
.agent
.Team
;
21 import eu
.etaxonomy
.cdm
.model
.common
.AnnotatableEntity
;
22 import eu
.etaxonomy
.cdm
.model
.common
.Annotation
;
23 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
24 import eu
.etaxonomy
.cdm
.model
.common
.Credit
;
25 import eu
.etaxonomy
.cdm
.model
.common
.DefinedTerm
;
26 import eu
.etaxonomy
.cdm
.model
.common
.Extension
;
27 import eu
.etaxonomy
.cdm
.model
.common
.ExtensionType
;
28 import eu
.etaxonomy
.cdm
.model
.common
.IdentifiableEntity
;
29 import eu
.etaxonomy
.cdm
.model
.common
.IdentifiableSource
;
30 import eu
.etaxonomy
.cdm
.model
.common
.LSID
;
31 import eu
.etaxonomy
.cdm
.model
.common
.Language
;
32 import eu
.etaxonomy
.cdm
.model
.common
.Marker
;
33 import eu
.etaxonomy
.cdm
.model
.common
.MarkerType
;
34 import eu
.etaxonomy
.cdm
.model
.common
.OriginalSourceType
;
35 import eu
.etaxonomy
.cdm
.model
.common
.Representation
;
36 import eu
.etaxonomy
.cdm
.model
.common
.TermType
;
37 import eu
.etaxonomy
.cdm
.model
.description
.CategoricalData
;
38 import eu
.etaxonomy
.cdm
.model
.description
.CommonTaxonName
;
39 import eu
.etaxonomy
.cdm
.model
.description
.DescriptionElementSource
;
40 import eu
.etaxonomy
.cdm
.model
.description
.Distribution
;
41 import eu
.etaxonomy
.cdm
.model
.description
.Feature
;
42 import eu
.etaxonomy
.cdm
.model
.description
.FeatureNode
;
43 import eu
.etaxonomy
.cdm
.model
.description
.FeatureTree
;
44 import eu
.etaxonomy
.cdm
.model
.description
.IIdentificationKey
;
45 import eu
.etaxonomy
.cdm
.model
.description
.IndividualsAssociation
;
46 import eu
.etaxonomy
.cdm
.model
.description
.MeasurementUnit
;
47 import eu
.etaxonomy
.cdm
.model
.description
.MediaKey
;
48 import eu
.etaxonomy
.cdm
.model
.description
.MultiAccessKey
;
49 import eu
.etaxonomy
.cdm
.model
.description
.PolytomousKey
;
50 import eu
.etaxonomy
.cdm
.model
.description
.PolytomousKeyNode
;
51 import eu
.etaxonomy
.cdm
.model
.description
.PresenceTerm
;
52 import eu
.etaxonomy
.cdm
.model
.description
.QuantitativeData
;
53 import eu
.etaxonomy
.cdm
.model
.description
.SpecimenDescription
;
54 import eu
.etaxonomy
.cdm
.model
.description
.State
;
55 import eu
.etaxonomy
.cdm
.model
.description
.StateData
;
56 import eu
.etaxonomy
.cdm
.model
.description
.TaxonDescription
;
57 import eu
.etaxonomy
.cdm
.model
.description
.TaxonInteraction
;
58 import eu
.etaxonomy
.cdm
.model
.description
.TaxonNameDescription
;
59 import eu
.etaxonomy
.cdm
.model
.description
.TextData
;
60 import eu
.etaxonomy
.cdm
.model
.description
.TextFormat
;
61 import eu
.etaxonomy
.cdm
.model
.description
.WorkingSet
;
62 import eu
.etaxonomy
.cdm
.model
.location
.Country
;
63 import eu
.etaxonomy
.cdm
.model
.location
.NamedArea
;
64 import eu
.etaxonomy
.cdm
.model
.location
.Point
;
65 import eu
.etaxonomy
.cdm
.model
.location
.ReferenceSystem
;
66 import eu
.etaxonomy
.cdm
.model
.media
.AudioFile
;
67 import eu
.etaxonomy
.cdm
.model
.media
.ImageFile
;
68 import eu
.etaxonomy
.cdm
.model
.media
.Media
;
69 import eu
.etaxonomy
.cdm
.model
.media
.MediaRepresentation
;
70 import eu
.etaxonomy
.cdm
.model
.media
.MovieFile
;
71 import eu
.etaxonomy
.cdm
.model
.media
.Rights
;
72 import eu
.etaxonomy
.cdm
.model
.media
.RightsType
;
73 import eu
.etaxonomy
.cdm
.model
.molecular
.Amplification
;
74 import eu
.etaxonomy
.cdm
.model
.molecular
.Cloning
;
75 import eu
.etaxonomy
.cdm
.model
.molecular
.DnaSample
;
76 import eu
.etaxonomy
.cdm
.model
.molecular
.PhylogeneticTree
;
77 import eu
.etaxonomy
.cdm
.model
.molecular
.Primer
;
78 import eu
.etaxonomy
.cdm
.model
.molecular
.Sequence
;
79 import eu
.etaxonomy
.cdm
.model
.molecular
.SequenceDirection
;
80 import eu
.etaxonomy
.cdm
.model
.molecular
.SequenceString
;
81 import eu
.etaxonomy
.cdm
.model
.molecular
.SingleRead
;
82 import eu
.etaxonomy
.cdm
.model
.name
.BacterialName
;
83 import eu
.etaxonomy
.cdm
.model
.name
.BotanicalName
;
84 import eu
.etaxonomy
.cdm
.model
.name
.CultivarPlantName
;
85 import eu
.etaxonomy
.cdm
.model
.name
.NameRelationshipType
;
86 import eu
.etaxonomy
.cdm
.model
.name
.NameTypeDesignationStatus
;
87 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalStatus
;
88 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalStatusType
;
89 import eu
.etaxonomy
.cdm
.model
.name
.Rank
;
90 import eu
.etaxonomy
.cdm
.model
.name
.SpecimenTypeDesignationStatus
;
91 import eu
.etaxonomy
.cdm
.model
.name
.TaxonNameBase
;
92 import eu
.etaxonomy
.cdm
.model
.name
.ViralName
;
93 import eu
.etaxonomy
.cdm
.model
.name
.ZoologicalName
;
94 import eu
.etaxonomy
.cdm
.model
.occurrence
.Collection
;
95 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivationEvent
;
96 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivationEventType
;
97 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivedUnit
;
98 import eu
.etaxonomy
.cdm
.model
.occurrence
.DeterminationEvent
;
99 import eu
.etaxonomy
.cdm
.model
.occurrence
.FieldUnit
;
100 import eu
.etaxonomy
.cdm
.model
.occurrence
.GatheringEvent
;
101 import eu
.etaxonomy
.cdm
.model
.occurrence
.MaterialOrMethodEvent
;
102 import eu
.etaxonomy
.cdm
.model
.occurrence
.MediaSpecimen
;
103 import eu
.etaxonomy
.cdm
.model
.occurrence
.PreservationMethod
;
104 import eu
.etaxonomy
.cdm
.model
.occurrence
.SpecimenOrObservationBase
;
105 import eu
.etaxonomy
.cdm
.model
.occurrence
.SpecimenOrObservationType
;
106 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
107 import eu
.etaxonomy
.cdm
.model
.reference
.ReferenceFactory
;
108 import eu
.etaxonomy
.cdm
.model
.taxon
.Classification
;
109 import eu
.etaxonomy
.cdm
.model
.taxon
.Synonym
;
110 import eu
.etaxonomy
.cdm
.model
.taxon
.SynonymRelationshipType
;
111 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
112 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonNode
;
113 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonRelationshipType
;
114 import eu
.etaxonomy
.cdm
.strategy
.parser
.TimePeriodParser
;
117 * This class tries to create a database that has
118 * at least one record in each database.
119 * It is meant to test update scripts as well as imports
121 * ATTENTION: As the content of the created database may change
122 * over time due to model changes and other requirements test using
123 * this class should be written in a way that they do rather
124 * depend on general parameter than concrete data values.
127 * @created 3013-12-02
129 * TODO under construction
132 public class FullCoverageDataGenerator
{
135 public void fillWithData(Session session
){
136 List
<CdmBase
> cdmBases
= new ArrayList
<CdmBase
>();
138 createAgents(cdmBases
);
140 createDescriptions(cdmBases
);
142 createMedia(cdmBases
);
144 createMolecular(cdmBases
);
146 createTaxonName(cdmBases
);
148 createOccurrence(cdmBases
);
150 createReference(cdmBases
);
152 createTaxon(cdmBases
);
154 for (CdmBase cdmBase
: cdmBases
){
155 session
.save(cdmBase
);
163 private void createAgents(List
<CdmBase
> cdmBases
) {
165 Person person
= Person
.NewTitledInstance("Person Title");
166 person
.setFirstname("first name");
167 person
.setLastname("last name");
168 person
.setLifespan(TimePeriodParser
.parseString("1905-1995"));
169 person
.setPrefix("prefix");
170 person
.setSuffix("suffix");
172 handleIdentifiableEntity(person
);
175 Contact contact
= Contact
.NewInstance();
176 person
.setContact(contact
);
177 Point locality
= Point
.NewInstance(45.12, -38.69, ReferenceSystem
.WGS84(), 22);
178 contact
.addEmailAddress("a@b.de");
179 contact
.addFaxNumber("f:010-123456");
180 contact
.addPhoneNumber("p:090-987654");
181 contact
.addUrl(URI
.create("http://www.abc.de").toString());
184 Address address
= Address
.NewInstance(Country
.GERMANY(), "locality", "pobox", "12345", "region", "street", locality
);
185 contact
.addAddress(address
);
188 Team team
= Team
.NewTitledInstance("Team title", "Team abbrev title");
189 team
.addTeamMember(person
);
192 Institution institution
= Institution
.NewInstance();
193 institution
.setCode("institution code");
194 institution
.setName("institution name");
197 // voc = "29ad808b-3126-4274-be81-4561e7afc76f"
198 DefinedTerm instType
= DefinedTerm
.NewInstitutionTypeInstance("Description forthis instition type", "institution type", "inst. t.");
199 institution
.addType(instType
);
200 person
.addInstitutionalMembership(institution
, TimePeriodParser
.parseString("1955-1956"), "department", "role");
202 Institution subInstitution
= Institution
.NewInstance();
203 subInstitution
.setCode("sub institution code");
204 subInstitution
.setName("sub institution name");
205 subInstitution
.setIsPartOf(institution
);
207 cdmBases
.add(person
);
212 private void createDescriptions(List
<CdmBase
> cdmBases
) {
215 State state
= State
.NewInstance("Test state", "state", "st.");
216 CategoricalData categoricalData
= CategoricalData
.NewInstance(state
, Feature
.CONSERVATION());
217 StateData stateData
= categoricalData
.getStateData().get(0);
218 stateData
.addModifier(DefinedTerm
.SEX_FEMALE());
220 StateData stateData2
= StateData
.NewInstance(State
.NewInstance());
221 stateData2
.putModifyingText(Language
.ENGLISH(), "State2 modifying text");
222 categoricalData
.addStateData(stateData2
);
225 categoricalData
.setOrderRelevant(true);
228 Feature leaveLength
= Feature
.NewInstance("Leave length description", "leave length", "l.l.");
229 leaveLength
.setSupportsQuantitativeData(true);
230 QuantitativeData quantitativeData
= QuantitativeData
.NewInstance(leaveLength
);
231 MeasurementUnit measurementUnit
= MeasurementUnit
.NewInstance("Measurement Unit", "munit", null);
232 quantitativeData
.setUnit(measurementUnit
);
233 quantitativeData
.setAverage((float)22.9 , null);
236 CommonTaxonName commonTaxonName
= CommonTaxonName
.NewInstance("common name", Language
.ENGLISH(), Country
.UNITEDSTATESOFAMERICA());
238 TextData textData
= TextData
.NewInstance(Feature
.DIAGNOSIS());
239 textData
.putModifyingText(Language
.ENGLISH(), "nice diagnosis");
241 TextFormat format
= TextFormat
.NewInstance("format", "format", null);
242 textData
.setFormat(format
);
244 DerivedUnit specimen
= DerivedUnit
.NewInstance(SpecimenOrObservationType
.PreservedSpecimen
);
245 IndividualsAssociation indAssoc
= IndividualsAssociation
.NewInstance(specimen
);
246 indAssoc
.putDescription(Language
.ENGLISH(), "description for individuals association");
248 TaxonInteraction taxonInteraction
= TaxonInteraction
.NewInstance(Feature
.HOSTPLANT());
249 taxonInteraction
.putDescription(Language
.ENGLISH(), "interaction description");
252 Distribution distribution
= Distribution
.NewInstance(Country
.GERMANY(), PresenceTerm
.CULTIVATED());
255 Taxon taxon
= getTaxon();
256 TaxonDescription taxonDescription
= TaxonDescription
.NewInstance(taxon
);
257 taxonDescription
.addElements(categoricalData
, quantitativeData
,
258 textData
, commonTaxonName
, taxonInteraction
, indAssoc
, distribution
);
260 DerivedUnit describedSpecimenOrObservation
= DerivedUnit
.NewInstance(SpecimenOrObservationType
.DerivedUnit
);
261 taxonDescription
.setDescribedSpecimenOrObservation(describedSpecimenOrObservation
);
263 taxonDescription
.addScope(DefinedTerm
.SEX_FEMALE());
264 taxonDescription
.addGeoScope(Country
.GERMANY());
268 //DescriptionElmenetBase + source
269 textData
.addMedia(Media
.NewInstance());
270 textData
.addModifier(DefinedTerm
.SEX_HERMAPHRODITE());
271 textData
.putModifyingText(Language
.ENGLISH(), "no modification");
272 textData
.setTimeperiod(TimePeriodParser
.parseString("1970-1980"));
273 Reference
<?
> ref
= ReferenceFactory
.newArticle();
274 DescriptionElementSource source
= textData
.addSource(OriginalSourceType
.Import
, "22", "taxon description table", ref
, "detail");
275 source
.setNameUsedInSource(BotanicalName
.NewInstance(Rank
.GENUS()));
279 //Specimen description
280 SpecimenOrObservationBase
<?
> describedSpecimen
= getSpecimen();
281 SpecimenDescription
.NewInstance(specimen
);
282 cdmBases
.add(describedSpecimen
);
285 TaxonNameBase
<?
,?
> name
= BotanicalName
.NewInstance(Rank
.GENUS());
286 TaxonNameDescription
.NewInstance(name
);
290 FeatureTree featureTree
= FeatureTree
.NewInstance();
291 FeatureNode descriptionFeatureNode
= FeatureNode
.NewInstance(Feature
.DESCRIPTION());
292 FeatureNode leaveLengthNode
= FeatureNode
.NewInstance(leaveLength
);
293 featureTree
.getRootChildren().add(descriptionFeatureNode
);
294 descriptionFeatureNode
.addChild(leaveLengthNode
);
296 State inapplicableState
= State
.NewInstance("inapplicableState", "inapplicableState", null);
297 State applicableState
= State
.NewInstance("only applicable state", "only applicable state", null);
298 leaveLengthNode
.addInapplicableState(inapplicableState
);
299 leaveLengthNode
.addApplicableState(applicableState
);
300 cdmBases
.add(featureTree
);
303 WorkingSet workingSet
= WorkingSet
.NewInstance();
304 workingSet
.addDescription(taxonDescription
);
305 workingSet
.setLabel("My Workingset");
306 workingSet
.getDescriptiveSystem();
310 Taxon coveredTaxon
= Taxon
.NewInstance(name
, null);
311 PolytomousKey key
= PolytomousKey
.NewTitledInstance("My Polykey");
312 handleIdentificationKey(key
, taxon
, coveredTaxon
);
313 key
.setStartNumber(10);
316 PolytomousKeyNode firstChildNode
= PolytomousKeyNode
.NewInstance("Green", "What is the leave length?", coveredTaxon
, leaveLength
);
317 key
.getRoot().addChild(firstChildNode
);
318 PolytomousKeyNode secondChildNode
= PolytomousKeyNode
.NewInstance("234");
319 firstChildNode
.addChild(secondChildNode
);
321 PolytomousKey subkey
= PolytomousKey
.NewTitledInstance("Sub-key");
322 firstChildNode
.setSubkey(subkey
);
324 PolytomousKeyNode subKeyNode
= PolytomousKeyNode
.NewInstance("sub key couplet");
325 subkey
.getRoot().addChild(subKeyNode
);
326 secondChildNode
.setOtherNode(subKeyNode
);
328 secondChildNode
.putModifyingText(Language
.GERMAN(), "manchmal");
331 cdmBases
.add(subkey
);
333 MediaKey mediaKey
= MediaKey
.NewInstance();
334 mediaKey
.addKeyRepresentation(Representation
.NewInstance("Media Key Representation", "media key", null, Language
.ENGLISH()));
335 handleIdentificationKey(mediaKey
, taxon
, coveredTaxon
);
337 MultiAccessKey multiAccessKey
= MultiAccessKey
.NewInstance();
338 handleIdentificationKey(multiAccessKey
, taxon
, coveredTaxon
);
340 cdmBases
.add(mediaKey
);
341 cdmBases
.add(multiAccessKey
);
347 private void handleIdentificationKey(IIdentificationKey key
, Taxon taxon
, Taxon coveredTaxon
){
348 key
.addCoveredTaxon(coveredTaxon
);
349 key
.addGeographicalScope(Country
.GERMANY());
350 key
.addScopeRestriction(DefinedTerm
.SEX_FEMALE());
351 key
.addTaxonomicScope(taxon
);
355 private void createMedia(List
<CdmBase
> cdmBases
){
356 AudioFile audioFile
= AudioFile
.NewInstance(URI
.create("http://a.b.de"), 22);
357 ImageFile imageFile
= ImageFile
.NewInstance(URI
.create("http://b.c.de"), 44, 467, 55);
358 MovieFile movieFile
= MovieFile
.NewInstance(URI
.create("http://b.c.de"), 67);
359 MediaRepresentation mediaRepresentation
= MediaRepresentation
.NewInstance("mime", "media");
361 mediaRepresentation
.addRepresentationPart(movieFile
);
362 mediaRepresentation
.addRepresentationPart(imageFile
);
363 mediaRepresentation
.addRepresentationPart(audioFile
);
364 Media media
= Media
.NewInstance();
365 media
.addRepresentation(mediaRepresentation
);
367 media
.putTitle(Language
.ENGLISH(), "Media title");
368 media
.setMediaCreated(DateTime
.now());
369 media
.putDescription(Language
.ENGLISH(), "Media description");
371 Person artist
= Person
.NewTitledInstance("artist");
372 media
.setArtist(artist
);
374 cdmBases
.add(artist
);
378 private void createMolecular(List
<CdmBase
> cdmBases
) {
379 DnaSample dnaSample
= DnaSample
.NewInstance();
382 Amplification amplification
= Amplification
.NewInstance(dnaSample
);
383 DefinedTerm dnaMarker
= DefinedTerm
.NewDnaMarkerInstance("My dna marker", "dna marker", null);
384 amplification
.setDnaMarker(dnaMarker
);
385 amplification
.setSuccessful(true);
386 amplification
.setSuccessText("Very successful");
388 Primer forwardPrimer
= Primer
.NewInstance("forward primer");
389 forwardPrimer
.setPublishedIn(getReference());
390 forwardPrimer
.setSequence(Sequence
.NewInstance("my sequence"));
392 Primer reversePrimer
= Primer
.NewInstance("reverse primer");
394 amplification
.setForwardPrimer(forwardPrimer
);
395 amplification
.setReversePrimer(reversePrimer
);
397 DefinedTerm cloningMethod
= DefinedTerm
.NewInstance(TermType
.MaterialOrMethod
, "cloning method", "cloning method", null);
398 Cloning cloning
= Cloning
.NewInstance(cloningMethod
, "My cloning method", "my strain", forwardPrimer
, reversePrimer
);
399 amplification
.setCloning(cloning
);
401 DefinedTerm purificationMethod
= DefinedTerm
.NewInstance(TermType
.MaterialOrMethod
, "purification method", "purification method", null);
402 MaterialOrMethodEvent purification
= MaterialOrMethodEvent
.NewInstance(purificationMethod
, "purification method");
403 amplification
.setPurification(purification
);
406 amplification
.setLadderUsed("ladder");
407 amplification
.setElectrophoresisVoltage(5.5);
408 amplification
.setGelConcentration(2.4);
409 amplification
.setGelRunningTime(3.6);
410 Media gelPhoto
= Media
.NewInstance();
411 amplification
.setGelPhoto(gelPhoto
);
414 SingleRead singleRead
= SingleRead
.NewInstance();
415 amplification
.addSingleRead(singleRead
);
416 MaterialOrMethodEvent readEvent
= MaterialOrMethodEvent
.NewInstance(null, "read method");
418 singleRead
.setMaterialOrMethod(readEvent
);
419 Media pherogram
= Media
.NewInstance();
420 singleRead
.setPherogram(pherogram
);
422 singleRead
.setPrimer(forwardPrimer
);
423 singleRead
.setSequence(SequenceString
.NewInstance("ABTC"));
424 singleRead
.setDirection(SequenceDirection
.Forward
);
427 Sequence sequence
= Sequence
.NewInstance("ADDT");
428 dnaSample
.addSequence(sequence
);
429 sequence
.addSingleRead(singleRead
);
430 Media contigFile
= Media
.NewInstance();
431 sequence
.setContigFile(contigFile
);
432 sequence
.setIsBarcode(true);
433 sequence
.setDnaMarker(dnaMarker
);
434 sequence
.setBarcodeSequencePart(SequenceString
.NewInstance("ADTA"));
435 sequence
.setGeneticAccessionNumber("GenNO12345");
436 sequence
.setBoldProcessId("boldId");
437 sequence
.setHaplotype("haplotype");
438 Reference
<?
> sequenceCitation
= getReference();
439 sequence
.addCitation(sequenceCitation
);
443 PhylogeneticTree phyloTree
= PhylogeneticTree
.NewInstance();
444 phyloTree
.addUsedSequences(sequence
);
446 cdmBases
.add(dnaSample
);
447 cdmBases
.add(phyloTree
);
451 private void createTaxon(List
<CdmBase
> cdmBases
) {
452 Reference
<?
> sec
= getReference();
453 TaxonNameBase
<?
,?
> name
= BotanicalName
.NewInstance(Rank
.GENUS());
454 Taxon taxon
= Taxon
.NewInstance(name
, sec
);
456 TaxonNameBase
<?
,?
> synName
= BotanicalName
.NewInstance(Rank
.GENUS());
457 Synonym syn
= Synonym
.NewInstance(synName
, sec
);
458 taxon
.addSynonym(syn
, SynonymRelationshipType
.HETEROTYPIC_SYNONYM_OF(),
459 getReference(), "123");
460 taxon
.setDoubtful(true);
462 Taxon concept
= Taxon
.NewInstance(name
, getReference());
463 taxon
.addTaxonRelation(concept
, TaxonRelationshipType
.CONGRUENT_TO(),
465 taxon
.setTaxonStatusUnknown(true);
466 taxon
.setUnplaced(true);
467 taxon
.setExcluded(true);
470 Classification classification
= Classification
.NewInstance("My classification", sec
);
471 TaxonNode node
= classification
.addChildTaxon(taxon
, sec
,"22");
473 Taxon childTaxon
= Taxon
.NewInstance(synName
, sec
);
474 node
.addChildTaxon(childTaxon
, sec
, "44");
477 cdmBases
.add(concept
);
478 cdmBases
.add(childTaxon
);
479 cdmBases
.add(classification
);
487 private void createReference(List
<CdmBase
> cdmBases
) {
488 Reference
<?
> reference
= ReferenceFactory
.newArticle();
489 Person author
= Person
.NewTitledInstance("Author team");
490 reference
.setAuthorTeam(author
);
491 reference
.setTitle("ref title");
492 reference
.setAbbrevTitle("abbrev title");
493 reference
.setDatePublished(TimePeriodParser
.parseString("1999"));
494 reference
.setEdition("edition");
495 reference
.setEditor("editor");
496 Institution institution
= Institution
.NewInstance();
497 reference
.setInstitution(institution
);
498 reference
.setIsbn("1234556");
499 reference
.setIssn("issn");
500 reference
.setDoi(DOI
.fromRegistrantCodeAndSuffix("14356", "suffix"));
501 reference
.setReferenceAbstract("referenceAbstract");
502 reference
.setOrganization("organization");
503 reference
.setPages("123-134");
504 reference
.setPlacePublished("place Published");
505 reference
.setPublisher("publisher");
506 Institution school
= Institution
.NewInstance();
507 reference
.setSchool(school
);
508 // reference.setSeriesPart("series");
509 reference
.setSeriesPart("seriesPart");
510 reference
.setVolume("vol. 3");
511 reference
.setUri(URI
.create("http://rer.abc.de"));
513 Reference
<?
> journal
= ReferenceFactory
.newJournal();
514 reference
.setInJournal(journal
);
516 cdmBases
.add(reference
);
523 private void createOccurrence(List
<CdmBase
> cdmBases
) {
525 Collection collection
= Collection
.NewInstance();
526 Collection subCollection
= Collection
.NewInstance();
527 subCollection
.setSuperCollection(collection
);
529 collection
.setCode("coll code");
530 collection
.setCodeStandard("codeStandard");
531 collection
.setName("coll name");
532 collection
.setTownOrLocation("townOrLocation");
533 Institution institution
= Institution
.NewInstance();
534 collection
.setInstitute(institution
);
537 FieldUnit fieldUnit
= FieldUnit
.NewInstance();
538 fieldUnit
.setFieldNumber("fieldNumber");
539 fieldUnit
.setFieldNotes("fieldNotes");
540 Person primaryCollector
= Person
.NewInstance();
541 fieldUnit
.setPrimaryCollector(primaryCollector
);
543 GatheringEvent gatheringEvent
= GatheringEvent
.NewInstance();
544 fieldUnit
.setGatheringEvent(gatheringEvent
);
545 gatheringEvent
.putLocality(Language
.ENGLISH(), "locality");
546 gatheringEvent
.setExactLocation(Point
.NewInstance(22.4, -34.2,
547 ReferenceSystem
.WGS84(), 33));
548 gatheringEvent
.setCountry(Country
.GERMANY());
549 gatheringEvent
.addCollectingArea(NamedArea
.EUROPE());
550 gatheringEvent
.setCollectingMethod("collectingMethod");
551 gatheringEvent
.setAbsoluteElevation(10);
552 gatheringEvent
.setAbsoluteElevationMax(100);
553 gatheringEvent
.setAbsoluteElevationText("elevation text");
555 gatheringEvent
.setDistanceToGround(10.4);
556 gatheringEvent
.setDistanceToGroundMax(100.3);
557 gatheringEvent
.setDistanceToGroundText("distance to ground text");
559 gatheringEvent
.setDistanceToWaterSurface(10.4);
560 gatheringEvent
.setDistanceToWaterSurfaceMax(100.3);
561 gatheringEvent
.setDistanceToWaterSurfaceText("distance to water text");
565 MediaSpecimen mediaSpecimen
= MediaSpecimen
.NewInstance(SpecimenOrObservationType
.StillImage
);
566 mediaSpecimen
.setCollection(collection
);
567 mediaSpecimen
.setCatalogNumber("catalogNumber");
568 mediaSpecimen
.setAccessionNumber("accessionNumber");
569 // mediaSpecimen.setCollectorsNumber("collectorsNumber");
570 mediaSpecimen
.setBarcode("barcode");
571 BotanicalName storedUnder
= BotanicalName
.NewInstance(Rank
.SPECIES());
572 storedUnder
.setTitleCache("Stored under", true);
573 mediaSpecimen
.setStoredUnder(storedUnder
);
574 mediaSpecimen
.setExsiccatum("exsiccatum");
575 PreservationMethod preservation
= PreservationMethod
.NewInstance(null, "My preservation");
576 preservation
.setTemperature(22.4);
577 mediaSpecimen
.setPreservation(preservation
);
580 DerivationEvent event
= DerivationEvent
.NewInstance(DerivationEventType
.ACCESSIONING());
581 event
.addOriginal(fieldUnit
);
582 event
.addDerivative(mediaSpecimen
);
585 //SpecOrObservationBase
586 fieldUnit
.setSex(DefinedTerm
.SEX_FEMALE());
587 fieldUnit
.setLifeStage(DefinedTerm
.NewStageInstance("Live stage", "stage", null));
588 fieldUnit
.setKindOfUnit(DefinedTerm
.NewKindOfUnitInstance("Kind of unit", "Kind of unit", null));
589 fieldUnit
.setIndividualCount(3);
590 fieldUnit
.putDefinition(Language
.ENGLISH(), "definition");
591 fieldUnit
.setPublish(true);
594 DeterminationEvent determinationEvent
= DeterminationEvent
.NewInstance(getTaxon(), mediaSpecimen
);
595 determinationEvent
.setModifier(DefinedTerm
.DETERMINATION_MODIFIER_AFFINIS());
596 determinationEvent
.setPreferredFlag(true);
597 determinationEvent
.addReference(getReference());
599 cdmBases
.add(fieldUnit
);
600 cdmBases
.add(mediaSpecimen
);
601 cdmBases
.add(collection
);
605 private void createTaxonName(List
<CdmBase
> cdmBases
) {
606 BacterialName bacName
= BacterialName
.NewInstance(Rank
.GENUS());
607 bacName
.setSubGenusAuthorship("sub Genus author");
608 bacName
.setNameApprobation("nameApprobation");
610 CultivarPlantName botName
= CultivarPlantName
.NewInstance(Rank
.SUBSPECIES());
611 botName
.setAnamorphic(true);
612 botName
.setCultivarName("cultivarName");
613 botName
.setGenusOrUninomial("Genus");
614 botName
.setInfraGenericEpithet("InfraGeneric");
615 botName
.setSpecificEpithet("specificEpithet");
616 botName
.setInfraSpecificEpithet("infraSpecificEpithet");
617 Person combinationAuthorTeam
= Person
.NewInstance();
618 botName
.setCombinationAuthorTeam(combinationAuthorTeam
);
619 Person exCombinationAuthorTeam
= Person
.NewInstance();
620 botName
.setExCombinationAuthorTeam(exCombinationAuthorTeam
);
621 Person basionymAuthorTeam
= Person
.NewInstance();
622 botName
.setBasionymAuthorTeam(basionymAuthorTeam
);
623 Person exBasionymAuthorTeam
= Person
.NewInstance();
624 botName
.setExBasionymAuthorTeam(exBasionymAuthorTeam
);
626 ZoologicalName zooName
= ZoologicalName
.NewInstance(Rank
.GENUS());
627 zooName
.setBreed("breed");
628 zooName
.setPublicationYear(1922);
629 zooName
.setOriginalPublicationYear(1987);
630 zooName
.setAppendedPhrase("appended phrase");
631 zooName
.addDescription(TaxonNameDescription
.NewInstance());
632 zooName
.setNomenclaturalMicroReference("p. 123");
633 zooName
.setNomenclaturalReference(getReference());
634 zooName
.addRelationshipFromName(botName
, NameRelationshipType
.LATER_HOMONYM() , "ruleConsidered");
635 zooName
.addStatus(NomenclaturalStatus
.NewInstance(NomenclaturalStatusType
.CONSERVED(), getReference(), "p. 222"));
638 ZoologicalName speciesZooName
= ZoologicalName
.NewInstance(Rank
.SPECIES());
639 zooName
.addNameTypeDesignation(speciesZooName
, getReference(), "111", "original name",
640 NameTypeDesignationStatus
.AUTOMATIC(), true, true, true, true);
641 speciesZooName
.addSpecimenTypeDesignation(getSpecimen(), SpecimenTypeDesignationStatus
.HOLOTYPE(),
642 getReference(), "p,22", "original name", false, true);
645 ViralName viralName
= ViralName
.NewInstance(Rank
.GENUS());
646 viralName
.setAcronym("acronym");
648 cdmBases
.add(bacName
);
649 cdmBases
.add(botName
);
650 cdmBases
.add(viralName
);
651 cdmBases
.add(zooName
);
654 private void handleAnnotatableEntity(AnnotatableEntity entity
){
655 Annotation annotation
= Annotation
.NewDefaultLanguageInstance("annotation");
656 entity
.addAnnotation(annotation
);
657 Marker marker
= Marker
.NewInstance(MarkerType
.COMPLETE(), true);
658 entity
.addMarker(marker
);
661 private void handleIdentifiableEntity(IdentifiableEntity
<?
> identifiableEntity
){
662 handleAnnotatableEntity(identifiableEntity
);
665 Person creditor
= Person
.NewTitledInstance("Creditor");
666 Credit credit
= Credit
.NewInstance(creditor
, "credit");
667 identifiableEntity
.addCredit(credit
);
670 Extension
.NewInstance(identifiableEntity
, "extension", ExtensionType
.INFORMAL_CATEGORY());
673 Rights rights
= Rights
.NewInstance("right", Language
.ENGLISH());
674 rights
.setUri(URI
.create("http://rights.abc.de"));
675 rights
.setAbbreviatedText("abbrev");
676 rights
.setType(RightsType
.COPYRIGHT());
677 Person owner
= Person
.NewTitledInstance("Owner");
678 rights
.setAgent(owner
);
681 IdentifiableSource source
= identifiableEntity
.addSource(OriginalSourceType
.Import
, "id", "idNamespace",
682 getReference(), "123");
683 source
.setOriginalNameString("original name");
687 LSID lsid
= new LSID("urn:lsid:a.b.de:namespace:1234");
688 identifiableEntity
.setLsid(lsid
);
689 } catch (MalformedLSIDException e
) {
697 private Reference
<?
> getReference() {
698 Reference
<?
> result
= ReferenceFactory
.newGeneric();
699 result
.setTitle("some generic reference");
704 private DerivedUnit
getSpecimen() {
705 DerivedUnit derivedUnit
= DerivedUnit
.NewPreservedSpecimenInstance();
711 private Taxon
getTaxon() {
712 Reference
<?
> sec
= getReference();
713 TaxonNameBase
<?
,?
> name
= BotanicalName
.NewInstance(Rank
.GENUS());
714 Taxon taxon
= Taxon
.NewInstance(name
, sec
);