2 * Copyright (C) 2009 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
10 package eu
.etaxonomy
.cdm
.datagenerator
;
12 import java
.util
.Random
;
13 import java
.util
.UUID
;
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
;
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"};
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");
50 private final Random rnd
= new Random();
52 public static Taxon
getTestTaxon(){
53 int descrIndex
= 6000;
54 Person deCandolle
= Person
.NewInstance();
55 deCandolle
.setTitleCache("DC.", true);
57 Reference sec
= ReferenceFactory
.newDatabase();
58 sec
.setTitleCache("Flora lunaea", true);
59 Reference citationRef
= ReferenceFactory
.newBook();
60 citationRef
.setTitleCache("Sp. lunarum", true);
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
);
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");
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
);
94 Classification classification
= getTestClassification("TestClassification");
95 classification
.addParentChild(genusTaxon
, childTaxon
, citationRef
, "456");
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());
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");
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());
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
);
147 public static TaxonDescription
getTestDescription(int index
){
148 TaxonDescription taxonDescription
= TaxonDescription
.NewInstance();
149 Language language
= Language
.DEFAULT();
150 //taxonDescription.setId(index);
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
);
161 String commonNameString
= "Schönveilchen";
162 CommonTaxonName commonName
= CommonTaxonName
.NewInstance(commonNameString
, language
);
163 taxonDescription
.addElement(commonName
);
165 return taxonDescription
;
168 public static Classification
getTestClassification(String name
){
169 return Classification
.NewInstance(name
);