Project

General

Profile

Download (6.16 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)