Project

General

Profile

Download (11.1 KB) Statistics
| Branch: | Tag: | Revision:
1
/* Package Annotations*/
2

    
3
@javax.xml.bind.annotation.XmlSchema(namespace = "http://etaxonomy.eu/cdm/model/common/1.0", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
4
@com.sun.xml.bind.XmlAccessorFactory(eu.etaxonomy.cdm.jaxb.CdmAccessorFactoryImpl.class)
5
@org.hibernate.annotations.GenericGenerators(
6
	{
7
		/* Steve Ebersole of Hibernate highly recommends the use of the two new generators
8
		 * http://relation.to/2082.lace
9
		 * Also see: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html#mapping-declaration-id-enhanced
10
		 */
11
		/* new table generator
12
		 * always stores sequences in a table. May be configured to return a sequence on a per table basis
13
		 * RECOMMENDED WHEN RUNNING A CDM DATASOURCE IN A MULTI CLIENT ENVIRONMENT 
14
		 */
15
		@GenericGenerator(
16
				name="enhanced-table", 
17
				strategy = "org.hibernate.id.enhanced.TableGenerator",
18
				parameters = {
19
				    @Parameter(name="optimizer", value = "pooled"),
20
				    /* initial_value = increment_size as proposed to fix an issue with pooled optimizer
21
				     * http://opensource.atlassian.com/projects/hibernate/browse/HHH-3608?focusedCommentId=37112&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_37112
22
				     */
23
				    @Parameter(name="initial_value", value= "10"),
24
				    @Parameter(name="increment_size", value = "10"),
25
				    /* we want to have a sequence per table */
26
				    @Parameter(name="prefer_entity_table_as_segment_value", value="true")
27
				}
28
		),
29
		/* new sequence generator
30
		 * Using sequence when the dialect supports it, otherwise it will emulate a sequence using a table in the db
31
		 * This method will result in database wide unique id's */
32
		@GenericGenerator(
33
				name="enhanced-sequence", 
34
				strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
35
				parameters = {
36
			        @Parameter(name="optimizer", value = "pooled"),
37
			        /* initial_value = increment_size as proposed to fix an issue with pooled optimizer
38
				     * http://opensource.atlassian.com/projects/hibernate/browse/HHH-3608?focusedCommentId=37112&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_37112
39
				     */
40
				    @Parameter(name="initial_value", value= "10"),
41
				    @Parameter(name="increment_size", value = "10")
42
			    }
43
		),
44
		/* A couple of old style generators */
45
		/* generates identifiers of type long, short or int that are unique only when no other process 
46
		 * is inserting data into the same table. 
47
		 * DO NOT USE IN A CLUSTER OR MULTIPLE CLIENT ENVIRONMENT */
48
		@GenericGenerator(		
49
				name="system-increment", 
50
				strategy = "increment"
51
		),
52
		/* supports identity columns in DB2, MySQL, MS SQL Server, Sybase and HypersonicSQL. 
53
		 * The returned identifier is of type long, short or int. */
54
		@GenericGenerator(
55
				name="system-identity", 
56
				strategy = "identity"
57
					
58
		),
59
		/* uses a hi/lo algorithm to efficiently generate identifiers of type long, short or int, 
60
		 * given a table and column (by default hibernate_unique_key and next_hi respectively) as 
61
		 * a source of hi values. The hi/lo algorithm generates identifiers that are unique only 
62
		 * for a particular database. */
63
		@GenericGenerator(
64
				name="system-hilo", 
65
				strategy = "hilo"
66
		),
67
		/* uses a sequence in DB2, PostgreSQL, Oracle, SAP DB, McKoi or a generator in Interbase. 
68
		 * The returned identifier is of type long, short or int */
69
		@GenericGenerator(
70
				name="system-sequence", 
71
				strategy = "sequence"
72
		),
73
		/* selects identity, sequence or hilo depending upon the capabilities of the underlying database. */
74
		@GenericGenerator(
75
				name="system-native", 
76
				strategy = "native"
77
		)
78
	}
79
)
80

    
81

    
82

    
83
@org.hibernate.annotations.TypeDefs( { 
84
	@org.hibernate.annotations.TypeDef(name="persistentDuration", typeClass=org.joda.time.contrib.hibernate.PersistentDuration.class),
85
	@org.hibernate.annotations.TypeDef(name="dateTimeUserType", typeClass=org.joda.time.contrib.hibernate.PersistentDateTime.class),
86
	@org.hibernate.annotations.TypeDef(name="partialUserType", typeClass=eu.etaxonomy.cdm.hibernate.PartialUserType.class),
87
	@org.hibernate.annotations.TypeDef(name="uuidUserType", typeClass=eu.etaxonomy.cdm.hibernate.UUIDUserType.class),
88
	@org.hibernate.annotations.TypeDef(name="uriUserType", typeClass=eu.etaxonomy.cdm.hibernate.URIUserType.class)
89
})
90
@org.hibernate.annotations.AnyMetaDef(name = "CdmBase" ,
91
		                              metaType="string", 
92
		                              idType="integer",
93
		                              metaValues={
94
		@MetaValue(value = "eu.etaxonomy.cdm.model.agent.Institution", targetEntity = Institution.class),
95
		@MetaValue(value = "eu.etaxonomy.cdm.model.agent.Person", targetEntity = Person.class),
96
		@MetaValue(value = "eu.etaxonomy.cdm.model.agent.Team", targetEntity = Team.class),
97
		@MetaValue(value = "eu.etaxonomy.cdm.model.common.Annotation", targetEntity = Annotation.class),
98
		@MetaValue(value = "eu.etaxonomy.cdm.model.description.MediaKey", targetEntity = MediaKey.class),
99
		@MetaValue(value = "eu.etaxonomy.cdm.model.description.TaxonDescription", targetEntity = TaxonDescription.class),
100
		@MetaValue(value = "eu.etaxonomy.cdm.model.description.SpecimenDescription", targetEntity = SpecimenDescription.class),
101
		@MetaValue(value = "eu.etaxonomy.cdm.model.description.TaxonNameDescription", targetEntity = TaxonNameDescription.class),
102
		@MetaValue(value = "eu.etaxonomy.cdm.model.description.CategoricalData", targetEntity = CategoricalData.class),
103
		@MetaValue(value = "eu.etaxonomy.cdm.model.description.CommonTaxonName", targetEntity = CommonTaxonName.class),
104
		@MetaValue(value = "eu.etaxonomy.cdm.model.description.Distribution", targetEntity = Distribution.class),
105
		@MetaValue(value = "eu.etaxonomy.cdm.model.description.IndividualsAssociation", targetEntity = IndividualsAssociation.class),
106
		@MetaValue(value = "eu.etaxonomy.cdm.model.description.QuantitativeData", targetEntity = QuantitativeData.class),
107
		@MetaValue(value = "eu.etaxonomy.cdm.model.description.TaxonInteraction", targetEntity = TaxonInteraction.class),
108
		@MetaValue(value = "eu.etaxonomy.cdm.model.media.Media", targetEntity = Media.class),
109
		@MetaValue(value = "eu.etaxonomy.cdm.model.molecular.Sequence", targetEntity = Sequence.class),
110
		@MetaValue(value = "eu.etaxonomy.cdm.model.name.BacterialName", targetEntity = BacterialName.class),
111
		@MetaValue(value = "eu.etaxonomy.cdm.model.name.BotanicalName", targetEntity = BotanicalName.class),
112
		@MetaValue(value = "eu.etaxonomy.cdm.model.name.CultivarPlantName", targetEntity = CultivarPlantName.class),
113
		@MetaValue(value = "eu.etaxonomy.cdm.model.name.ViralName", targetEntity = ViralName.class),
114
		@MetaValue(value = "eu.etaxonomy.cdm.model.name.ZoologicalName", targetEntity = ZoologicalName.class),
115
		@MetaValue(value = "eu.etaxonomy.cdm.model.occurrence.Collection", targetEntity = Collection.class),
116
		@MetaValue(value = "eu.etaxonomy.cdm.model.occurrence.DerivedUnit", targetEntity = DerivedUnit.class),
117
		@MetaValue(value = "eu.etaxonomy.cdm.model.occurrence.FieldObservation", targetEntity = FieldObservation.class),
118
		@MetaValue(value = "eu.etaxonomy.cdm.model.occurrence.Fossil", targetEntity = Fossil.class),
119
		@MetaValue(value = "eu.etaxonomy.cdm.model.occurrence.LivingBeing", targetEntity = LivingBeing.class),
120
		@MetaValue(value = "eu.etaxonomy.cdm.model.occurrence.Observation", targetEntity = Observation.class),
121
		@MetaValue(value = "eu.etaxonomy.cdm.model.occurrence.Specimen", targetEntity = Specimen.class),
122
		@MetaValue(value = "eu.etaxonomy.cdm.model.reference.Reference", targetEntity = Reference.class),
123
		@MetaValue(value = "eu.etaxonomy.cdm.model.reference.Journal", targetEntity = Reference.class),
124
		@MetaValue(value = "eu.etaxonomy.cdm.model.reference.Article", targetEntity = Reference.class),
125
		@MetaValue(value = "eu.etaxonomy.cdm.model.reference.Book", targetEntity = Reference.class),
126
		@MetaValue(value = "eu.etaxonomy.cdm.model.reference.Generic", targetEntity = Reference.class),
127
		@MetaValue(value = "eu.etaxonomy.cdm.model.reference.Database", targetEntity = Reference.class),
128
		@MetaValue(value = "eu.etaxonomy.cdm.model.reference.BookSection", targetEntity = Reference.class),
129
		@MetaValue(value = "eu.etaxonomy.cdm.model.reference.Reference", targetEntity = Reference.class),
130
		@MetaValue(value = "eu.etaxonomy.cdm.model.reference.PrintSeries", targetEntity = Reference.class),
131
		@MetaValue(value = "eu.etaxonomy.cdm.model.reference.Proceedings", targetEntity = Reference.class),
132
		@MetaValue(value = "eu.etaxonomy.cdm.model.reference.Thesis", targetEntity = Reference.class),
133
		@MetaValue(value = "eu.etaxonomy.cdm.model.reference.WebPage", targetEntity = Reference.class),
134
		@MetaValue(value = "eu.etaxonomy.cdm.model.taxon.Synonym", targetEntity = Synonym.class),
135
		@MetaValue(value = "eu.etaxonomy.cdm.model.taxon.Taxon", targetEntity = Taxon.class),
136
		@MetaValue(value = "eu.etaxonomy.cdm.model.taxon.Classification", targetEntity = Classification.class),
137
		@MetaValue(value = "eu.etaxonomy.cdm.model.description.TextData", targetEntity = TextData.class),
138
		@MetaValue(value = "eu.etaxonomy.cdm.model.agent.TeamOrPersonBase", targetEntity = TeamOrPersonBase.class),
139
		@MetaValue(value = "eu.etaxonomy.cdm.model.common.User", targetEntity = User.class)
140
})
141
package eu.etaxonomy.cdm.model.common;
142

    
143
import org.hibernate.annotations.GenericGenerator;
144
import org.hibernate.annotations.MetaValue;
145
import org.hibernate.annotations.Parameter;
146

    
147
import eu.etaxonomy.cdm.model.agent.Institution;
148
import eu.etaxonomy.cdm.model.agent.Person;
149
import eu.etaxonomy.cdm.model.agent.Team;
150
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
151
import eu.etaxonomy.cdm.model.description.CategoricalData;
152
import eu.etaxonomy.cdm.model.description.CommonTaxonName;
153
import eu.etaxonomy.cdm.model.description.Distribution;
154
import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
155
import eu.etaxonomy.cdm.model.description.MediaKey;
156
import eu.etaxonomy.cdm.model.description.QuantitativeData;
157
import eu.etaxonomy.cdm.model.description.SpecimenDescription;
158
import eu.etaxonomy.cdm.model.description.TaxonDescription;
159
import eu.etaxonomy.cdm.model.description.TaxonInteraction;
160
import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
161
import eu.etaxonomy.cdm.model.description.TextData;
162
import eu.etaxonomy.cdm.model.media.Media;
163
import eu.etaxonomy.cdm.model.molecular.Sequence;
164
import eu.etaxonomy.cdm.model.name.BacterialName;
165
import eu.etaxonomy.cdm.model.name.BotanicalName;
166
import eu.etaxonomy.cdm.model.name.CultivarPlantName;
167
import eu.etaxonomy.cdm.model.name.ViralName;
168
import eu.etaxonomy.cdm.model.name.ZoologicalName;
169
import eu.etaxonomy.cdm.model.occurrence.Collection;
170
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
171
import eu.etaxonomy.cdm.model.occurrence.FieldObservation;
172
import eu.etaxonomy.cdm.model.occurrence.Fossil;
173
import eu.etaxonomy.cdm.model.occurrence.LivingBeing;
174
import eu.etaxonomy.cdm.model.occurrence.Observation;
175
import eu.etaxonomy.cdm.model.occurrence.Specimen;
176
import eu.etaxonomy.cdm.model.reference.Reference;
177
import eu.etaxonomy.cdm.model.taxon.Synonym;
178
import eu.etaxonomy.cdm.model.taxon.Taxon;
179
import eu.etaxonomy.cdm.model.taxon.Classification;
180
	
(62-62/63)