Project

General

Profile

Download (38.4 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
 *
3
 */
4
package eu.etaxonomy.cdm.database.data;
5

    
6
import java.net.URI;
7
import java.util.ArrayList;
8
import java.util.List;
9

    
10
import org.hibernate.Session;
11
import org.joda.time.DateTime;
12

    
13
import com.ibm.lsid.MalformedLSIDException;
14

    
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.EventBase;
26
import eu.etaxonomy.cdm.model.common.Extension;
27
import eu.etaxonomy.cdm.model.common.ExtensionType;
28
import eu.etaxonomy.cdm.model.common.Group;
29
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
30
import eu.etaxonomy.cdm.model.common.IdentifiableSource;
31
import eu.etaxonomy.cdm.model.common.Identifier;
32
import eu.etaxonomy.cdm.model.common.IntextReference;
33
import eu.etaxonomy.cdm.model.common.LSID;
34
import eu.etaxonomy.cdm.model.common.LSIDAuthority;
35
import eu.etaxonomy.cdm.model.common.Language;
36
import eu.etaxonomy.cdm.model.common.LanguageString;
37
import eu.etaxonomy.cdm.model.common.Marker;
38
import eu.etaxonomy.cdm.model.common.MarkerType;
39
import eu.etaxonomy.cdm.model.common.OriginalSourceType;
40
import eu.etaxonomy.cdm.model.common.TimePeriod;
41
import eu.etaxonomy.cdm.model.common.User;
42
import eu.etaxonomy.cdm.model.description.CategoricalData;
43
import eu.etaxonomy.cdm.model.description.CommonTaxonName;
44
import eu.etaxonomy.cdm.model.description.DescriptionElementSource;
45
import eu.etaxonomy.cdm.model.description.DescriptiveDataSet;
46
import eu.etaxonomy.cdm.model.description.Distribution;
47
import eu.etaxonomy.cdm.model.description.Feature;
48
import eu.etaxonomy.cdm.model.description.FeatureNode;
49
import eu.etaxonomy.cdm.model.description.FeatureTree;
50
import eu.etaxonomy.cdm.model.description.IIdentificationKey;
51
import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
52
import eu.etaxonomy.cdm.model.description.MeasurementUnit;
53
import eu.etaxonomy.cdm.model.description.MediaKey;
54
import eu.etaxonomy.cdm.model.description.MultiAccessKey;
55
import eu.etaxonomy.cdm.model.description.PolytomousKey;
56
import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
57
import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
58
import eu.etaxonomy.cdm.model.description.QuantitativeData;
59
import eu.etaxonomy.cdm.model.description.SpecimenDescription;
60
import eu.etaxonomy.cdm.model.description.State;
61
import eu.etaxonomy.cdm.model.description.StateData;
62
import eu.etaxonomy.cdm.model.description.StatisticalMeasure;
63
import eu.etaxonomy.cdm.model.description.StatisticalMeasurementValue;
64
import eu.etaxonomy.cdm.model.description.TaxonDescription;
65
import eu.etaxonomy.cdm.model.description.TaxonInteraction;
66
import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
67
import eu.etaxonomy.cdm.model.description.TextData;
68
import eu.etaxonomy.cdm.model.description.TextFormat;
69
import eu.etaxonomy.cdm.model.location.Country;
70
import eu.etaxonomy.cdm.model.location.NamedArea;
71
import eu.etaxonomy.cdm.model.location.Point;
72
import eu.etaxonomy.cdm.model.location.ReferenceSystem;
73
import eu.etaxonomy.cdm.model.media.AudioFile;
74
import eu.etaxonomy.cdm.model.media.ExternalLink;
75
import eu.etaxonomy.cdm.model.media.ExternalLinkType;
76
import eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity;
77
import eu.etaxonomy.cdm.model.media.ImageFile;
78
import eu.etaxonomy.cdm.model.media.Media;
79
import eu.etaxonomy.cdm.model.media.MediaRepresentation;
80
import eu.etaxonomy.cdm.model.media.MovieFile;
81
import eu.etaxonomy.cdm.model.media.Rights;
82
import eu.etaxonomy.cdm.model.media.RightsType;
83
import eu.etaxonomy.cdm.model.molecular.Amplification;
84
import eu.etaxonomy.cdm.model.molecular.AmplificationResult;
85
import eu.etaxonomy.cdm.model.molecular.Cloning;
86
import eu.etaxonomy.cdm.model.molecular.DnaQuality;
87
import eu.etaxonomy.cdm.model.molecular.DnaSample;
88
import eu.etaxonomy.cdm.model.molecular.PhylogeneticTree;
89
import eu.etaxonomy.cdm.model.molecular.Primer;
90
import eu.etaxonomy.cdm.model.molecular.Sequence;
91
import eu.etaxonomy.cdm.model.molecular.SequenceDirection;
92
import eu.etaxonomy.cdm.model.molecular.SequenceString;
93
import eu.etaxonomy.cdm.model.molecular.SingleRead;
94
import eu.etaxonomy.cdm.model.molecular.SingleReadAlignment;
95
import eu.etaxonomy.cdm.model.molecular.SingleReadAlignment.Shift;
96
import eu.etaxonomy.cdm.model.name.HybridRelationship;
97
import eu.etaxonomy.cdm.model.name.HybridRelationshipType;
98
import eu.etaxonomy.cdm.model.name.NameRelationship;
99
import eu.etaxonomy.cdm.model.name.NameRelationshipType;
100
import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
101
import eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus;
102
import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
103
import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
104
import eu.etaxonomy.cdm.model.name.Rank;
105
import eu.etaxonomy.cdm.model.name.Registration;
106
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
107
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
108
import eu.etaxonomy.cdm.model.name.TaxonName;
109
import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
110
import eu.etaxonomy.cdm.model.occurrence.Collection;
111
import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
112
import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;
113
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
114
import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
115
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
116
import eu.etaxonomy.cdm.model.occurrence.GatheringEvent;
117
import eu.etaxonomy.cdm.model.occurrence.MaterialOrMethodEvent;
118
import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
119
import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;
120
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
121
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
122
import eu.etaxonomy.cdm.model.reference.Reference;
123
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
124
import eu.etaxonomy.cdm.model.taxon.Classification;
125
import eu.etaxonomy.cdm.model.taxon.Synonym;
126
import eu.etaxonomy.cdm.model.taxon.SynonymType;
127
import eu.etaxonomy.cdm.model.taxon.Taxon;
128
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
129
import eu.etaxonomy.cdm.model.taxon.TaxonNodeAgentRelation;
130
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
131
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
132
import eu.etaxonomy.cdm.model.term.DefinedTerm;
133
import eu.etaxonomy.cdm.model.term.Representation;
134
import eu.etaxonomy.cdm.model.term.TermType;
135
import eu.etaxonomy.cdm.model.term.TermVocabulary;
136
import eu.etaxonomy.cdm.strategy.parser.TimePeriodParser;
137

    
138
/**
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
142
 * and exports.
143
 *
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.
148
 *
149
 * @author a.mueller
150
 * @since 3013-12-02
151
 *
152
 *
153
 */
154
public class FullCoverageDataGenerator {
155

    
156

    
157
	public void fillWithData(Session session){
158
		List<CdmBase> cdmBases = new ArrayList<>();
159

    
160
		createAgents(cdmBases);
161

    
162
		createDescriptions(cdmBases);
163

    
164
		createMedia(cdmBases);
165

    
166
		createMolecular(cdmBases);
167

    
168
		createTaxonName(cdmBases);
169

    
170
		createOccurrence(cdmBases);
171

    
172
		createReference(cdmBases);
173

    
174
		createTaxon(cdmBases);
175

    
176
		createSupplemental(cdmBases);
177

    
178
		for (CdmBase cdmBase: cdmBases){
179
			session.save(cdmBase);
180
		}
181
	}
182

    
183

    
184
	private void createSupplemental(List<CdmBase> cdmBases)  {
185

    
186
		Reference ref = ReferenceFactory.newBook();
187

    
188
		Annotation annotation = Annotation.NewDefaultLanguageInstance("annotation");
189
		ref.addAnnotation(annotation);
190
		handleAnnotatableEntity(annotation);
191

    
192
		Credit credit = Credit.NewInstance(Person.NewInstance(), "refCredit", "rc", Language.DEFAULT());
193
		ref.addCredit(credit);
194
		handleAnnotatableEntity(credit);
195

    
196
		Rights rights = Rights.NewInstance("My rights", Language.GERMAN());
197
		ref.addRights(rights);
198
		handleAnnotatableEntity(rights);
199

    
200
		//Others
201
		try {
202
			LSIDAuthority lsidAuthority = new LSIDAuthority("My authority");
203
			lsidAuthority.addNamespace("lsidNamespace", TaxonName.class);
204
			cdmBases.add(lsidAuthority);
205
		} catch (MalformedLSIDException e) {
206
			e.printStackTrace();
207
		}
208

    
209
		User user = User.NewInstance("myUser", "12345");
210
		Group group = Group.NewInstance("MyGroup");
211
		group.addMember(user);
212

    
213
		cdmBases.add(user);
214
		cdmBases.add(group);
215

    
216

    
217
		cdmBases.add(ref);
218

    
219
	}
220

    
221

    
222
	/**
223
	 * @param cdmBases
224
	 */
225
	private void createAgents(List<CdmBase> cdmBases) {
226
		//Person
227
		Person person = Person.NewTitledInstance("Person Title");
228
		person.setGivenName("first name");
229
		person.setFamilyName("last name");
230
		person.setLifespan(TimePeriodParser.parseString("1905-1995"));
231
		person.setPrefix("prefix");
232
		person.setSuffix("suffix");
233

    
234
		handleIdentifiableEntity(person);
235

    
236
		//Contact
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"));
244

    
245
		//Address
246
		Address address = Address.NewInstance(Country.GERMANY(), "locality", "pobox", "12345", "region", "street", locality);
247
		contact.addAddress(address);
248

    
249
		//Team
250
		Team team = Team.NewTitledInstance("Team title", "Team abbrev title");
251
		team.addTeamMember(person);
252
		handleIdentifiableEntity(team);
253

    
254

    
255
		//Institution
256
		Institution institution = Institution.NewInstance();
257
		institution.setCode("institution code");
258
		institution.setName("institution name");
259
		handleIdentifiableEntity(institution);
260

    
261

    
262
		//TODO vocabulary
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");
268

    
269
		Institution subInstitution = Institution.NewInstance();
270
		subInstitution.setCode("sub institution code");
271
		subInstitution.setName("sub institution name");
272
		subInstitution.setIsPartOf(institution);
273

    
274
		cdmBases.add(person);
275
		cdmBases.add(team);
276
		cdmBases.add(institution);
277
	}
278

    
279

    
280
	private void createDescriptions(List<CdmBase> cdmBases) {
281

    
282
		TermVocabulary<?> voc = TermVocabulary.NewInstance(TermType.AnnotationType, "my termVoc desc",
283
				"myTerm voc", "mtv", URI.create("http://www.abc.de"));
284
		handleIdentifiableEntity(voc);
285
		cdmBases.add(voc);
286

    
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?
292

    
293
		//Categorical data
294
		State state = State.NewInstance("Test state", "state", "st.");
295
		state.addMedia(Media.NewInstance());
296
		cdmBases.add(state);
297
		CategoricalData categoricalData = CategoricalData.NewInstance(state, Feature.CONSERVATION());
298
		StateData stateData = categoricalData.getStateData().get(0);
299
		stateData.addModifier(DefinedTerm.SEX_FEMALE());
300
		handleAnnotatableEntity(categoricalData);
301

    
302

    
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);
309

    
310
		//Quantitative data
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);
324

    
325
		//Feature
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());
334

    
335
		CommonTaxonName commonTaxonName = CommonTaxonName.NewInstance("common name", Language.ENGLISH(), Country.UNITEDSTATESOFAMERICA());
336
		handleAnnotatableEntity(commonTaxonName);
337

    
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);
342

    
343
		Taxon referencedTaxon = getTaxon();
344
		cdmBases.add(referencedTaxon);
345
		languageString.addIntextReference(IntextReference.NewInstance(referencedTaxon, languageString, 2, 5));
346
		textData.putModifyingText(eng, "nice diagnosis");
347
		handleAnnotatableEntity(textData);
348
		handleAnnotatableEntity(languageString);
349

    
350
		TextFormat format = TextFormat.NewInstance("format", "format", null);
351
		textData.setFormat(format);
352
		cdmBases.add(format);
353
		handleAnnotatableEntity(format);
354

    
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);
359

    
360

    
361
		TaxonInteraction taxonInteraction = TaxonInteraction.NewInstance(Feature.HOSTPLANT());
362
		taxonInteraction.putDescription(Language.ENGLISH(), "interaction description");
363
		handleAnnotatableEntity(taxonInteraction);
364

    
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);
370

    
371
		Taxon taxon = getTaxon();
372
		TaxonDescription taxonDescription = TaxonDescription.NewInstance(taxon);
373
		taxonDescription.addElements(categoricalData, quantitativeData,
374
				textData, commonTaxonName, taxonInteraction, indAssoc, distribution);
375

    
376
		DerivedUnit describedSpecimenOrObservation = DerivedUnit.NewInstance(SpecimenOrObservationType.DerivedUnit);
377
		taxonDescription.setDescribedSpecimenOrObservation(describedSpecimenOrObservation);
378

    
379
		taxonDescription.addScope(DefinedTerm.SEX_FEMALE());
380
		taxonDescription.addGeoScope(Country.GERMANY());
381
		handleIdentifiableEntity(taxonDescription);
382

    
383
		cdmBases.add(taxon);
384

    
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
		ExternalLink link = ExternalLink.NewInstance(ExternalLinkType.WebSite,
394
		        URI.create("http://wwww.abd.de"), "Somehow useful link", 445);
395
		source.addLink(link);
396
		handleAnnotatableEntity(source);
397

    
398
		taxonDescription.addDescriptionSource(ref);
399

    
400

    
401
		//Specimen description
402
		SpecimenOrObservationBase<?> describedSpecimen = getSpecimen();
403
		SpecimenDescription specDesc = SpecimenDescription.NewInstance(specimen);
404
		cdmBases.add(describedSpecimen);
405
		handleAnnotatableEntity(specDesc);
406

    
407
		//Name description
408
		TaxonName name = TaxonNameFactory.NewBotanicalInstance(Rank.GENUS());
409
		TaxonNameDescription nameDesc = TaxonNameDescription.NewInstance(name);
410
		cdmBases.add(name);
411
		handleAnnotatableEntity(nameDesc);
412

    
413

    
414
		//Feature Tree
415
		FeatureTree featureTree = FeatureTree.NewInstance();
416
//		featureTree
417
		FeatureNode descriptionFeatureNode = FeatureNode.NewInstance(Feature.DESCRIPTION());
418
		FeatureNode leaveLengthNode = FeatureNode.NewInstance(leaveLength);
419
		featureTree.getRootChildren().add(descriptionFeatureNode);
420
		descriptionFeatureNode.addChild(leaveLengthNode);
421
		handleIdentifiableEntity(featureTree);
422

    
423
		State inapplicableState = State.NewInstance("inapplicableState", "inapplicableState", null);
424
		State applicableState = State.NewInstance("only applicable state", "only applicable state", null);
425
		cdmBases.add(applicableState);
426
		cdmBases.add(inapplicableState);
427
		leaveLengthNode.addInapplicableState(inapplicableState);
428
		leaveLengthNode.addApplicableState(applicableState);
429
		cdmBases.add(featureTree);
430
		cdmBases.add(leaveLengthNode);
431

    
432

    
433
		//DescriptiveDataSet
434
		DescriptiveDataSet descriptiveDataSet = DescriptiveDataSet.NewInstance();
435
		descriptiveDataSet.addDescription(taxonDescription);
436
		descriptiveDataSet.setLabel("My Descriptive Dataset");
437
		descriptiveDataSet.getDescriptiveSystem();
438
		handleAnnotatableEntity(descriptiveDataSet);
439
		descriptiveDataSet.addGeoFilterArea(Country.GERMANY());
440
		Classification classification = Classification.NewInstance("DescriptiveDataSet subtree classification");
441
		Taxon subTreeTaxon = getTaxon();
442
        TaxonNode subtree = classification.addChildTaxon(subTreeTaxon, null, null);
443
		descriptiveDataSet.addTaxonSubtree(subtree);
444

    
445
		cdmBases.add(classification);
446
		cdmBases.add(subtree);
447

    
448

    
449
		//polytomous keys
450
		Taxon coveredTaxon = Taxon.NewInstance(name, null);
451
		PolytomousKey key = PolytomousKey.NewTitledInstance("My Polykey");
452
		handleIdentificationKey(key, taxon, coveredTaxon);
453
		key.setStartNumber(10);
454

    
455

    
456
		PolytomousKeyNode firstChildNode = PolytomousKeyNode.NewInstance("Green", "What is the leave length?", coveredTaxon, leaveLength);
457
		key.getRoot().addChild(firstChildNode);
458
		PolytomousKeyNode secondChildNode = PolytomousKeyNode.NewInstance("234");
459
		firstChildNode.addChild(secondChildNode);
460

    
461
		PolytomousKey subkey = PolytomousKey.NewTitledInstance("Sub-key");
462
		firstChildNode.setSubkey(subkey);
463

    
464
		PolytomousKeyNode subKeyNode = PolytomousKeyNode.NewInstance("sub key couplet");
465
		subkey.getRoot().addChild(subKeyNode);
466
		secondChildNode.setOtherNode(subKeyNode);
467

    
468
		secondChildNode.putModifyingText(Language.GERMAN(), "manchmal");
469

    
470
		cdmBases.add(key);
471
		cdmBases.add(subkey);
472

    
473
		MediaKey mediaKey = MediaKey.NewInstance();
474
		mediaKey.addKeyRepresentation(Representation.NewInstance("Media Key Representation", "media key", null, Language.ENGLISH()));
475
		handleIdentificationKey(mediaKey, taxon, coveredTaxon);
476

    
477
		MultiAccessKey multiAccessKey = MultiAccessKey.NewInstance();
478
		handleIdentificationKey(multiAccessKey, taxon, coveredTaxon);
479

    
480
		cdmBases.add(mediaKey);
481
		cdmBases.add(multiAccessKey);
482

    
483
	}
484

    
485

    
486

    
487
	private void handleIdentificationKey(IIdentificationKey key, Taxon taxon, Taxon coveredTaxon){
488
		key.addCoveredTaxon(coveredTaxon);
489
		key.addGeographicalScope(Country.GERMANY());
490
		key.addScopeRestriction(DefinedTerm.SEX_FEMALE());
491
		key.addTaxonomicScope(taxon);
492
		if (key instanceof IdentifiableEntity<?>){
493
			handleIdentifiableEntity((IdentifiableEntity<?>)key);
494
		}else{
495
			handleAnnotatableEntity((AnnotatableEntity)key);
496
		}
497

    
498

    
499
	}
500

    
501

    
502
	private void createMedia(List<CdmBase> cdmBases){
503
		AudioFile audioFile = AudioFile.NewInstance(URI.create("http://a.b.de"), 22);
504
		ImageFile imageFile = ImageFile.NewInstance(URI.create("http://b.c.de"), 44, 467, 55);
505
		MovieFile movieFile = MovieFile.NewInstance(URI.create("http://b.c.de"), 67);
506
		MediaRepresentation mediaRepresentation = MediaRepresentation.NewInstance("mime", "media");
507

    
508
		mediaRepresentation.addRepresentationPart(movieFile);
509
		mediaRepresentation.addRepresentationPart(imageFile);
510
		mediaRepresentation.addRepresentationPart(audioFile);
511
		Media media = Media.NewInstance();
512
		media.addRepresentation(mediaRepresentation);
513

    
514
		media.putTitle(Language.ENGLISH(), "Media title");
515
		media.setMediaCreated(TimePeriod.NewInstance(DateTime.now()));
516
		media.putDescription(Language.ENGLISH(), "Media description");
517
		handleIdentifiableEntity(media);
518

    
519

    
520
		Person artist = Person.NewTitledInstance("artist");
521
		media.setArtist(artist);
522
		cdmBases.add(media);
523
		cdmBases.add(artist);
524
	}
525

    
526

    
527
	private void createMolecular(List<CdmBase> cdmBases) {
528
		DnaSample dnaSample = DnaSample.NewInstance();
529

    
530
		//Amplification
531
		Amplification amplification = Amplification.NewInstance();
532

    
533
		DefinedTerm dnaMarker = DefinedTerm.NewDnaMarkerInstance("My dna marker", "dna marker", null);
534
		cdmBases.add(dnaMarker);
535
		amplification.setDnaMarker(dnaMarker);
536
		Institution inst = Institution.NewInstance();
537
		amplification.setInstitution(inst);
538
		handleEventBase(amplification);
539
		handleAnnotatableEntity(amplification);
540

    
541
		Primer forwardPrimer = Primer.NewInstance("forward primer");
542
		forwardPrimer.setPublishedIn(getReference());
543
		forwardPrimer.setSequence(SequenceString.NewInstance("my sequence"));
544
		handleAnnotatableEntity(forwardPrimer);
545

    
546
		Primer reversePrimer = Primer.NewInstance("reverse primer");
547
		handleAnnotatableEntity(reversePrimer);
548

    
549
		amplification.setForwardPrimer(forwardPrimer);
550
		amplification.setReversePrimer(reversePrimer);
551

    
552
		DefinedTerm purificationMethod = DefinedTerm.NewInstance(TermType.MaterialOrMethod, "purification method", "purification method", null);
553
		cdmBases.add(purificationMethod);
554
		MaterialOrMethodEvent purification = MaterialOrMethodEvent.NewInstance(purificationMethod, "purification method");
555
		amplification.setPurification(purification);
556
		handleAnnotatableEntity(purification);
557
		handleAnnotatableEntity(purificationMethod);
558

    
559
		amplification.setLadderUsed("ladder");
560
		amplification.setElectrophoresisVoltage(5.5);
561
		amplification.setGelConcentration(2.4);
562
		amplification.setGelRunningTime(3.6);
563

    
564
		//Amplification result
565
		AmplificationResult amplificationResult = AmplificationResult.NewInstance(dnaSample, amplification);
566
		amplificationResult.setSuccessful(true);
567
		amplificationResult.setSuccessText("Very successful");
568
		handleAnnotatableEntity(amplificationResult);
569

    
570
		DefinedTerm cloningMethod = DefinedTerm.NewInstance(TermType.MaterialOrMethod, "cloning method", "cloning method", null);
571
		cdmBases.add(cloningMethod);
572
		Cloning cloning = Cloning.NewInstance(cloningMethod, "My cloning method", "my strain", forwardPrimer, reversePrimer);
573
		amplificationResult.setCloning(cloning);
574
		handleAnnotatableEntity(cloningMethod);
575
		handleAnnotatableEntity(cloning);
576

    
577
		Media gelPhoto = Media.NewInstance();
578
		amplificationResult.setGelPhoto(gelPhoto);
579

    
580
		//SingleRead
581
		SingleRead singleRead = SingleRead.NewInstance();
582
		handleAnnotatableEntity(singleRead);
583
		amplificationResult.addSingleRead(singleRead);
584
		MaterialOrMethodEvent readMethod = MaterialOrMethodEvent.NewInstance(null, "read method");
585
		singleRead.setMaterialOrMethod(readMethod);
586
		handleAnnotatableEntity(readMethod);
587

    
588
		Media pherogram = Media.NewInstance();
589
		singleRead.setPherogram(pherogram);
590

    
591
		singleRead.setPrimer(forwardPrimer);
592
		singleRead.setSequence(SequenceString.NewInstance("ABTC"));
593
		singleRead.setDirection(SequenceDirection.Forward);
594

    
595
		//Sequence
596
		Sequence sequence = Sequence.NewInstance("ADDT");
597
		dnaSample.addSequence(sequence);
598

    
599
//		SequenceString alignedSequence = SequenceString.NewInstance("AGTC");
600
		Shift[] shifts = new Shift[]{new Shift(66,1),new Shift(103,-2)};
601
		SingleReadAlignment.NewInstance(sequence, singleRead, shifts, "AGTC");
602

    
603
		Media contigFile = Media.NewInstance();
604
		sequence.setContigFile(contigFile);
605
		sequence.setIsBarcode(true);
606
		sequence.setDnaMarker(dnaMarker);
607
		sequence.setBarcodeSequencePart(SequenceString.NewInstance("ADTA"));
608
		sequence.setGeneticAccessionNumber("GenNO12345");
609
		sequence.setBoldProcessId("boldId");
610
		sequence.setHaplotype("haplotype");
611
		Reference sequenceCitation = getReference();
612
		sequence.addCitation(sequenceCitation);
613
		handleAnnotatableEntity(sequence);
614

    
615
		//DnaQuality
616
		DnaQuality dnaQuality = DnaQuality.NewInstance();
617
		dnaQuality.setConcentration(2.0);
618
		MeasurementUnit mu = MeasurementUnit.NewInstance("mg/ml", "mg/ml","mg/ml");
619
		cdmBases.add(mu);
620
		dnaQuality.setConcentrationUnit(mu);
621
		dnaQuality.setPurificationMethod("purification method");
622
		dnaQuality.setQualityCheckDate(DateTime.now());
623
		dnaQuality.setQualityTerm(null); //TODO
624
		dnaQuality.setRatioOfAbsorbance260_230(22.0);
625
		dnaQuality.setRatioOfAbsorbance260_280(3.9);
626
		dnaSample.setDnaQuality(dnaQuality);
627

    
628

    
629
		//Phylogenetic Tree
630
		PhylogeneticTree phyloTree = PhylogeneticTree.NewInstance();
631
		phyloTree.addUsedSequences(sequence);
632
		handleIdentifiableEntity(phyloTree);
633

    
634

    
635
		cdmBases.add(dnaSample);
636
		cdmBases.add(phyloTree);
637
	}
638

    
639

    
640
	private void createTaxon(List<CdmBase> cdmBases) {
641
		Reference sec = getReference();
642
		TaxonName name = TaxonNameFactory.NewBotanicalInstance(Rank.GENUS());
643
		Taxon taxon = Taxon.NewInstance(name, sec);
644
		handleIdentifiableEntity(taxon);
645

    
646
		TaxonName synName = TaxonNameFactory.NewBotanicalInstance(Rank.GENUS());
647
		Synonym syn = Synonym.NewInstance(synName, sec, "123");
648
		taxon.addSynonym(syn, SynonymType.HETEROTYPIC_SYNONYM_OF());
649
		taxon.setDoubtful(true);
650
		handleIdentifiableEntity(syn);
651

    
652

    
653
		Taxon concept = Taxon.NewInstance(name, getReference());
654
		TaxonRelationship taxRel = taxon.addTaxonRelation(concept, TaxonRelationshipType.CONGRUENT_TO(),
655
				sec, "444");
656
		taxon.setTaxonStatusUnknown(true);
657
		handleAnnotatableEntity(taxRel);
658

    
659

    
660
		//Classification
661
		Classification classification = Classification.NewInstance("My classification", sec);
662
		classification.setMicroReference("p. 123");
663
		classification.setTimeperiod(TimePeriodParser.parseString("1.1.2012-4.8.2013"));
664
		classification.addGeoScope(Country.GERMANY());
665
		classification.putDescription(Language.ENGLISH(), "An interesting classification");
666

    
667
		TaxonNode node = classification.addChildTaxon(taxon, sec,"22");
668
		handleIdentifiableEntity(classification);
669
		handleAnnotatableEntity(node);
670
		node.putExcludedNote(Language.DEFAULT(), "Excluded note");
671
		DefinedTerm agentRelationType = DefinedTerm.NewTaxonNodeAgentRelationTypeInstance(null, "agentRelation", "ar");
672
		Person agent = Person.NewTitledInstance("Related agent");
673
		TaxonNodeAgentRelation agentRelation = node.addAgentRelation(agentRelationType, agent);
674
		handleAnnotatableEntity(agentRelation);
675

    
676
		Taxon childTaxon = Taxon.NewInstance(synName, sec);
677
		node.addChildTaxon(childTaxon, sec, "44");
678
	    node.setUnplaced(true);
679
	    node.setExcluded(true);
680

    
681
		cdmBases.add(taxon);
682
		cdmBases.add(concept);
683
		cdmBases.add(childTaxon);
684
		cdmBases.add(classification);
685
		cdmBases.add(agentRelationType);
686

    
687

    
688
	}
689

    
690

    
691

    
692

    
693
	private void createReference(List<CdmBase> cdmBases) {
694
		Reference reference = ReferenceFactory.newArticle();
695
		Person author = Person.NewTitledInstance("Author team");
696
		reference.setAuthorship(author);
697
		reference.setTitle("ref title");
698
		reference.setAbbrevTitle("abbrev title");
699
		reference.setDatePublished(TimePeriodParser.parseStringVerbatim("1999"));
700
		reference.setEdition("edition");
701
		reference.setEditor("editor");
702
		Institution institution = Institution.NewInstance();
703
		reference.setInstitution(institution);
704
		reference.setIsbn("1234556");
705
		reference.setIssn("issn");
706
		reference.setDoi(DOI.fromRegistrantCodeAndSuffix("14356", "suffix"));
707
		reference.setReferenceAbstract("referenceAbstract");
708
		reference.setOrganization("organization");
709
		reference.setPages("123-134");
710
		reference.setPlacePublished("place Published");
711
		reference.setPublisher("publisher");
712
		Institution school = Institution.NewInstance();
713
		reference.setSchool(school);
714
//		reference.setSeriesPart("series");
715
		reference.setSeriesPart("seriesPart");
716
		reference.setVolume("vol. 3");
717
		reference.setUri(URI.create("http://rer.abc.de"));
718

    
719
		Reference journal = ReferenceFactory.newJournal();
720
		reference.setInJournal(journal);
721

    
722
		handleIdentifiableEntity(reference);
723

    
724
		cdmBases.add(reference);
725

    
726
	}
727

    
728

    
729

    
730

    
731
	private void createOccurrence(List<CdmBase> cdmBases) {
732
		//Collection
733
		Collection collection = Collection.NewInstance();
734
		Collection subCollection = Collection.NewInstance();
735
		subCollection.setSuperCollection(collection);
736
		handleIdentifiableEntity(collection);
737
		handleIdentifiableEntity(subCollection);
738
		cdmBases.add(subCollection);
739

    
740
		collection.setCode("coll code");
741
		collection.setCodeStandard("codeStandard");
742
		collection.setName("coll name");
743
		collection.setTownOrLocation("townOrLocation");
744
		Institution institution = Institution.NewInstance();
745
		collection.setInstitute(institution);
746

    
747
		//FieldUnit
748
		FieldUnit fieldUnit = FieldUnit.NewInstance();
749
		fieldUnit.setFieldNumber("fieldNumber");
750
		fieldUnit.setFieldNotes("fieldNotes");
751
		Person primaryCollector = Person.NewInstance();
752
		fieldUnit.setPrimaryCollector(primaryCollector);
753
		handleIdentifiableEntity(fieldUnit);
754

    
755
		GatheringEvent gatheringEvent = GatheringEvent.NewInstance();
756
		fieldUnit.setGatheringEvent(gatheringEvent);
757
		gatheringEvent.putLocality(Language.ENGLISH(), "locality");
758
		gatheringEvent.setExactLocation(Point.NewInstance(22.4, -34.2,
759
				ReferenceSystem.WGS84(), 33));
760
		gatheringEvent.setCountry(Country.GERMANY());
761
		gatheringEvent.addCollectingArea(NamedArea.EUROPE());
762
		gatheringEvent.setCollectingMethod("collectingMethod");
763
		gatheringEvent.setAbsoluteElevation(10);
764
		gatheringEvent.setAbsoluteElevationMax(100);
765
		gatheringEvent.setAbsoluteElevationText("elevation text");
766

    
767
		gatheringEvent.setDistanceToGround(10.4);
768
		gatheringEvent.setDistanceToGroundMax(100.3);
769
		gatheringEvent.setDistanceToGroundText("distance to ground text");
770

    
771
		gatheringEvent.setDistanceToWaterSurface(10.4);
772
		gatheringEvent.setDistanceToWaterSurfaceMax(100.3);
773
		gatheringEvent.setDistanceToWaterSurfaceText("distance to water text");
774
		handleAnnotatableEntity(gatheringEvent);
775
		handleEventBase(gatheringEvent);
776

    
777

    
778
		//Derived Unit
779
		MediaSpecimen mediaSpecimen = MediaSpecimen.NewInstance(SpecimenOrObservationType.StillImage);
780
		mediaSpecimen.setCollection(collection);
781
		mediaSpecimen.setCatalogNumber("catalogNumber");
782
		mediaSpecimen.setAccessionNumber("accessionNumber");
783
//		mediaSpecimen.setCollectorsNumber("collectorsNumber");
784
		mediaSpecimen.setBarcode("barcode");
785
		TaxonName storedUnder = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
786
		storedUnder.setTitleCache("Stored under", true);
787
		mediaSpecimen.setStoredUnder(storedUnder);
788
		mediaSpecimen.setExsiccatum("exsiccatum");
789
		PreservationMethod preservation = PreservationMethod.NewInstance(null, "My preservation");
790
		preservation.setTemperature(22.4);
791
		mediaSpecimen.setPreservation(preservation);
792
		mediaSpecimen.setOriginalLabelInfo("Original Label Info");
793
		handleIdentifiableEntity(mediaSpecimen);
794

    
795
		//DerivationEvent
796
		DerivationEvent event = DerivationEvent.NewInstance(DerivationEventType.ACCESSIONING());
797
		event.addOriginal(fieldUnit);
798
		event.addDerivative(mediaSpecimen);
799
		Institution inst = Institution.NewInstance();
800
		event.setInstitution(inst);
801
		handleAnnotatableEntity(event);
802
		handleEventBase(event);
803

    
804
		//SpecOrObservationBase
805
		fieldUnit.setSex(DefinedTerm.SEX_FEMALE());
806
		DefinedTerm lifeStage = DefinedTerm.NewStageInstance("Live stage", "stage", null);
807
		cdmBases.add(lifeStage);
808
		fieldUnit.setLifeStage(lifeStage);
809
		DefinedTerm kindOfUnit = DefinedTerm.NewKindOfUnitInstance("Kind of unit", "Kind of unit", null);
810
		cdmBases.add(kindOfUnit);
811
		fieldUnit.setKindOfUnit(kindOfUnit);
812
		fieldUnit.setIndividualCount("3");
813
		fieldUnit.putDefinition(Language.ENGLISH(), "definition");
814
		fieldUnit.setPublish(true);
815
		handleIdentifiableEntity(fieldUnit);
816

    
817
		//Determination
818
		DeterminationEvent determinationEvent = DeterminationEvent.NewInstance(getTaxon(), mediaSpecimen);
819
		determinationEvent.setModifier(DefinedTerm.DETERMINATION_MODIFIER_AFFINIS());
820
		determinationEvent.setPreferredFlag(true);
821
		determinationEvent.addReference(getReference());
822
		handleAnnotatableEntity(determinationEvent);
823
		handleEventBase(determinationEvent);
824

    
825
		cdmBases.add(fieldUnit);
826
		cdmBases.add(mediaSpecimen);
827
		cdmBases.add(collection);
828
	}
829

    
830

    
831
	private void createTaxonName(List<CdmBase> cdmBases) {
832
		TaxonName bacName = TaxonNameFactory.NewBacterialInstance(Rank.GENUS());
833
		bacName.setSubGenusAuthorship("sub Genus author");
834
		bacName.setNameApprobation("nameApprobation");
835
		handleIdentifiableEntity(bacName);
836

    
837
		TaxonName botName = TaxonNameFactory.NewCultivarInstance(Rank.SUBSPECIES());
838
		botName.setAnamorphic(true);
839
		botName.setCultivarName("cultivarName");
840
		botName.setGenusOrUninomial("Genus");
841
		botName.setInfraGenericEpithet("InfraGeneric");
842
		botName.setSpecificEpithet("specificEpithet");
843
		botName.setInfraSpecificEpithet("infraSpecificEpithet");
844
		Person combinationAuthorship = Person.NewInstance();
845
		botName.setCombinationAuthorship(combinationAuthorship);
846
		Person exCombinationAuthorship = Person.NewInstance();
847
		botName.setExCombinationAuthorship(exCombinationAuthorship);
848
		Person basionymAuthorship = Person.NewInstance();
849
		botName.setBasionymAuthorship(basionymAuthorship);
850
		Person exBasionymAuthorship = Person.NewInstance();
851
		botName.setExBasionymAuthorship(exBasionymAuthorship);
852
		handleIdentifiableEntity(botName);
853
		handleAnnotatableEntity(botName.getHomotypicalGroup());
854
		TaxonName botName2 = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
855
		HybridRelationship hybridRel = botName2.addHybridChild(botName, HybridRelationshipType.FIRST_PARENT(), "Rule 1.2.3");
856
		hybridRel.setCitation(ReferenceFactory.newBook());
857
		hybridRel.setCitationMicroReference("p. 123");
858
		handleAnnotatableEntity(hybridRel);
859

    
860
		TaxonName zooName = TaxonNameFactory.NewZoologicalInstance(Rank.GENUS());
861
		zooName.setBreed("breed");
862
		zooName.setPublicationYear(1922);
863
		zooName.setOriginalPublicationYear(1987);
864
		zooName.setAppendedPhrase("appended phrase");
865
		zooName.addDescription(TaxonNameDescription.NewInstance());
866
		zooName.setNomenclaturalMicroReference("p. 123");
867
		zooName.setNomenclaturalReference(getReference());
868
		NameRelationship rel = zooName.addRelationshipFromName(botName, NameRelationshipType.LATER_HOMONYM() , "ruleConsidered");
869
		NomenclaturalStatus status = NomenclaturalStatus.NewInstance(NomenclaturalStatusType.CONSERVED(), getReference(), "p. 222");
870
		zooName.addStatus(status);
871
		handleAnnotatableEntity(rel);
872
		handleAnnotatableEntity(status);
873
		handleIdentifiableEntity(zooName);
874

    
875
		//TypeDesignation
876
		TaxonName speciesZooName = TaxonNameFactory.NewZoologicalInstance(Rank.SPECIES());
877
		NameTypeDesignation nameDesig = zooName.addNameTypeDesignation(speciesZooName, getReference(), "111", "original name",
878
				NameTypeDesignationStatus.AUTOMATIC(), true, true, true, true);
879
		handleAnnotatableEntity(nameDesig);
880
		SpecimenTypeDesignation specimenDesig = speciesZooName.addSpecimenTypeDesignation(getSpecimen(), SpecimenTypeDesignationStatus.HOLOTYPE(),
881
				getReference(), "p,22", "original name", false, true);
882
		handleAnnotatableEntity(specimenDesig);
883

    
884
		TaxonName viralName = TaxonNameFactory.NewViralInstance(Rank.GENUS());
885
		viralName.setAcronym("acronym");
886
		handleIdentifiableEntity(viralName);
887

    
888
		//Registration
889
		Registration registration = Registration.NewInstance("registration identifier",
890
		        "specificIdentifier", speciesZooName, null);
891
		registration.addTypeDesignation(specimenDesig);
892
		registration.setRegistrationDate(DateTime.now());
893
		Registration blockingRegistration = Registration.NewInstance();
894
		registration.addBlockedBy(blockingRegistration);
895
		registration.setInstitution(Institution.NewInstance());
896
		User submitter = User.NewInstance("submitter", "12345");
897
		registration.setSubmitter(submitter);
898
		handleAnnotatableEntity(registration);;
899

    
900
		cdmBases.add(submitter);
901
		cdmBases.add(bacName);
902
		cdmBases.add(botName);
903
		cdmBases.add(viralName);
904
		cdmBases.add(zooName);
905
		cdmBases.add(botName2);
906
	}
907

    
908
	private void handleEventBase(EventBase event){
909
		event.setTimeperiod(TimePeriodParser.parseString("1.4.1975-2.5.1980"));
910
		event.setActor(Person.NewTitledInstance("EventActor"));
911
		event.setDescription("Some interesing event");
912
	}
913

    
914
	private void handleAnnotatableEntity(AnnotatableEntity entity){
915
		Annotation annotation = Annotation.NewDefaultLanguageInstance("annotation");
916
		entity.addAnnotation(annotation);
917
		Marker marker = Marker.NewInstance(MarkerType.COMPLETE(), true);
918
		entity.addMarker(marker);
919
	}
920

    
921
	private void handleIdentifiableEntity(IdentifiableEntity<?> identifiableEntity){
922
		handleAnnotatableEntity(identifiableEntity);
923

    
924
		//Credits
925
		Person creditor = Person.NewTitledInstance("Creditor");
926
		Credit credit = Credit.NewInstance(creditor, "credit");
927
		identifiableEntity.addCredit(credit);
928

    
929
		//Extension
930
		Extension.NewInstance(identifiableEntity, "extension", ExtensionType.INFORMAL_CATEGORY());
931

    
932
		//Identifier
933
		Identifier<?> identifier = identifiableEntity.addIdentifier("ident23", DefinedTerm.SEX_FEMALE());
934
		handleAnnotatableEntity(identifier);
935

    
936

    
937
		//Rights
938
		Rights rights = Rights.NewInstance("right", Language.ENGLISH());
939
		rights.setUri(URI.create("http://rights.abc.de"));
940
		rights.setAbbreviatedText("abbrev");
941
		rights.setType(RightsType.COPYRIGHT());
942
		Person owner = Person.NewTitledInstance("Owner");
943
		rights.setAgent(owner);
944
		identifiableEntity.addRights(rights);
945

    
946
		if (identifiableEntity.isInstanceOf(IdentifiableMediaEntity.class)){
947
			Media media = Media.NewInstance(URI.create("http://www.identifiableMedia.de"), 22, "img/jpg", "jpg");
948
			((IdentifiableMediaEntity<?>)identifiableEntity).addMedia(media);
949
		}
950

    
951
		//source
952
		IdentifiableSource source = identifiableEntity.addSource(OriginalSourceType.Import, "id", "idNamespace",
953
				getReference(), "123");
954
		source.setOriginalNameString("original name");
955

    
956
		//LSID
957
		 try {
958
			LSID lsid = new LSID("urn:lsid:a.b.de:namespace:1234");
959
			identifiableEntity.setLsid(lsid);
960
		} catch (MalformedLSIDException e) {
961
			e.printStackTrace();
962
		}
963

    
964

    
965
	}
966

    
967

    
968
	private Reference getReference() {
969
		 Reference result = ReferenceFactory.newGeneric();
970
		 result.setTitle("some generic reference");
971
		 return result;
972
	}
973

    
974

    
975
	private DerivedUnit getSpecimen() {
976
		DerivedUnit derivedUnit = DerivedUnit.NewPreservedSpecimenInstance();
977
		return derivedUnit;
978
	}
979

    
980

    
981

    
982
	private Taxon getTaxon() {
983
		Reference sec = getReference();
984
		TaxonName name = TaxonNameFactory.NewBotanicalInstance(Rank.GENUS());
985
		Taxon taxon = Taxon.NewInstance(name, sec);
986
		return taxon;
987

    
988
	}
989
}
    (1-1/1)