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