Project

General

Profile

Download (6.04 KB) Statistics
| Branch: | Tag: | Revision:
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

    
14
import eu.etaxonomy.cdm.model.agent.Person;
15
import eu.etaxonomy.cdm.model.common.Language;
16
import eu.etaxonomy.cdm.model.common.LanguageString;
17
import eu.etaxonomy.cdm.model.description.CommonTaxonName;
18
import eu.etaxonomy.cdm.model.description.TaxonDescription;
19
import eu.etaxonomy.cdm.model.description.TextData;
20
import eu.etaxonomy.cdm.model.name.BotanicalName;
21
import eu.etaxonomy.cdm.model.name.Rank;
22
//import eu.etaxonomy.cdm.model.reference.Book;
23
//import eu.etaxonomy.cdm.model.reference.Database;
24
import eu.etaxonomy.cdm.model.reference.Reference;
25
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
26
import eu.etaxonomy.cdm.model.taxon.Synonym;
27
import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;
28
import eu.etaxonomy.cdm.model.taxon.Taxon;
29

    
30
/**
31
 * This class offers functionality to create test taxa and descriptions.
32
 *
33
 * @author m.doering
34
 *
35
 */
36
public class TaxonGenerator {
37
	private static String[] genera = {"Carex", "Abies", "Belladonna", "Dracula", "Maria", "Calendula", "Polygala", "Vincia"};
38
	private static String[] epitheta = {"vulgaris", "magdalena", "officinalis", "alba", "negra", "communa", "alpina", "rotundifolia", "greutheriana", "helventica", "allemania", "franca"};
39
	private static String[] ranks = {"subsp", "var", "f"};
40

    
41
	private Random rnd = new Random();
42

    
43
	public static Taxon getTestTaxon(){
44
		Person deCandolle = Person.NewInstance();
45
		deCandolle.setTitleCache("DC.", true);
46
		Reference sec = ReferenceFactory.newDatabase();
47
		sec.setTitleCache("Flora lunaea", true);
48
		Reference citationRef = ReferenceFactory.newBook();
49
		citationRef.setTitleCache("Sp. lunarum", true);
50

    
51
        //genus taxon with Name, combinationAuthor,
52
		BotanicalName botName = BotanicalName.NewInstance(Rank.GENUS());
53
        botName.setTitleCache("Hieracium L.", true);
54
        botName.setGenusOrUninomial("Hieracium");
55
        botName.setCombinationAuthorship(Person.NewInstance());
56
        botName.getCombinationAuthorship().setNomenclaturalTitle("L.");
57
        Taxon genusTaxon = Taxon.NewInstance(botName, sec);
58

    
59
        //a name that is the basionym of genusTaxon's name
60
        BotanicalName basionym = BotanicalName.NewInstance(Rank.GENUS());
61
        basionym.setTitleCache("Hieracilla DC.", true);
62
        basionym.setGenusOrUninomial("Hieracilla");
63
        basionym.setCombinationAuthorship(deCandolle);
64
        botName.addBasionym(basionym, null, null, "216");
65

    
66
        //species taxon that is the child of genus taxon
67
        BotanicalName botSpecies = BotanicalName.NewInstance(Rank.SPECIES());
68
        botSpecies.setTitleCache("Hieracium asturianum Pau", true);
69
        botSpecies.setGenusOrUninomial("Hieracium");
70
        botSpecies.setSpecificEpithet("asturianum");
71
        botSpecies.setCombinationAuthorship(Person.NewInstance());
72
        botSpecies.getCombinationAuthorship().setNomenclaturalTitle("Pau");
73
        Taxon childTaxon = Taxon.NewInstance(botSpecies, sec);
74
        childTaxon.setTaxonomicParent(genusTaxon, citationRef, "456");
75

    
76
        //homotypic synonym of childTaxon1
77
        BotanicalName botSpecies4= BotanicalName.NewInstance(Rank.SPECIES());
78
        botSpecies4.setTitleCache("Hieracium gueri DC.", true);
79
        botSpecies4.setGenusOrUninomial("Hieracium");
80
        botSpecies4.setSpecificEpithet("gueri");
81
        botSpecies4.setCombinationAuthorship(deCandolle);
82
        Synonym homoSynonym = Synonym.NewInstance(botSpecies4, sec);
83
        childTaxon.addSynonym(homoSynonym, SynonymRelationshipType.HOMOTYPIC_SYNONYM_OF());
84

    
85

    
86
        //2nd child species taxon that is the child of genus taxon
87
        BotanicalName botSpecies2= BotanicalName.NewInstance(Rank.SPECIES());
88
        botSpecies2.setTitleCache("Hieracium wolffii Zahn", true);
89
        botSpecies2.setGenusOrUninomial("Hieracium");
90
        botSpecies2.setSpecificEpithet("wolffii");
91
        botSpecies2.setCombinationAuthorship(Person.NewInstance());
92
        botSpecies2.getCombinationAuthorship().setNomenclaturalTitle("Zahn");
93
        Taxon childTaxon2 = Taxon.NewInstance(botSpecies2, sec);
94
        childTaxon2.setTaxonomicParent(genusTaxon, citationRef, "499");
95

    
96
        //heterotypic synonym of childTaxon2
97
        BotanicalName botSpecies3= BotanicalName.NewInstance(Rank.SPECIES());
98
        botSpecies3.setTitleCache("Hieracium lupium DC.", true);
99
        botSpecies3.setGenusOrUninomial("Hieracium");
100
        botSpecies3.setSpecificEpithet("lupium");
101
        botSpecies3.setCombinationAuthorship(deCandolle);
102
        Synonym heteroSynonym = Synonym.NewInstance(botSpecies3, sec);
103
        childTaxon2.addSynonym(heteroSynonym, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF());
104

    
105
        //missaplied Name for childTaxon2
106
        BotanicalName missName= BotanicalName.NewInstance(Rank.SPECIES());
107
        missName.setTitleCache("Hieracium lupium DC.", true);
108
        missName.setGenusOrUninomial("Hieracium");
109
        missName.setSpecificEpithet("lupium");
110
        missName.setCombinationAuthorship(deCandolle);
111
        Taxon misappliedName = Taxon.NewInstance(missName, sec);
112
        childTaxon2.addMisappliedName(misappliedName, citationRef, "125");
113

    
114
        genusTaxon.addDescription(getTestDescription());
115

    
116
        return genusTaxon;
117
	}
118

    
119
	public static TaxonDescription getTestDescription(){
120
		TaxonDescription taxonDescription = TaxonDescription.NewInstance();
121
		Language language = Language.DEFAULT();
122

    
123
		//textData
124
		TextData textData = TextData.NewInstance();
125
		String descriptionText = "this is a desciption for a taxon";
126
		LanguageString languageString = LanguageString.NewInstance(descriptionText, language);
127
		textData.putText(languageString);
128
		taxonDescription.addElement(textData);
129

    
130
		//commonName
131
		String commonNameString = "Schönveilchen";
132
		CommonTaxonName commonName = CommonTaxonName.NewInstance(commonNameString, language);
133
		taxonDescription.addElement(commonName);
134

    
135
		return taxonDescription;
136
	}
137
}
    (1-1/1)