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.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;
|
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
|
* @created 3013-12-02
|
151
|
*
|
152
|
*
|
153
|
*/
|
154
|
public class FullCoverageDataGenerator {
|
155
|
|
156
|
|
157
|
public void fillWithData(Session session){
|
158
|
List<CdmBase> cdmBases = new ArrayList<CdmBase>();
|
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", TaxonNameBase.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.setFirstname("first name");
|
229
|
person.setLastname("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.NewTaxonInstance(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
|
handleAnnotatableEntity(source);
|
394
|
|
395
|
taxonDescription.addDescriptionSource(ref);
|
396
|
|
397
|
|
398
|
//Specimen description
|
399
|
SpecimenOrObservationBase<?> describedSpecimen = getSpecimen();
|
400
|
SpecimenDescription specDesc = SpecimenDescription.NewInstance(specimen);
|
401
|
cdmBases.add(describedSpecimen);
|
402
|
handleAnnotatableEntity(specDesc);
|
403
|
|
404
|
//Name description
|
405
|
TaxonNameBase<?,?> name = TaxonNameFactory.NewBotanicalInstance(Rank.GENUS());
|
406
|
TaxonNameDescription nameDesc = TaxonNameDescription.NewInstance(name);
|
407
|
cdmBases.add(name);
|
408
|
handleAnnotatableEntity(nameDesc);
|
409
|
|
410
|
|
411
|
//Feature Tree
|
412
|
FeatureTree featureTree = FeatureTree.NewInstance();
|
413
|
// featureTree
|
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);
|
419
|
|
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);
|
428
|
|
429
|
|
430
|
WorkingSet workingSet = WorkingSet.NewInstance();
|
431
|
workingSet.addDescription(taxonDescription);
|
432
|
workingSet.setLabel("My Workingset");
|
433
|
workingSet.getDescriptiveSystem();
|
434
|
handleAnnotatableEntity(workingSet);
|
435
|
|
436
|
|
437
|
//polytomous keys
|
438
|
Taxon coveredTaxon = Taxon.NewInstance(name, null);
|
439
|
PolytomousKey key = PolytomousKey.NewTitledInstance("My Polykey");
|
440
|
handleIdentificationKey(key, taxon, coveredTaxon);
|
441
|
key.setStartNumber(10);
|
442
|
|
443
|
|
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);
|
448
|
|
449
|
PolytomousKey subkey = PolytomousKey.NewTitledInstance("Sub-key");
|
450
|
firstChildNode.setSubkey(subkey);
|
451
|
|
452
|
PolytomousKeyNode subKeyNode = PolytomousKeyNode.NewInstance("sub key couplet");
|
453
|
subkey.getRoot().addChild(subKeyNode);
|
454
|
secondChildNode.setOtherNode(subKeyNode);
|
455
|
|
456
|
secondChildNode.putModifyingText(Language.GERMAN(), "manchmal");
|
457
|
|
458
|
cdmBases.add(key);
|
459
|
cdmBases.add(subkey);
|
460
|
|
461
|
MediaKey mediaKey = MediaKey.NewInstance();
|
462
|
mediaKey.addKeyRepresentation(Representation.NewInstance("Media Key Representation", "media key", null, Language.ENGLISH()));
|
463
|
handleIdentificationKey(mediaKey, taxon, coveredTaxon);
|
464
|
|
465
|
MultiAccessKey multiAccessKey = MultiAccessKey.NewInstance();
|
466
|
handleIdentificationKey(multiAccessKey, taxon, coveredTaxon);
|
467
|
|
468
|
cdmBases.add(mediaKey);
|
469
|
cdmBases.add(multiAccessKey);
|
470
|
|
471
|
}
|
472
|
|
473
|
|
474
|
|
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);
|
482
|
}else{
|
483
|
handleAnnotatableEntity((AnnotatableEntity)key);
|
484
|
}
|
485
|
|
486
|
|
487
|
}
|
488
|
|
489
|
|
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");
|
495
|
|
496
|
mediaRepresentation.addRepresentationPart(movieFile);
|
497
|
mediaRepresentation.addRepresentationPart(imageFile);
|
498
|
mediaRepresentation.addRepresentationPart(audioFile);
|
499
|
Media media = Media.NewInstance();
|
500
|
media.addRepresentation(mediaRepresentation);
|
501
|
|
502
|
media.putTitle(Language.ENGLISH(), "Media title");
|
503
|
media.setMediaCreated(DateTime.now());
|
504
|
media.putDescription(Language.ENGLISH(), "Media description");
|
505
|
handleIdentifiableEntity(media);
|
506
|
|
507
|
|
508
|
Person artist = Person.NewTitledInstance("artist");
|
509
|
media.setArtist(artist);
|
510
|
cdmBases.add(media);
|
511
|
cdmBases.add(artist);
|
512
|
}
|
513
|
|
514
|
|
515
|
private void createMolecular(List<CdmBase> cdmBases) {
|
516
|
DnaSample dnaSample = DnaSample.NewInstance();
|
517
|
|
518
|
//Amplification
|
519
|
Amplification amplification = Amplification.NewInstance();
|
520
|
|
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);
|
528
|
|
529
|
Primer forwardPrimer = Primer.NewInstance("forward primer");
|
530
|
forwardPrimer.setPublishedIn(getReference());
|
531
|
forwardPrimer.setSequence(SequenceString.NewInstance("my sequence"));
|
532
|
handleAnnotatableEntity(forwardPrimer);
|
533
|
|
534
|
Primer reversePrimer = Primer.NewInstance("reverse primer");
|
535
|
handleAnnotatableEntity(reversePrimer);
|
536
|
|
537
|
amplification.setForwardPrimer(forwardPrimer);
|
538
|
amplification.setReversePrimer(reversePrimer);
|
539
|
|
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);
|
546
|
|
547
|
amplification.setLadderUsed("ladder");
|
548
|
amplification.setElectrophoresisVoltage(5.5);
|
549
|
amplification.setGelConcentration(2.4);
|
550
|
amplification.setGelRunningTime(3.6);
|
551
|
|
552
|
//Amplification result
|
553
|
AmplificationResult amplificationResult = AmplificationResult.NewInstance(dnaSample, amplification);
|
554
|
amplificationResult.setSuccessful(true);
|
555
|
amplificationResult.setSuccessText("Very successful");
|
556
|
handleAnnotatableEntity(amplificationResult);
|
557
|
|
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);
|
564
|
|
565
|
Media gelPhoto = Media.NewInstance();
|
566
|
amplificationResult.setGelPhoto(gelPhoto);
|
567
|
|
568
|
//SingleRead
|
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);
|
575
|
|
576
|
Media pherogram = Media.NewInstance();
|
577
|
singleRead.setPherogram(pherogram);
|
578
|
|
579
|
singleRead.setPrimer(forwardPrimer);
|
580
|
singleRead.setSequence(SequenceString.NewInstance("ABTC"));
|
581
|
singleRead.setDirection(SequenceDirection.Forward);
|
582
|
|
583
|
//Sequence
|
584
|
Sequence sequence = Sequence.NewInstance("ADDT");
|
585
|
dnaSample.addSequence(sequence);
|
586
|
|
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");
|
590
|
|
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);
|
602
|
|
603
|
//DnaQuality
|
604
|
DnaQuality dnaQuality = DnaQuality.NewInstance();
|
605
|
dnaQuality.setConcentration(2.0);
|
606
|
MeasurementUnit mu = MeasurementUnit.NewInstance("mg/ml", "mg/ml","mg/ml");
|
607
|
cdmBases.add(mu);
|
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);
|
615
|
|
616
|
|
617
|
//Phylogenetic Tree
|
618
|
PhylogeneticTree phyloTree = PhylogeneticTree.NewInstance();
|
619
|
phyloTree.addUsedSequences(sequence);
|
620
|
handleIdentifiableEntity(phyloTree);
|
621
|
|
622
|
|
623
|
cdmBases.add(dnaSample);
|
624
|
cdmBases.add(phyloTree);
|
625
|
}
|
626
|
|
627
|
|
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);
|
633
|
|
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);
|
639
|
|
640
|
|
641
|
Taxon concept = Taxon.NewInstance(name, getReference());
|
642
|
TaxonRelationship taxRel = taxon.addTaxonRelation(concept, TaxonRelationshipType.CONGRUENT_TO(),
|
643
|
sec, "444");
|
644
|
taxon.setTaxonStatusUnknown(true);
|
645
|
handleAnnotatableEntity(taxRel);
|
646
|
|
647
|
|
648
|
//Classification
|
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");
|
654
|
|
655
|
|
656
|
TaxonNode node = classification.addChildTaxon(taxon, sec,"22");
|
657
|
handleIdentifiableEntity(classification);
|
658
|
handleAnnotatableEntity(node);
|
659
|
|
660
|
Taxon childTaxon = Taxon.NewInstance(synName, sec);
|
661
|
node.addChildTaxon(childTaxon, sec, "44");
|
662
|
node.setUnplaced(true);
|
663
|
node.setExcluded(true);
|
664
|
|
665
|
cdmBases.add(taxon);
|
666
|
cdmBases.add(concept);
|
667
|
cdmBases.add(childTaxon);
|
668
|
cdmBases.add(classification);
|
669
|
|
670
|
|
671
|
}
|
672
|
|
673
|
|
674
|
|
675
|
|
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"));
|
701
|
|
702
|
Reference journal = ReferenceFactory.newJournal();
|
703
|
reference.setInJournal(journal);
|
704
|
|
705
|
handleIdentifiableEntity(reference);
|
706
|
|
707
|
cdmBases.add(reference);
|
708
|
|
709
|
}
|
710
|
|
711
|
|
712
|
|
713
|
|
714
|
private void createOccurrence(List<CdmBase> cdmBases) {
|
715
|
//Collection
|
716
|
Collection collection = Collection.NewInstance();
|
717
|
Collection subCollection = Collection.NewInstance();
|
718
|
subCollection.setSuperCollection(collection);
|
719
|
handleIdentifiableEntity(collection);
|
720
|
handleIdentifiableEntity(subCollection);
|
721
|
cdmBases.add(subCollection);
|
722
|
|
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);
|
729
|
|
730
|
//FieldUnit
|
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);
|
737
|
|
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");
|
749
|
|
750
|
gatheringEvent.setDistanceToGround(10.4);
|
751
|
gatheringEvent.setDistanceToGroundMax(100.3);
|
752
|
gatheringEvent.setDistanceToGroundText("distance to ground text");
|
753
|
|
754
|
gatheringEvent.setDistanceToWaterSurface(10.4);
|
755
|
gatheringEvent.setDistanceToWaterSurfaceMax(100.3);
|
756
|
gatheringEvent.setDistanceToWaterSurfaceText("distance to water text");
|
757
|
handleAnnotatableEntity(gatheringEvent);
|
758
|
handleEventBase(gatheringEvent);
|
759
|
|
760
|
|
761
|
//Derived Unit
|
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);
|
777
|
|
778
|
//DerivationEvent
|
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);
|
786
|
|
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);
|
799
|
|
800
|
//Determination
|
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);
|
807
|
|
808
|
cdmBases.add(fieldUnit);
|
809
|
cdmBases.add(mediaSpecimen);
|
810
|
cdmBases.add(collection);
|
811
|
}
|
812
|
|
813
|
|
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);
|
819
|
|
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);
|
842
|
|
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);
|
857
|
|
858
|
//TypeDesignation
|
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);
|
866
|
|
867
|
ViralName viralName = TaxonNameFactory.NewViralInstance(Rank.GENUS());
|
868
|
viralName.setAcronym("acronym");
|
869
|
handleIdentifiableEntity(viralName);
|
870
|
|
871
|
|
872
|
cdmBases.add(bacName);
|
873
|
cdmBases.add(botName);
|
874
|
cdmBases.add(viralName);
|
875
|
cdmBases.add(zooName);
|
876
|
}
|
877
|
|
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");
|
882
|
}
|
883
|
|
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);
|
889
|
}
|
890
|
|
891
|
private void handleIdentifiableEntity(IdentifiableEntity<?> identifiableEntity){
|
892
|
handleAnnotatableEntity(identifiableEntity);
|
893
|
|
894
|
//Credits
|
895
|
Person creditor = Person.NewTitledInstance("Creditor");
|
896
|
Credit credit = Credit.NewInstance(creditor, "credit");
|
897
|
identifiableEntity.addCredit(credit);
|
898
|
|
899
|
//Extension
|
900
|
Extension.NewInstance(identifiableEntity, "extension", ExtensionType.INFORMAL_CATEGORY());
|
901
|
|
902
|
//Identifier
|
903
|
Identifier<?> identifier = identifiableEntity.addIdentifier("ident23", DefinedTerm.SEX_FEMALE());
|
904
|
handleAnnotatableEntity(identifier);
|
905
|
|
906
|
|
907
|
//Rights
|
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);
|
915
|
|
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);
|
919
|
}
|
920
|
|
921
|
//source
|
922
|
IdentifiableSource source = identifiableEntity.addSource(OriginalSourceType.Import, "id", "idNamespace",
|
923
|
getReference(), "123");
|
924
|
source.setOriginalNameString("original name");
|
925
|
|
926
|
//LSID
|
927
|
try {
|
928
|
LSID lsid = new LSID("urn:lsid:a.b.de:namespace:1234");
|
929
|
identifiableEntity.setLsid(lsid);
|
930
|
} catch (MalformedLSIDException e) {
|
931
|
e.printStackTrace();
|
932
|
}
|
933
|
|
934
|
|
935
|
}
|
936
|
|
937
|
|
938
|
private Reference getReference() {
|
939
|
Reference result = ReferenceFactory.newGeneric();
|
940
|
result.setTitle("some generic reference");
|
941
|
return result;
|
942
|
}
|
943
|
|
944
|
|
945
|
private DerivedUnit getSpecimen() {
|
946
|
DerivedUnit derivedUnit = DerivedUnit.NewPreservedSpecimenInstance();
|
947
|
return derivedUnit;
|
948
|
}
|
949
|
|
950
|
|
951
|
|
952
|
private Taxon getTaxon() {
|
953
|
Reference sec = getReference();
|
954
|
TaxonNameBase<?,?> name = TaxonNameFactory.NewBotanicalInstance(Rank.GENUS());
|
955
|
Taxon taxon = Taxon.NewInstance(name, sec);
|
956
|
return taxon;
|
957
|
|
958
|
}
|
959
|
}
|