4 package eu
.etaxonomy
.cdm
.database
.data
;
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
.EventBase
;
27 import eu
.etaxonomy
.cdm
.model
.common
.Extension
;
28 import eu
.etaxonomy
.cdm
.model
.common
.ExtensionType
;
29 import eu
.etaxonomy
.cdm
.model
.common
.Group
;
30 import eu
.etaxonomy
.cdm
.model
.common
.IdentifiableEntity
;
31 import eu
.etaxonomy
.cdm
.model
.common
.IdentifiableSource
;
32 import eu
.etaxonomy
.cdm
.model
.common
.Identifier
;
33 import eu
.etaxonomy
.cdm
.model
.common
.IntextReference
;
34 import eu
.etaxonomy
.cdm
.model
.common
.LSID
;
35 import eu
.etaxonomy
.cdm
.model
.common
.LSIDAuthority
;
36 import eu
.etaxonomy
.cdm
.model
.common
.Language
;
37 import eu
.etaxonomy
.cdm
.model
.common
.LanguageString
;
38 import eu
.etaxonomy
.cdm
.model
.common
.Marker
;
39 import eu
.etaxonomy
.cdm
.model
.common
.MarkerType
;
40 import eu
.etaxonomy
.cdm
.model
.common
.OriginalSourceType
;
41 import eu
.etaxonomy
.cdm
.model
.common
.Representation
;
42 import eu
.etaxonomy
.cdm
.model
.common
.TermType
;
43 import eu
.etaxonomy
.cdm
.model
.common
.TermVocabulary
;
44 import eu
.etaxonomy
.cdm
.model
.common
.User
;
45 import eu
.etaxonomy
.cdm
.model
.description
.CategoricalData
;
46 import eu
.etaxonomy
.cdm
.model
.description
.CommonTaxonName
;
47 import eu
.etaxonomy
.cdm
.model
.description
.DescriptionElementSource
;
48 import eu
.etaxonomy
.cdm
.model
.description
.Distribution
;
49 import eu
.etaxonomy
.cdm
.model
.description
.Feature
;
50 import eu
.etaxonomy
.cdm
.model
.description
.FeatureNode
;
51 import eu
.etaxonomy
.cdm
.model
.description
.FeatureTree
;
52 import eu
.etaxonomy
.cdm
.model
.description
.IIdentificationKey
;
53 import eu
.etaxonomy
.cdm
.model
.description
.IndividualsAssociation
;
54 import eu
.etaxonomy
.cdm
.model
.description
.MeasurementUnit
;
55 import eu
.etaxonomy
.cdm
.model
.description
.MediaKey
;
56 import eu
.etaxonomy
.cdm
.model
.description
.MultiAccessKey
;
57 import eu
.etaxonomy
.cdm
.model
.description
.PolytomousKey
;
58 import eu
.etaxonomy
.cdm
.model
.description
.PolytomousKeyNode
;
59 import eu
.etaxonomy
.cdm
.model
.description
.PresenceAbsenceTerm
;
60 import eu
.etaxonomy
.cdm
.model
.description
.QuantitativeData
;
61 import eu
.etaxonomy
.cdm
.model
.description
.SpecimenDescription
;
62 import eu
.etaxonomy
.cdm
.model
.description
.State
;
63 import eu
.etaxonomy
.cdm
.model
.description
.StateData
;
64 import eu
.etaxonomy
.cdm
.model
.description
.StatisticalMeasure
;
65 import eu
.etaxonomy
.cdm
.model
.description
.StatisticalMeasurementValue
;
66 import eu
.etaxonomy
.cdm
.model
.description
.TaxonDescription
;
67 import eu
.etaxonomy
.cdm
.model
.description
.TaxonInteraction
;
68 import eu
.etaxonomy
.cdm
.model
.description
.TaxonNameDescription
;
69 import eu
.etaxonomy
.cdm
.model
.description
.TextData
;
70 import eu
.etaxonomy
.cdm
.model
.description
.TextFormat
;
71 import eu
.etaxonomy
.cdm
.model
.description
.WorkingSet
;
72 import eu
.etaxonomy
.cdm
.model
.location
.Country
;
73 import eu
.etaxonomy
.cdm
.model
.location
.NamedArea
;
74 import eu
.etaxonomy
.cdm
.model
.location
.Point
;
75 import eu
.etaxonomy
.cdm
.model
.location
.ReferenceSystem
;
76 import eu
.etaxonomy
.cdm
.model
.media
.AudioFile
;
77 import eu
.etaxonomy
.cdm
.model
.media
.IdentifiableMediaEntity
;
78 import eu
.etaxonomy
.cdm
.model
.media
.ImageFile
;
79 import eu
.etaxonomy
.cdm
.model
.media
.Media
;
80 import eu
.etaxonomy
.cdm
.model
.media
.MediaRepresentation
;
81 import eu
.etaxonomy
.cdm
.model
.media
.MovieFile
;
82 import eu
.etaxonomy
.cdm
.model
.media
.Rights
;
83 import eu
.etaxonomy
.cdm
.model
.media
.RightsType
;
84 import eu
.etaxonomy
.cdm
.model
.molecular
.Amplification
;
85 import eu
.etaxonomy
.cdm
.model
.molecular
.AmplificationResult
;
86 import eu
.etaxonomy
.cdm
.model
.molecular
.Cloning
;
87 import eu
.etaxonomy
.cdm
.model
.molecular
.DnaQuality
;
88 import eu
.etaxonomy
.cdm
.model
.molecular
.DnaSample
;
89 import eu
.etaxonomy
.cdm
.model
.molecular
.PhylogeneticTree
;
90 import eu
.etaxonomy
.cdm
.model
.molecular
.Primer
;
91 import eu
.etaxonomy
.cdm
.model
.molecular
.Sequence
;
92 import eu
.etaxonomy
.cdm
.model
.molecular
.SequenceDirection
;
93 import eu
.etaxonomy
.cdm
.model
.molecular
.SequenceString
;
94 import eu
.etaxonomy
.cdm
.model
.molecular
.SingleRead
;
95 import eu
.etaxonomy
.cdm
.model
.molecular
.SingleReadAlignment
;
96 import eu
.etaxonomy
.cdm
.model
.molecular
.SingleReadAlignment
.Shift
;
97 import eu
.etaxonomy
.cdm
.model
.name
.BacterialName
;
98 import eu
.etaxonomy
.cdm
.model
.name
.BotanicalName
;
99 import eu
.etaxonomy
.cdm
.model
.name
.CultivarPlantName
;
100 import eu
.etaxonomy
.cdm
.model
.name
.HybridRelationship
;
101 import eu
.etaxonomy
.cdm
.model
.name
.HybridRelationshipType
;
102 import eu
.etaxonomy
.cdm
.model
.name
.NameRelationship
;
103 import eu
.etaxonomy
.cdm
.model
.name
.NameRelationshipType
;
104 import eu
.etaxonomy
.cdm
.model
.name
.NameTypeDesignation
;
105 import eu
.etaxonomy
.cdm
.model
.name
.NameTypeDesignationStatus
;
106 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalStatus
;
107 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalStatusType
;
108 import eu
.etaxonomy
.cdm
.model
.name
.Rank
;
109 import eu
.etaxonomy
.cdm
.model
.name
.SpecimenTypeDesignation
;
110 import eu
.etaxonomy
.cdm
.model
.name
.SpecimenTypeDesignationStatus
;
111 import eu
.etaxonomy
.cdm
.model
.name
.TaxonNameBase
;
112 import eu
.etaxonomy
.cdm
.model
.name
.TaxonNameFactory
;
113 import eu
.etaxonomy
.cdm
.model
.name
.ViralName
;
114 import eu
.etaxonomy
.cdm
.model
.name
.ZoologicalName
;
115 import eu
.etaxonomy
.cdm
.model
.occurrence
.Collection
;
116 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivationEvent
;
117 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivationEventType
;
118 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivedUnit
;
119 import eu
.etaxonomy
.cdm
.model
.occurrence
.DeterminationEvent
;
120 import eu
.etaxonomy
.cdm
.model
.occurrence
.FieldUnit
;
121 import eu
.etaxonomy
.cdm
.model
.occurrence
.GatheringEvent
;
122 import eu
.etaxonomy
.cdm
.model
.occurrence
.MaterialOrMethodEvent
;
123 import eu
.etaxonomy
.cdm
.model
.occurrence
.MediaSpecimen
;
124 import eu
.etaxonomy
.cdm
.model
.occurrence
.PreservationMethod
;
125 import eu
.etaxonomy
.cdm
.model
.occurrence
.SpecimenOrObservationBase
;
126 import eu
.etaxonomy
.cdm
.model
.occurrence
.SpecimenOrObservationType
;
127 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
128 import eu
.etaxonomy
.cdm
.model
.reference
.ReferenceFactory
;
129 import eu
.etaxonomy
.cdm
.model
.taxon
.Classification
;
130 import eu
.etaxonomy
.cdm
.model
.taxon
.Synonym
;
131 import eu
.etaxonomy
.cdm
.model
.taxon
.SynonymType
;
132 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
133 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonNode
;
134 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonRelationship
;
135 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonRelationshipType
;
136 import eu
.etaxonomy
.cdm
.strategy
.parser
.TimePeriodParser
;
139 * This class tries to create a database that has
140 * at least one record in each table.
141 * It is meant to test update scripts as well as imports
144 * ATTENTION: As the content of the created database may change
145 * over time due to model changes and other requirements test using
146 * this class should be written in a way that they do rather
147 * depend on general parameter than concrete data values.
150 * @created 3013-12-02
154 public class FullCoverageDataGenerator
{
157 public void fillWithData(Session session
){
158 List
<CdmBase
> cdmBases
= new ArrayList
<CdmBase
>();
160 createAgents(cdmBases
);
162 createDescriptions(cdmBases
);
164 createMedia(cdmBases
);
166 createMolecular(cdmBases
);
168 createTaxonName(cdmBases
);
170 createOccurrence(cdmBases
);
172 createReference(cdmBases
);
174 createTaxon(cdmBases
);
176 createSupplemental(cdmBases
);
178 for (CdmBase cdmBase
: cdmBases
){
179 session
.save(cdmBase
);
184 private void createSupplemental(List
<CdmBase
> cdmBases
) {
186 Reference ref
= ReferenceFactory
.newBook();
188 Annotation annotation
= Annotation
.NewDefaultLanguageInstance("annotation");
189 ref
.addAnnotation(annotation
);
190 handleAnnotatableEntity(annotation
);
192 Credit credit
= Credit
.NewInstance(Person
.NewInstance(), "refCredit", "rc", Language
.DEFAULT());
193 ref
.addCredit(credit
);
194 handleAnnotatableEntity(credit
);
196 Rights rights
= Rights
.NewInstance("My rights", Language
.GERMAN());
197 ref
.addRights(rights
);
198 handleAnnotatableEntity(rights
);
202 LSIDAuthority lsidAuthority
= new LSIDAuthority("My authority");
203 lsidAuthority
.addNamespace("lsidNamespace", TaxonNameBase
.class);
204 cdmBases
.add(lsidAuthority
);
205 } catch (MalformedLSIDException e
) {
209 User user
= User
.NewInstance("myUser", "12345");
210 Group group
= Group
.NewInstance("MyGroup");
211 group
.addMember(user
);
225 private void createAgents(List
<CdmBase
> cdmBases
) {
227 Person person
= Person
.NewTitledInstance("Person Title");
228 person
.setFirstname("first name");
229 person
.setLastname("last name");
230 person
.setLifespan(TimePeriodParser
.parseString("1905-1995"));
231 person
.setPrefix("prefix");
232 person
.setSuffix("suffix");
234 handleIdentifiableEntity(person
);
237 Contact contact
= Contact
.NewInstance();
238 person
.setContact(contact
);
239 Point locality
= Point
.NewInstance(45.12, -38.69, ReferenceSystem
.WGS84(), 22);
240 contact
.addEmailAddress("a@b.de");
241 contact
.addFaxNumber("f:010-123456");
242 contact
.addPhoneNumber("p:090-987654");
243 contact
.addUrl(URI
.create("http://www.abc.de"));
246 Address address
= Address
.NewInstance(Country
.GERMANY(), "locality", "pobox", "12345", "region", "street", locality
);
247 contact
.addAddress(address
);
250 Team team
= Team
.NewTitledInstance("Team title", "Team abbrev title");
251 team
.addTeamMember(person
);
252 handleIdentifiableEntity(team
);
256 Institution institution
= Institution
.NewInstance();
257 institution
.setCode("institution code");
258 institution
.setName("institution name");
259 handleIdentifiableEntity(institution
);
263 // voc = "29ad808b-3126-4274-be81-4561e7afc76f"
264 DefinedTerm instType
= DefinedTerm
.NewInstitutionTypeInstance("Description forthis instition type", "institution type", "inst. t.");
265 cdmBases
.add(instType
);
266 institution
.addType(instType
);
267 person
.addInstitutionalMembership(institution
, TimePeriodParser
.parseString("1955-1956"), "department", "role");
269 Institution subInstitution
= Institution
.NewInstance();
270 subInstitution
.setCode("sub institution code");
271 subInstitution
.setName("sub institution name");
272 subInstitution
.setIsPartOf(institution
);
274 cdmBases
.add(person
);
276 cdmBases
.add(institution
);
280 private void createDescriptions(List
<CdmBase
> cdmBases
) {
282 TermVocabulary
<?
> voc
= TermVocabulary
.NewInstance(TermType
.AnnotationType
, "my termVoc desc",
283 "myTerm voc", "mtv", URI
.create("http://www.abc.de"));
284 handleIdentifiableEntity(voc
);
287 Representation rep
= voc
.getRepresentations().iterator().next();
288 handleAnnotatableEntity(rep
);
289 // Representation engRep = Language.ENGLISH().getRepresentations().iterator().next();
290 // handleAnnotatableEntity(engRep);
291 // cdmBases.add(engRep); //needed?
294 State state
= State
.NewInstance("Test state", "state", "st.");
295 state
.addMedia(Media
.NewInstance());
297 CategoricalData categoricalData
= CategoricalData
.NewInstance(state
, Feature
.CONSERVATION());
298 StateData stateData
= categoricalData
.getStateData().get(0);
299 stateData
.addModifier(DefinedTerm
.SEX_FEMALE());
300 handleAnnotatableEntity(categoricalData
);
303 State nextState
= State
.NewInstance();
304 cdmBases
.add(nextState
);
305 StateData stateData2
= StateData
.NewInstance(nextState
);
306 stateData2
.putModifyingText(Language
.ENGLISH(), "State2 modifying text");
307 categoricalData
.addStateData(stateData2
);
308 categoricalData
.setOrderRelevant(true);
311 Feature leaveLength
= Feature
.NewInstance("Leave length description", "leave length", "l.l.");
312 cdmBases
.add(leaveLength
);
313 leaveLength
.setSupportsQuantitativeData(true);
314 QuantitativeData quantitativeData
= QuantitativeData
.NewInstance(leaveLength
);
315 MeasurementUnit measurementUnit
= MeasurementUnit
.NewInstance("Measurement Unit", "munit", null);
316 cdmBases
.add(measurementUnit
);
317 quantitativeData
.setUnit(measurementUnit
);
318 StatisticalMeasurementValue statisticalMeasurementValue
= quantitativeData
.setAverage((float)22.9 , null);
319 handleAnnotatableEntity(quantitativeData
);
320 handleIdentifiableEntity(measurementUnit
);
321 DefinedTerm valueModifier
= DefinedTerm
.NewModifierInstance("about", "about", null);
322 statisticalMeasurementValue
.addModifier(valueModifier
);
323 cdmBases
.add(valueModifier
);
326 TermVocabulary
<DefinedTerm
> recommendedModifierEnumeration
= TermVocabulary
.NewInstance(TermType
.Modifier
, DefinedTerm
.class);
327 leaveLength
.addRecommendedModifierEnumeration(recommendedModifierEnumeration
);
328 cdmBases
.add(recommendedModifierEnumeration
);
329 TermVocabulary
<State
> supportedCategoricalEnumeration
= TermVocabulary
.NewInstance(TermType
.State
, State
.class);
330 leaveLength
.addSupportedCategoricalEnumeration(supportedCategoricalEnumeration
);
331 cdmBases
.add(supportedCategoricalEnumeration
);
332 leaveLength
.addRecommendedMeasurementUnit(measurementUnit
);
333 leaveLength
.addRecommendedStatisticalMeasure(StatisticalMeasure
.AVERAGE());
335 CommonTaxonName commonTaxonName
= CommonTaxonName
.NewInstance("common name", Language
.ENGLISH(), Country
.UNITEDSTATESOFAMERICA());
336 handleAnnotatableEntity(commonTaxonName
);
338 TextData textData
= TextData
.NewInstance(Feature
.DIAGNOSIS());
339 Language eng
= Language
.ENGLISH();
340 textData
.putText(eng
, "My text data");
341 LanguageString languageString
= textData
.getLanguageText(eng
);
343 Taxon referencedTaxon
= getTaxon();
344 cdmBases
.add(referencedTaxon
);
345 languageString
.addIntextReference(IntextReference
.NewTaxonInstance(referencedTaxon
, languageString
, 2, 5));
346 textData
.putModifyingText(eng
, "nice diagnosis");
347 handleAnnotatableEntity(textData
);
348 handleAnnotatableEntity(languageString
);
350 TextFormat format
= TextFormat
.NewInstance("format", "format", null);
351 textData
.setFormat(format
);
352 cdmBases
.add(format
);
353 handleAnnotatableEntity(format
);
355 DerivedUnit specimen
= DerivedUnit
.NewInstance(SpecimenOrObservationType
.PreservedSpecimen
);
356 IndividualsAssociation indAssoc
= IndividualsAssociation
.NewInstance(specimen
);
357 indAssoc
.putDescription(Language
.ENGLISH(), "description for individuals association");
358 handleAnnotatableEntity(indAssoc
);
361 TaxonInteraction taxonInteraction
= TaxonInteraction
.NewInstance(Feature
.HOSTPLANT());
362 taxonInteraction
.putDescription(Language
.ENGLISH(), "interaction description");
363 handleAnnotatableEntity(taxonInteraction
);
365 NamedArea inCountryArea
= NamedArea
.NewInstance("My area in a country", "my area", "ma");
366 inCountryArea
.addCountry(Country
.TURKEYREPUBLICOF());
367 cdmBases
.add(inCountryArea
);
368 Distribution distribution
= Distribution
.NewInstance(inCountryArea
, PresenceAbsenceTerm
.CULTIVATED());
369 handleAnnotatableEntity(distribution
);
371 Taxon taxon
= getTaxon();
372 TaxonDescription taxonDescription
= TaxonDescription
.NewInstance(taxon
);
373 taxonDescription
.addElements(categoricalData
, quantitativeData
,
374 textData
, commonTaxonName
, taxonInteraction
, indAssoc
, distribution
);
376 DerivedUnit describedSpecimenOrObservation
= DerivedUnit
.NewInstance(SpecimenOrObservationType
.DerivedUnit
);
377 taxonDescription
.setDescribedSpecimenOrObservation(describedSpecimenOrObservation
);
379 taxonDescription
.addScope(DefinedTerm
.SEX_FEMALE());
380 taxonDescription
.addGeoScope(Country
.GERMANY());
381 handleIdentifiableEntity(taxonDescription
);
385 //DescriptionElmenetBase + source
386 textData
.addMedia(Media
.NewInstance());
387 textData
.addModifier(DefinedTerm
.SEX_HERMAPHRODITE());
388 textData
.putModifyingText(Language
.ENGLISH(), "no modification");
389 textData
.setTimeperiod(TimePeriodParser
.parseString("1970-1980"));
390 Reference ref
= ReferenceFactory
.newArticle();
391 DescriptionElementSource source
= textData
.addSource(OriginalSourceType
.Import
, "22", "taxon description table", ref
, "detail");
392 source
.setNameUsedInSource(TaxonNameFactory
.NewBotanicalInstance(Rank
.GENUS()));
393 handleAnnotatableEntity(source
);
395 taxonDescription
.addDescriptionSource(ref
);
398 //Specimen description
399 SpecimenOrObservationBase
<?
> describedSpecimen
= getSpecimen();
400 SpecimenDescription specDesc
= SpecimenDescription
.NewInstance(specimen
);
401 cdmBases
.add(describedSpecimen
);
402 handleAnnotatableEntity(specDesc
);
405 TaxonNameBase
<?
,?
> name
= TaxonNameFactory
.NewBotanicalInstance(Rank
.GENUS());
406 TaxonNameDescription nameDesc
= TaxonNameDescription
.NewInstance(name
);
408 handleAnnotatableEntity(nameDesc
);
412 FeatureTree featureTree
= FeatureTree
.NewInstance();
414 FeatureNode descriptionFeatureNode
= FeatureNode
.NewInstance(Feature
.DESCRIPTION());
415 FeatureNode leaveLengthNode
= FeatureNode
.NewInstance(leaveLength
);
416 featureTree
.getRootChildren().add(descriptionFeatureNode
);
417 descriptionFeatureNode
.addChild(leaveLengthNode
);
418 handleIdentifiableEntity(featureTree
);
420 State inapplicableState
= State
.NewInstance("inapplicableState", "inapplicableState", null);
421 State applicableState
= State
.NewInstance("only applicable state", "only applicable state", null);
422 cdmBases
.add(applicableState
);
423 cdmBases
.add(inapplicableState
);
424 leaveLengthNode
.addInapplicableState(inapplicableState
);
425 leaveLengthNode
.addApplicableState(applicableState
);
426 cdmBases
.add(featureTree
);
427 cdmBases
.add(leaveLengthNode
);
430 WorkingSet workingSet
= WorkingSet
.NewInstance();
431 workingSet
.addDescription(taxonDescription
);
432 workingSet
.setLabel("My Workingset");
433 workingSet
.getDescriptiveSystem();
434 handleAnnotatableEntity(workingSet
);
438 Taxon coveredTaxon
= Taxon
.NewInstance(name
, null);
439 PolytomousKey key
= PolytomousKey
.NewTitledInstance("My Polykey");
440 handleIdentificationKey(key
, taxon
, coveredTaxon
);
441 key
.setStartNumber(10);
444 PolytomousKeyNode firstChildNode
= PolytomousKeyNode
.NewInstance("Green", "What is the leave length?", coveredTaxon
, leaveLength
);
445 key
.getRoot().addChild(firstChildNode
);
446 PolytomousKeyNode secondChildNode
= PolytomousKeyNode
.NewInstance("234");
447 firstChildNode
.addChild(secondChildNode
);
449 PolytomousKey subkey
= PolytomousKey
.NewTitledInstance("Sub-key");
450 firstChildNode
.setSubkey(subkey
);
452 PolytomousKeyNode subKeyNode
= PolytomousKeyNode
.NewInstance("sub key couplet");
453 subkey
.getRoot().addChild(subKeyNode
);
454 secondChildNode
.setOtherNode(subKeyNode
);
456 secondChildNode
.putModifyingText(Language
.GERMAN(), "manchmal");
459 cdmBases
.add(subkey
);
461 MediaKey mediaKey
= MediaKey
.NewInstance();
462 mediaKey
.addKeyRepresentation(Representation
.NewInstance("Media Key Representation", "media key", null, Language
.ENGLISH()));
463 handleIdentificationKey(mediaKey
, taxon
, coveredTaxon
);
465 MultiAccessKey multiAccessKey
= MultiAccessKey
.NewInstance();
466 handleIdentificationKey(multiAccessKey
, taxon
, coveredTaxon
);
468 cdmBases
.add(mediaKey
);
469 cdmBases
.add(multiAccessKey
);
475 private void handleIdentificationKey(IIdentificationKey key
, Taxon taxon
, Taxon coveredTaxon
){
476 key
.addCoveredTaxon(coveredTaxon
);
477 key
.addGeographicalScope(Country
.GERMANY());
478 key
.addScopeRestriction(DefinedTerm
.SEX_FEMALE());
479 key
.addTaxonomicScope(taxon
);
480 if (key
instanceof IdentifiableEntity
<?
>){
481 handleIdentifiableEntity((IdentifiableEntity
<?
>)key
);
483 handleAnnotatableEntity((AnnotatableEntity
)key
);
490 private void createMedia(List
<CdmBase
> cdmBases
){
491 AudioFile audioFile
= AudioFile
.NewInstance(URI
.create("http://a.b.de"), 22);
492 ImageFile imageFile
= ImageFile
.NewInstance(URI
.create("http://b.c.de"), 44, 467, 55);
493 MovieFile movieFile
= MovieFile
.NewInstance(URI
.create("http://b.c.de"), 67);
494 MediaRepresentation mediaRepresentation
= MediaRepresentation
.NewInstance("mime", "media");
496 mediaRepresentation
.addRepresentationPart(movieFile
);
497 mediaRepresentation
.addRepresentationPart(imageFile
);
498 mediaRepresentation
.addRepresentationPart(audioFile
);
499 Media media
= Media
.NewInstance();
500 media
.addRepresentation(mediaRepresentation
);
502 media
.putTitle(Language
.ENGLISH(), "Media title");
503 media
.setMediaCreated(DateTime
.now());
504 media
.putDescription(Language
.ENGLISH(), "Media description");
505 handleIdentifiableEntity(media
);
508 Person artist
= Person
.NewTitledInstance("artist");
509 media
.setArtist(artist
);
511 cdmBases
.add(artist
);
515 private void createMolecular(List
<CdmBase
> cdmBases
) {
516 DnaSample dnaSample
= DnaSample
.NewInstance();
519 Amplification amplification
= Amplification
.NewInstance();
521 DefinedTerm dnaMarker
= DefinedTerm
.NewDnaMarkerInstance("My dna marker", "dna marker", null);
522 cdmBases
.add(dnaMarker
);
523 amplification
.setDnaMarker(dnaMarker
);
524 Institution inst
= Institution
.NewInstance();
525 amplification
.setInstitution(inst
);
526 handleEventBase(amplification
);
527 handleAnnotatableEntity(amplification
);
529 Primer forwardPrimer
= Primer
.NewInstance("forward primer");
530 forwardPrimer
.setPublishedIn(getReference());
531 forwardPrimer
.setSequence(SequenceString
.NewInstance("my sequence"));
532 handleAnnotatableEntity(forwardPrimer
);
534 Primer reversePrimer
= Primer
.NewInstance("reverse primer");
535 handleAnnotatableEntity(reversePrimer
);
537 amplification
.setForwardPrimer(forwardPrimer
);
538 amplification
.setReversePrimer(reversePrimer
);
540 DefinedTerm purificationMethod
= DefinedTerm
.NewInstance(TermType
.MaterialOrMethod
, "purification method", "purification method", null);
541 cdmBases
.add(purificationMethod
);
542 MaterialOrMethodEvent purification
= MaterialOrMethodEvent
.NewInstance(purificationMethod
, "purification method");
543 amplification
.setPurification(purification
);
544 handleAnnotatableEntity(purification
);
545 handleAnnotatableEntity(purificationMethod
);
547 amplification
.setLadderUsed("ladder");
548 amplification
.setElectrophoresisVoltage(5.5);
549 amplification
.setGelConcentration(2.4);
550 amplification
.setGelRunningTime(3.6);
552 //Amplification result
553 AmplificationResult amplificationResult
= AmplificationResult
.NewInstance(dnaSample
, amplification
);
554 amplificationResult
.setSuccessful(true);
555 amplificationResult
.setSuccessText("Very successful");
556 handleAnnotatableEntity(amplificationResult
);
558 DefinedTerm cloningMethod
= DefinedTerm
.NewInstance(TermType
.MaterialOrMethod
, "cloning method", "cloning method", null);
559 cdmBases
.add(cloningMethod
);
560 Cloning cloning
= Cloning
.NewInstance(cloningMethod
, "My cloning method", "my strain", forwardPrimer
, reversePrimer
);
561 amplificationResult
.setCloning(cloning
);
562 handleAnnotatableEntity(cloningMethod
);
563 handleAnnotatableEntity(cloning
);
565 Media gelPhoto
= Media
.NewInstance();
566 amplificationResult
.setGelPhoto(gelPhoto
);
569 SingleRead singleRead
= SingleRead
.NewInstance();
570 handleAnnotatableEntity(singleRead
);
571 amplificationResult
.addSingleRead(singleRead
);
572 MaterialOrMethodEvent readMethod
= MaterialOrMethodEvent
.NewInstance(null, "read method");
573 singleRead
.setMaterialOrMethod(readMethod
);
574 handleAnnotatableEntity(readMethod
);
576 Media pherogram
= Media
.NewInstance();
577 singleRead
.setPherogram(pherogram
);
579 singleRead
.setPrimer(forwardPrimer
);
580 singleRead
.setSequence(SequenceString
.NewInstance("ABTC"));
581 singleRead
.setDirection(SequenceDirection
.Forward
);
584 Sequence sequence
= Sequence
.NewInstance("ADDT");
585 dnaSample
.addSequence(sequence
);
587 // SequenceString alignedSequence = SequenceString.NewInstance("AGTC");
588 Shift
[] shifts
= new Shift
[]{new Shift(66,1),new Shift(103,-2)};
589 SingleReadAlignment
.NewInstance(sequence
, singleRead
, shifts
, "AGTC");
591 Media contigFile
= Media
.NewInstance();
592 sequence
.setContigFile(contigFile
);
593 sequence
.setIsBarcode(true);
594 sequence
.setDnaMarker(dnaMarker
);
595 sequence
.setBarcodeSequencePart(SequenceString
.NewInstance("ADTA"));
596 sequence
.setGeneticAccessionNumber("GenNO12345");
597 sequence
.setBoldProcessId("boldId");
598 sequence
.setHaplotype("haplotype");
599 Reference sequenceCitation
= getReference();
600 sequence
.addCitation(sequenceCitation
);
601 handleAnnotatableEntity(sequence
);
604 DnaQuality dnaQuality
= DnaQuality
.NewInstance();
605 dnaQuality
.setConcentration(2.0);
606 MeasurementUnit mu
= MeasurementUnit
.NewInstance("mg/ml", "mg/ml","mg/ml");
608 dnaQuality
.setConcentrationUnit(mu
);
609 dnaQuality
.setPurificationMethod("purification method");
610 dnaQuality
.setQualityCheckDate(DateTime
.now());
611 dnaQuality
.setQualityTerm(null); //TODO
612 dnaQuality
.setRatioOfAbsorbance260_230(22.0);
613 dnaQuality
.setRatioOfAbsorbance260_280(3.9);
614 dnaSample
.setDnaQuality(dnaQuality
);
618 PhylogeneticTree phyloTree
= PhylogeneticTree
.NewInstance();
619 phyloTree
.addUsedSequences(sequence
);
620 handleIdentifiableEntity(phyloTree
);
623 cdmBases
.add(dnaSample
);
624 cdmBases
.add(phyloTree
);
628 private void createTaxon(List
<CdmBase
> cdmBases
) {
629 Reference sec
= getReference();
630 TaxonNameBase
<?
,?
> name
= TaxonNameFactory
.NewBotanicalInstance(Rank
.GENUS());
631 Taxon taxon
= Taxon
.NewInstance(name
, sec
);
632 handleIdentifiableEntity(taxon
);
634 TaxonNameBase
<?
,?
> synName
= TaxonNameFactory
.NewBotanicalInstance(Rank
.GENUS());
635 Synonym syn
= Synonym
.NewInstance(synName
, sec
, "123");
636 taxon
.addSynonym(syn
, SynonymType
.HETEROTYPIC_SYNONYM_OF());
637 taxon
.setDoubtful(true);
638 handleIdentifiableEntity(syn
);
641 Taxon concept
= Taxon
.NewInstance(name
, getReference());
642 TaxonRelationship taxRel
= taxon
.addTaxonRelation(concept
, TaxonRelationshipType
.CONGRUENT_TO(),
644 taxon
.setTaxonStatusUnknown(true);
645 handleAnnotatableEntity(taxRel
);
649 Classification classification
= Classification
.NewInstance("My classification", sec
);
650 classification
.setMicroReference("p. 123");
651 classification
.setTimeperiod(TimePeriodParser
.parseString("1.1.2012-4.8.2013"));
652 classification
.addGeoScope(Country
.GERMANY());
653 classification
.putDescription(Language
.ENGLISH(), "An interesting classification");
656 TaxonNode node
= classification
.addChildTaxon(taxon
, sec
,"22");
657 handleIdentifiableEntity(classification
);
658 handleAnnotatableEntity(node
);
660 Taxon childTaxon
= Taxon
.NewInstance(synName
, sec
);
661 node
.addChildTaxon(childTaxon
, sec
, "44");
662 node
.setUnplaced(true);
663 node
.setExcluded(true);
666 cdmBases
.add(concept
);
667 cdmBases
.add(childTaxon
);
668 cdmBases
.add(classification
);
676 private void createReference(List
<CdmBase
> cdmBases
) {
677 Reference reference
= ReferenceFactory
.newArticle();
678 Person author
= Person
.NewTitledInstance("Author team");
679 reference
.setAuthorship(author
);
680 reference
.setTitle("ref title");
681 reference
.setAbbrevTitle("abbrev title");
682 reference
.setDatePublished(TimePeriodParser
.parseString("1999"));
683 reference
.setEdition("edition");
684 reference
.setEditor("editor");
685 Institution institution
= Institution
.NewInstance();
686 reference
.setInstitution(institution
);
687 reference
.setIsbn("1234556");
688 reference
.setIssn("issn");
689 reference
.setDoi(DOI
.fromRegistrantCodeAndSuffix("14356", "suffix"));
690 reference
.setReferenceAbstract("referenceAbstract");
691 reference
.setOrganization("organization");
692 reference
.setPages("123-134");
693 reference
.setPlacePublished("place Published");
694 reference
.setPublisher("publisher");
695 Institution school
= Institution
.NewInstance();
696 reference
.setSchool(school
);
697 // reference.setSeriesPart("series");
698 reference
.setSeriesPart("seriesPart");
699 reference
.setVolume("vol. 3");
700 reference
.setUri(URI
.create("http://rer.abc.de"));
702 Reference journal
= ReferenceFactory
.newJournal();
703 reference
.setInJournal(journal
);
705 handleIdentifiableEntity(reference
);
707 cdmBases
.add(reference
);
714 private void createOccurrence(List
<CdmBase
> cdmBases
) {
716 Collection collection
= Collection
.NewInstance();
717 Collection subCollection
= Collection
.NewInstance();
718 subCollection
.setSuperCollection(collection
);
719 handleIdentifiableEntity(collection
);
720 handleIdentifiableEntity(subCollection
);
721 cdmBases
.add(subCollection
);
723 collection
.setCode("coll code");
724 collection
.setCodeStandard("codeStandard");
725 collection
.setName("coll name");
726 collection
.setTownOrLocation("townOrLocation");
727 Institution institution
= Institution
.NewInstance();
728 collection
.setInstitute(institution
);
731 FieldUnit fieldUnit
= FieldUnit
.NewInstance();
732 fieldUnit
.setFieldNumber("fieldNumber");
733 fieldUnit
.setFieldNotes("fieldNotes");
734 Person primaryCollector
= Person
.NewInstance();
735 fieldUnit
.setPrimaryCollector(primaryCollector
);
736 handleIdentifiableEntity(fieldUnit
);
738 GatheringEvent gatheringEvent
= GatheringEvent
.NewInstance();
739 fieldUnit
.setGatheringEvent(gatheringEvent
);
740 gatheringEvent
.putLocality(Language
.ENGLISH(), "locality");
741 gatheringEvent
.setExactLocation(Point
.NewInstance(22.4, -34.2,
742 ReferenceSystem
.WGS84(), 33));
743 gatheringEvent
.setCountry(Country
.GERMANY());
744 gatheringEvent
.addCollectingArea(NamedArea
.EUROPE());
745 gatheringEvent
.setCollectingMethod("collectingMethod");
746 gatheringEvent
.setAbsoluteElevation(10);
747 gatheringEvent
.setAbsoluteElevationMax(100);
748 gatheringEvent
.setAbsoluteElevationText("elevation text");
750 gatheringEvent
.setDistanceToGround(10.4);
751 gatheringEvent
.setDistanceToGroundMax(100.3);
752 gatheringEvent
.setDistanceToGroundText("distance to ground text");
754 gatheringEvent
.setDistanceToWaterSurface(10.4);
755 gatheringEvent
.setDistanceToWaterSurfaceMax(100.3);
756 gatheringEvent
.setDistanceToWaterSurfaceText("distance to water text");
757 handleAnnotatableEntity(gatheringEvent
);
758 handleEventBase(gatheringEvent
);
762 MediaSpecimen mediaSpecimen
= MediaSpecimen
.NewInstance(SpecimenOrObservationType
.StillImage
);
763 mediaSpecimen
.setCollection(collection
);
764 mediaSpecimen
.setCatalogNumber("catalogNumber");
765 mediaSpecimen
.setAccessionNumber("accessionNumber");
766 // mediaSpecimen.setCollectorsNumber("collectorsNumber");
767 mediaSpecimen
.setBarcode("barcode");
768 BotanicalName storedUnder
= TaxonNameFactory
.NewBotanicalInstance(Rank
.SPECIES());
769 storedUnder
.setTitleCache("Stored under", true);
770 mediaSpecimen
.setStoredUnder(storedUnder
);
771 mediaSpecimen
.setExsiccatum("exsiccatum");
772 PreservationMethod preservation
= PreservationMethod
.NewInstance(null, "My preservation");
773 preservation
.setTemperature(22.4);
774 mediaSpecimen
.setPreservation(preservation
);
775 mediaSpecimen
.setOriginalLabelInfo("Original Label Info");
776 handleIdentifiableEntity(mediaSpecimen
);
779 DerivationEvent event
= DerivationEvent
.NewInstance(DerivationEventType
.ACCESSIONING());
780 event
.addOriginal(fieldUnit
);
781 event
.addDerivative(mediaSpecimen
);
782 Institution inst
= Institution
.NewInstance();
783 event
.setInstitution(inst
);
784 handleAnnotatableEntity(event
);
785 handleEventBase(event
);
787 //SpecOrObservationBase
788 fieldUnit
.setSex(DefinedTerm
.SEX_FEMALE());
789 DefinedTerm lifeStage
= DefinedTerm
.NewStageInstance("Live stage", "stage", null);
790 cdmBases
.add(lifeStage
);
791 fieldUnit
.setLifeStage(lifeStage
);
792 DefinedTerm kindOfUnit
= DefinedTerm
.NewKindOfUnitInstance("Kind of unit", "Kind of unit", null);
793 cdmBases
.add(kindOfUnit
);
794 fieldUnit
.setKindOfUnit(kindOfUnit
);
795 fieldUnit
.setIndividualCount(3);
796 fieldUnit
.putDefinition(Language
.ENGLISH(), "definition");
797 fieldUnit
.setPublish(true);
798 handleIdentifiableEntity(fieldUnit
);
801 DeterminationEvent determinationEvent
= DeterminationEvent
.NewInstance(getTaxon(), mediaSpecimen
);
802 determinationEvent
.setModifier(DefinedTerm
.DETERMINATION_MODIFIER_AFFINIS());
803 determinationEvent
.setPreferredFlag(true);
804 determinationEvent
.addReference(getReference());
805 handleAnnotatableEntity(determinationEvent
);
806 handleEventBase(determinationEvent
);
808 cdmBases
.add(fieldUnit
);
809 cdmBases
.add(mediaSpecimen
);
810 cdmBases
.add(collection
);
814 private void createTaxonName(List
<CdmBase
> cdmBases
) {
815 BacterialName bacName
= TaxonNameFactory
.NewBacterialInstance(Rank
.GENUS());
816 bacName
.setSubGenusAuthorship("sub Genus author");
817 bacName
.setNameApprobation("nameApprobation");
818 handleIdentifiableEntity(bacName
);
820 CultivarPlantName botName
= TaxonNameFactory
.NewCultivarInstance(Rank
.SUBSPECIES());
821 botName
.setAnamorphic(true);
822 botName
.setCultivarName("cultivarName");
823 botName
.setGenusOrUninomial("Genus");
824 botName
.setInfraGenericEpithet("InfraGeneric");
825 botName
.setSpecificEpithet("specificEpithet");
826 botName
.setInfraSpecificEpithet("infraSpecificEpithet");
827 Person combinationAuthorship
= Person
.NewInstance();
828 botName
.setCombinationAuthorship(combinationAuthorship
);
829 Person exCombinationAuthorship
= Person
.NewInstance();
830 botName
.setExCombinationAuthorship(exCombinationAuthorship
);
831 Person basionymAuthorship
= Person
.NewInstance();
832 botName
.setBasionymAuthorship(basionymAuthorship
);
833 Person exBasionymAuthorship
= Person
.NewInstance();
834 botName
.setExBasionymAuthorship(exBasionymAuthorship
);
835 handleIdentifiableEntity(botName
);
836 handleAnnotatableEntity(botName
.getHomotypicalGroup());
837 BotanicalName botName2
= TaxonNameFactory
.NewBotanicalInstance(Rank
.SPECIES());
838 HybridRelationship hybridRel
= botName2
.addHybridChild(botName
, HybridRelationshipType
.FIRST_PARENT(), "Rule 1.2.3");
839 hybridRel
.setCitation(ReferenceFactory
.newBook());
840 hybridRel
.setCitationMicroReference("p. 123");
841 handleAnnotatableEntity(hybridRel
);
843 ZoologicalName zooName
= TaxonNameFactory
.NewZoologicalInstance(Rank
.GENUS());
844 zooName
.setBreed("breed");
845 zooName
.setPublicationYear(1922);
846 zooName
.setOriginalPublicationYear(1987);
847 zooName
.setAppendedPhrase("appended phrase");
848 zooName
.addDescription(TaxonNameDescription
.NewInstance());
849 zooName
.setNomenclaturalMicroReference("p. 123");
850 zooName
.setNomenclaturalReference(getReference());
851 NameRelationship rel
= zooName
.addRelationshipFromName(botName
, NameRelationshipType
.LATER_HOMONYM() , "ruleConsidered");
852 NomenclaturalStatus status
= NomenclaturalStatus
.NewInstance(NomenclaturalStatusType
.CONSERVED(), getReference(), "p. 222");
853 zooName
.addStatus(status
);
854 handleAnnotatableEntity(rel
);
855 handleAnnotatableEntity(status
);
856 handleIdentifiableEntity(zooName
);
859 ZoologicalName speciesZooName
= TaxonNameFactory
.NewZoologicalInstance(Rank
.SPECIES());
860 NameTypeDesignation nameDesig
= zooName
.addNameTypeDesignation(speciesZooName
, getReference(), "111", "original name",
861 NameTypeDesignationStatus
.AUTOMATIC(), true, true, true, true);
862 handleAnnotatableEntity(nameDesig
);
863 SpecimenTypeDesignation specimenDesig
= speciesZooName
.addSpecimenTypeDesignation(getSpecimen(), SpecimenTypeDesignationStatus
.HOLOTYPE(),
864 getReference(), "p,22", "original name", false, true);
865 handleAnnotatableEntity(specimenDesig
);
867 ViralName viralName
= TaxonNameFactory
.NewViralInstance(Rank
.GENUS());
868 viralName
.setAcronym("acronym");
869 handleIdentifiableEntity(viralName
);
872 cdmBases
.add(bacName
);
873 cdmBases
.add(botName
);
874 cdmBases
.add(viralName
);
875 cdmBases
.add(zooName
);
878 private void handleEventBase(EventBase event
){
879 event
.setTimeperiod(TimePeriodParser
.parseString("1.4.1975-2.5.1980"));
880 event
.setActor(Person
.NewTitledInstance("EventActor"));
881 event
.setDescription("Some interesing event");
884 private void handleAnnotatableEntity(AnnotatableEntity entity
){
885 Annotation annotation
= Annotation
.NewDefaultLanguageInstance("annotation");
886 entity
.addAnnotation(annotation
);
887 Marker marker
= Marker
.NewInstance(MarkerType
.COMPLETE(), true);
888 entity
.addMarker(marker
);
891 private void handleIdentifiableEntity(IdentifiableEntity
<?
> identifiableEntity
){
892 handleAnnotatableEntity(identifiableEntity
);
895 Person creditor
= Person
.NewTitledInstance("Creditor");
896 Credit credit
= Credit
.NewInstance(creditor
, "credit");
897 identifiableEntity
.addCredit(credit
);
900 Extension
.NewInstance(identifiableEntity
, "extension", ExtensionType
.INFORMAL_CATEGORY());
903 Identifier
<?
> identifier
= identifiableEntity
.addIdentifier("ident23", DefinedTerm
.SEX_FEMALE());
904 handleAnnotatableEntity(identifier
);
908 Rights rights
= Rights
.NewInstance("right", Language
.ENGLISH());
909 rights
.setUri(URI
.create("http://rights.abc.de"));
910 rights
.setAbbreviatedText("abbrev");
911 rights
.setType(RightsType
.COPYRIGHT());
912 Person owner
= Person
.NewTitledInstance("Owner");
913 rights
.setAgent(owner
);
914 identifiableEntity
.addRights(rights
);
916 if (identifiableEntity
.isInstanceOf(IdentifiableMediaEntity
.class)){
917 Media media
= Media
.NewInstance(URI
.create("http://www.identifiableMedia.de"), 22, "img/jpg", "jpg");
918 ((IdentifiableMediaEntity
<?
>)identifiableEntity
).addMedia(media
);
922 IdentifiableSource source
= identifiableEntity
.addSource(OriginalSourceType
.Import
, "id", "idNamespace",
923 getReference(), "123");
924 source
.setOriginalNameString("original name");
928 LSID lsid
= new LSID("urn:lsid:a.b.de:namespace:1234");
929 identifiableEntity
.setLsid(lsid
);
930 } catch (MalformedLSIDException e
) {
938 private Reference
getReference() {
939 Reference result
= ReferenceFactory
.newGeneric();
940 result
.setTitle("some generic reference");
945 private DerivedUnit
getSpecimen() {
946 DerivedUnit derivedUnit
= DerivedUnit
.NewPreservedSpecimenInstance();
952 private Taxon
getTaxon() {
953 Reference sec
= getReference();
954 TaxonNameBase
<?
,?
> name
= TaxonNameFactory
.NewBotanicalInstance(Rank
.GENUS());
955 Taxon taxon
= Taxon
.NewInstance(name
, sec
);