minor
[cdmlib.git] / cdmlib-persistence / src / test / java / eu / etaxonomy / cdm / datagenerator / TaxonGenerator.java
1 package eu.etaxonomy.cdm.datagenerator;
2
3 import java.util.Random;
4
5 import eu.etaxonomy.cdm.model.agent.Person;
6 import eu.etaxonomy.cdm.model.common.Language;
7 import eu.etaxonomy.cdm.model.common.LanguageString;
8 import eu.etaxonomy.cdm.model.description.CommonTaxonName;
9 import eu.etaxonomy.cdm.model.description.TaxonDescription;
10 import eu.etaxonomy.cdm.model.description.TextData;
11 import eu.etaxonomy.cdm.model.name.BotanicalName;
12 import eu.etaxonomy.cdm.model.name.Rank;
13 import eu.etaxonomy.cdm.model.reference.Book;
14 import eu.etaxonomy.cdm.model.reference.Database;
15 import eu.etaxonomy.cdm.model.reference.ReferenceBase;
16 import eu.etaxonomy.cdm.model.taxon.Synonym;
17 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;
18 import eu.etaxonomy.cdm.model.taxon.Taxon;
19
20 public class TaxonGenerator {
21 private static String[] genera = {"Carex", "Abies", "Belladonna", "Dracula", "Maria", "Calendula", "Polygala", "Vincia"};
22 private static String[] epitheta = {"vulgaris", "magdalena", "officinalis", "alba", "negra", "communa", "alpina", "rotundifolia", "greutheriana", "helventica", "allemania", "franca"};
23 private static String[] ranks = {"subsp", "var", "f"};
24
25 private Random rnd = new Random();
26
27 public static Taxon getTestTaxon(){
28 Person deCandolle = Person.NewInstance();
29 deCandolle.setTitleCache("DC.");
30 ReferenceBase sec = Database.NewInstance();
31 sec.setTitleCache("Flora lunaea");
32 ReferenceBase citationRef = Book.NewInstance();
33 citationRef.setTitleCache("Sp. lunarum");
34
35 //genus taxon with Name, combinationAuthor,
36 BotanicalName botName = BotanicalName.NewInstance(Rank.GENUS());
37 botName.setTitleCache("Hieracium L.");
38 botName.setGenusOrUninomial("Hieracium");
39 botName.setCombinationAuthorTeam(Person.NewInstance());
40 botName.getCombinationAuthorTeam().setNomenclaturalTitle("L.");
41 Taxon genusTaxon = Taxon.NewInstance(botName, sec);
42
43 //a name that is the basionym of genusTaxon's name
44 BotanicalName basionym = BotanicalName.NewInstance(Rank.GENUS());
45 basionym.setTitleCache("Hieracilla DC.");
46 basionym.setGenusOrUninomial("Hieracilla");
47 basionym.setCombinationAuthorTeam(deCandolle);
48 botName.addBasionym(basionym, null, null,"216");
49
50 //species taxon that is the child of genus taxon
51 BotanicalName botSpecies = BotanicalName.NewInstance(Rank.SPECIES());
52 botSpecies.setTitleCache("Hieracium asturianum Pau");
53 botSpecies.setGenusOrUninomial("Hieracium");
54 botSpecies.setSpecificEpithet("asturianum");
55 botSpecies.setCombinationAuthorTeam(Person.NewInstance());
56 botSpecies.getCombinationAuthorTeam().setNomenclaturalTitle("Pau");
57 Taxon childTaxon = Taxon.NewInstance(botSpecies, sec);
58 childTaxon.setTaxonomicParent(genusTaxon, citationRef, "456");
59
60 //homotypic synonym of childTaxon1
61 BotanicalName botSpecies4= BotanicalName.NewInstance(Rank.SPECIES());
62 botSpecies4.setTitleCache("Hieracium gueri DC.");
63 botSpecies4.setGenusOrUninomial("Hieracium");
64 botSpecies4.setSpecificEpithet("gueri");
65 botSpecies4.setCombinationAuthorTeam(deCandolle);
66 Synonym homoSynonym = Synonym.NewInstance(botSpecies4, sec);
67 childTaxon.addSynonym(homoSynonym, SynonymRelationshipType.HOMOTYPIC_SYNONYM_OF());
68
69
70 //2nd child species taxon that is the child of genus taxon
71 BotanicalName botSpecies2= BotanicalName.NewInstance(Rank.SPECIES());
72 botSpecies2.setTitleCache("Hieracium wolffii Zahn");
73 botSpecies2.setGenusOrUninomial("Hieracium");
74 botSpecies2.setSpecificEpithet("wolffii");
75 botSpecies2.setCombinationAuthorTeam(Person.NewInstance());
76 botSpecies2.getCombinationAuthorTeam().setNomenclaturalTitle("Zahn");
77 Taxon childTaxon2 = Taxon.NewInstance(botSpecies2, sec);
78 childTaxon2.setTaxonomicParent(genusTaxon, citationRef, "499");
79
80 //heterotypic synonym of childTaxon2
81 BotanicalName botSpecies3= BotanicalName.NewInstance(Rank.SPECIES());
82 botSpecies3.setTitleCache("Hieracium lupium DC.");
83 botSpecies3.setGenusOrUninomial("Hieracium");
84 botSpecies3.setSpecificEpithet("lupium");
85 botSpecies3.setCombinationAuthorTeam(deCandolle);
86 Synonym heteroSynonym = Synonym.NewInstance(botSpecies3, sec);
87 childTaxon2.addSynonym(heteroSynonym, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF());
88
89 //missaplied Name for childTaxon2
90 BotanicalName missName= BotanicalName.NewInstance(Rank.SPECIES());
91 missName.setTitleCache("Hieracium lupium DC.");
92 missName.setGenusOrUninomial("Hieracium");
93 missName.setSpecificEpithet("lupium");
94 missName.setCombinationAuthorTeam(deCandolle);
95 Taxon misappliedName = Taxon.NewInstance(missName, sec);
96 childTaxon2.addMisappliedName(misappliedName, citationRef, "125");
97
98 genusTaxon.addDescription(getTestDescription());
99
100 return genusTaxon;
101 }
102
103 public static TaxonDescription getTestDescription(){
104 TaxonDescription taxonDescription = TaxonDescription.NewInstance();
105 Language language = Language.DEFAULT();
106
107 //textData
108 TextData textData = TextData.NewInstance();
109 String descriptionText = "this is a desciption for a taxon";
110 LanguageString languageString = LanguageString.NewInstance(descriptionText, language);
111 textData.putText(languageString);
112 taxonDescription.addElement(textData);
113
114 //commonName
115 String commonNameString = "Schönveilchen";
116 CommonTaxonName commonName = CommonTaxonName.NewInstance(commonNameString, language);
117 taxonDescription.addElement(commonName);
118
119 return taxonDescription;
120 }
121 }