1
|
/**
|
2
|
* Copyright (C) 2009 EDIT
|
3
|
* European Distributed Institute of Taxonomy
|
4
|
* http://www.e-taxonomy.eu
|
5
|
*
|
6
|
* The contents of this file are subject to the Mozilla Public License Version 1.1
|
7
|
* See LICENSE.TXT at the top of this package for the full license terms.
|
8
|
*/
|
9
|
|
10
|
package eu.etaxonomy.cdm.datagenerator;
|
11
|
|
12
|
import java.util.Random;
|
13
|
import java.util.UUID;
|
14
|
|
15
|
import eu.etaxonomy.cdm.model.agent.Person;
|
16
|
import eu.etaxonomy.cdm.model.common.Language;
|
17
|
import eu.etaxonomy.cdm.model.common.LanguageString;
|
18
|
import eu.etaxonomy.cdm.model.description.CommonTaxonName;
|
19
|
import eu.etaxonomy.cdm.model.description.TaxonDescription;
|
20
|
import eu.etaxonomy.cdm.model.description.TextData;
|
21
|
import eu.etaxonomy.cdm.model.name.IBotanicalName;
|
22
|
import eu.etaxonomy.cdm.model.name.Rank;
|
23
|
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
|
24
|
import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
|
25
|
import eu.etaxonomy.cdm.model.reference.Reference;
|
26
|
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
|
27
|
import eu.etaxonomy.cdm.model.taxon.Classification;
|
28
|
import eu.etaxonomy.cdm.model.taxon.Synonym;
|
29
|
import eu.etaxonomy.cdm.model.taxon.SynonymType;
|
30
|
import eu.etaxonomy.cdm.model.taxon.Taxon;
|
31
|
|
32
|
public class TaxonGenerator {
|
33
|
private static String[] genera = {"Carex", "Abies", "Belladonna", "Dracula", "Maria", "Calendula", "Polygala", "Vincia"};
|
34
|
private static String[] epitheta = {"vulgaris", "magdalena", "officinalis", "alba", "negra", "communa", "alpina", "rotundifolia", "greutheriana", "helventica", "allemania", "franca"};
|
35
|
private static String[] ranks = {"subsp", "var", "f"};
|
36
|
|
37
|
public static UUID GENUS_NAME_UUID = UUID.fromString("8d761fc4-b509-42f4-9568-244161934336");
|
38
|
public static UUID GENUS_UUID = UUID.fromString("bf4298a8-1735-4353-a210-244442e1bd62");
|
39
|
public static UUID BASIONYM_UUID = UUID.fromString("7911c51d-ccb7-4708-8992-639eae58a0e3");
|
40
|
public static UUID SPECIES1_UUID = UUID.fromString("f0eb77d9-76e0-47f4-813f-9b5605b78685");
|
41
|
public static UUID SPECIES1_NAME_UUID = UUID.fromString("efd78713-126f-42e1-9070-a1ff83f12abf");
|
42
|
public static UUID SYNONYM_NAME_UUID = UUID.fromString("b9cbaa74-dbe0-4930-8050-b7754ce85dc0");
|
43
|
public static UUID SPECIES2_NAME_UUID = UUID.fromString("0267ab67-483e-4da5-b654-11013b242c22");
|
44
|
public static UUID SPECIES2_UUID = UUID.fromString("e20eb549-ced6-4e79-9d74-44f0792a4929");
|
45
|
public static UUID SYNONYM2_NAME_UUID = UUID.fromString("7c17c811-4201-454b-8108-7be7c91c0938");
|
46
|
public static UUID SPECIES5_NAME_UUID = UUID.fromString("0c6ecaac-804d-49e5-a33f-1b7ee77439e3");
|
47
|
//public static UUID DESCRIPTION1_UUID = UUID.fromString("f3e061f6-c5df-465c-a253-1e18ab4c7e50");
|
48
|
//public static UUID DESCRIPTION2_UUID = UUID.fromString("1b009a40-ebff-4f7e-9f7f-75a850ba995d");
|
49
|
|
50
|
|
51
|
|
52
|
private final Random rnd = new Random();
|
53
|
|
54
|
public static Taxon getTestTaxon(){
|
55
|
int descrIndex = 6000;
|
56
|
Person deCandolle = Person.NewInstance();
|
57
|
deCandolle.setTitleCache("DC.", true);
|
58
|
|
59
|
Reference sec = ReferenceFactory.newDatabase();
|
60
|
sec.setTitleCache("Flora lunaea", true);
|
61
|
Reference citationRef = ReferenceFactory.newBook();
|
62
|
citationRef.setTitleCache("Sp. lunarum", true);
|
63
|
|
64
|
//genus taxon with Name, combinationAuthor,
|
65
|
IBotanicalName botName = TaxonNameFactory.NewBotanicalInstance(Rank.GENUS());
|
66
|
botName.setTitleCache("Hieracium L.", true);
|
67
|
botName.setGenusOrUninomial("Hieracium");
|
68
|
botName.setCombinationAuthorship(Person.NewInstance());
|
69
|
botName.getCombinationAuthorship().setNomenclaturalTitle("L.");
|
70
|
botName.setUuid(GENUS_NAME_UUID);
|
71
|
Taxon genusTaxon = Taxon.NewInstance(botName, sec);
|
72
|
genusTaxon.setUuid(GENUS_UUID);
|
73
|
|
74
|
//a name that is the basionym of genusTaxon's name
|
75
|
TaxonNameBase basionym = TaxonNameFactory.NewBotanicalInstance(Rank.GENUS());
|
76
|
basionym.setTitleCache("Hieracilla DC.", true);
|
77
|
basionym.setGenusOrUninomial("Hieracilla");
|
78
|
basionym.setCombinationAuthorship(deCandolle);
|
79
|
basionym.setUuid(BASIONYM_UUID);
|
80
|
botName.addBasionym(basionym, null, null,"216");
|
81
|
|
82
|
//species taxon that is the child of genus taxon
|
83
|
IBotanicalName botSpecies = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
|
84
|
botSpecies.setTitleCache("Hieracium asturianum Pau", true);
|
85
|
botSpecies.setGenusOrUninomial("Hieracium");
|
86
|
botSpecies.setSpecificEpithet("asturianum");
|
87
|
botSpecies.setCombinationAuthorship(Person.NewInstance());
|
88
|
botSpecies.getCombinationAuthorship().setNomenclaturalTitle("Pau");
|
89
|
botSpecies.setUuid(SPECIES1_NAME_UUID);
|
90
|
Taxon childTaxon = Taxon.NewInstance(botSpecies, sec);
|
91
|
childTaxon.setUuid(SPECIES1_UUID);
|
92
|
TaxonDescription taxDesc = getTestDescription(descrIndex++);
|
93
|
//taxDesc.setUuid(DESCRIPTION1_UUID);
|
94
|
childTaxon.addDescription(taxDesc);
|
95
|
|
96
|
Classification classification = getTestClassification("TestClassification");
|
97
|
classification.addParentChild(genusTaxon, childTaxon, citationRef, "456");
|
98
|
|
99
|
//homotypic synonym of childTaxon1
|
100
|
IBotanicalName botSpecies4= TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
|
101
|
botSpecies4.setTitleCache("Hieracium gueri DC.", true);
|
102
|
botSpecies4.setGenusOrUninomial("Hieracium");
|
103
|
botSpecies4.setSpecificEpithet("gueri");
|
104
|
botSpecies4.setCombinationAuthorship(deCandolle);
|
105
|
botSpecies4.setUuid(SYNONYM_NAME_UUID);
|
106
|
Synonym homoSynonym = Synonym.NewInstance(botSpecies4, sec);
|
107
|
childTaxon.addSynonym(homoSynonym, SynonymType.HOMOTYPIC_SYNONYM_OF());
|
108
|
|
109
|
|
110
|
//2nd child species taxon that is the child of genus taxon
|
111
|
IBotanicalName botSpecies2= TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
|
112
|
botSpecies2.setTitleCache("Hieracium wolffii Zahn", true);
|
113
|
botSpecies2.setGenusOrUninomial("Hieracium");
|
114
|
botSpecies2.setSpecificEpithet("wolffii");
|
115
|
botSpecies2.setCombinationAuthorship(Person.NewInstance());
|
116
|
botSpecies2.getCombinationAuthorship().setNomenclaturalTitle("Zahn");
|
117
|
botSpecies2.setUuid(SPECIES2_NAME_UUID);
|
118
|
Taxon childTaxon2 = Taxon.NewInstance(botSpecies2, sec);
|
119
|
childTaxon2.setUuid(SPECIES2_UUID);
|
120
|
classification.addParentChild(genusTaxon, childTaxon2, citationRef, "499");
|
121
|
|
122
|
//heterotypic synonym of childTaxon2
|
123
|
IBotanicalName botSpecies3= TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
|
124
|
botSpecies3.setTitleCache("Hieracium lupium DC.", true);
|
125
|
botSpecies3.setGenusOrUninomial("Hieracium");
|
126
|
botSpecies3.setSpecificEpithet("lupium");
|
127
|
botSpecies3.setCombinationAuthorship(deCandolle);
|
128
|
botSpecies3.setUuid(SYNONYM2_NAME_UUID);
|
129
|
Synonym heteroSynonym = Synonym.NewInstance(botSpecies3, sec);
|
130
|
childTaxon2.addSynonym(heteroSynonym, SynonymType.HETEROTYPIC_SYNONYM_OF());
|
131
|
|
132
|
//missaplied Name for childTaxon2
|
133
|
IBotanicalName missName= TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
|
134
|
missName.setTitleCache("Hieracium lupium DC.", true);
|
135
|
missName.setGenusOrUninomial("Hieracium");
|
136
|
missName.setSpecificEpithet("lupium");
|
137
|
missName.setCombinationAuthorship(deCandolle);
|
138
|
missName.setUuid(SPECIES5_NAME_UUID);
|
139
|
Taxon misappliedName = Taxon.NewInstance(missName, sec);
|
140
|
childTaxon2.addMisappliedName(misappliedName, citationRef, "125");
|
141
|
taxDesc = getTestDescription(descrIndex++);
|
142
|
// taxDesc.setUuid(DESCRIPTION2_UUID);
|
143
|
genusTaxon.addDescription(taxDesc);
|
144
|
|
145
|
|
146
|
return genusTaxon;
|
147
|
}
|
148
|
|
149
|
public static TaxonDescription getTestDescription(int index){
|
150
|
TaxonDescription taxonDescription = TaxonDescription.NewInstance();
|
151
|
Language language = Language.DEFAULT();
|
152
|
//taxonDescription.setId(index);
|
153
|
|
154
|
//textData
|
155
|
TextData textData = TextData.NewInstance();
|
156
|
String descriptionText = "this is a desciption for a taxon";
|
157
|
LanguageString languageString = LanguageString.NewInstance(descriptionText, language);
|
158
|
textData.putText(languageString);
|
159
|
taxonDescription.addElement(textData);
|
160
|
|
161
|
//commonName
|
162
|
|
163
|
String commonNameString = "Schönveilchen";
|
164
|
CommonTaxonName commonName = CommonTaxonName.NewInstance(commonNameString, language);
|
165
|
taxonDescription.addElement(commonName);
|
166
|
|
167
|
return taxonDescription;
|
168
|
}
|
169
|
|
170
|
public static Classification getTestClassification(String name){
|
171
|
return Classification.NewInstance(name);
|
172
|
}
|
173
|
}
|