Project

General

Profile

Download (17.6 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
		/* @see {@link eu.etaxonomy.cdm.persistence.hibernate.TableGenerator} */
8
		@GenericGenerator(
9
				name="custom-enhanced-table",
10
				strategy = "eu.etaxonomy.cdm.persistence.hibernate.TableGenerator",
11
				parameters = {
12
				    @Parameter(name="table_name", value = "hibernate_sequences"),
13
				    @Parameter(name="optimizer", value = "pooled"),
14
				    /* initial_value = increment_size as proposed to fix an issue with pooled optimizer
15
				     * http://opensource.atlassian.com/projects/hibernate/browse/HHH-3608?focusedCommentId=37112&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_37112
16
				     */
17
				    @Parameter(name="initial_value", value= "10"),
18
				    @Parameter(name="increment_size", value = "10"),
19
				    /* we want to have a sequence per table */
20
				    @Parameter(name="prefer_entity_table_as_segment_value", value="true")
21
				}
22
		),
23
		/* Steve Ebersole of Hibernate highly recommends the use of the two new generators
24
		 * http://relation.to/2082.lace
25
		 * Also see: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html#mapping-declaration-id-enhanced
26
		 */
27
		/* new table generator
28
		 * always stores sequences in a table. May be configured to return a sequence on a per table basis
29
		 * RECOMMENDED WHEN RUNNING A CDM DATASOURCE IN A MULTI CLIENT ENVIRONMENT
30
		 */
31
		@GenericGenerator(
32
				name="enhanced-table",
33
				strategy = "org.hibernate.id.enhanced.TableGenerator",
34
				parameters = {
35
				    @Parameter(name="table_name", value = "hibernate_sequences"),
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
				    /* we want to have a sequence per table */
43
				    @Parameter(name="prefer_entity_table_as_segment_value", value="true")
44
				}
45
		),
46
		/* new sequence generator
47
		 * Using sequence when the dialect supports it, otherwise it will emulate a sequence using a table in the db
48
		 * This method will result in database wide unique id's */
49
		@GenericGenerator(
50
				name="enhanced-sequence",
51
				strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
52
				parameters = {
53
			        @Parameter(name="optimizer", value = "pooled"),
54
			        /* initial_value = increment_size as proposed to fix an issue with pooled optimizer
55
				     * http://opensource.atlassian.com/projects/hibernate/browse/HHH-3608?focusedCommentId=37112&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_37112
56
				     */
57
				    @Parameter(name="initial_value", value= "10"),
58
				    @Parameter(name="increment_size", value = "10")
59
			    }
60
		),
61
		/* A couple of old style generators */
62
		/* generates identifiers of type long, short or int that are unique only when no other process
63
		 * is inserting data into the same table.
64
		 * DO NOT USE IN A CLUSTER OR MULTIPLE CLIENT ENVIRONMENT */
65
		@GenericGenerator(
66
				name="system-increment",
67
				strategy = "increment"
68
		),
69
		/* supports identity columns in DB2, MySQL, MS SQL Server, Sybase and HypersonicSQL.
70
		 * The returned identifier is of type long, short or int. */
71
		@GenericGenerator(
72
				name="system-identity",
73
				strategy = "identity"
74

    
75
		),
76
		/* uses a hi/lo algorithm to efficiently generate identifiers of type long, short or int,
77
		 * given a table and column (by default hibernate_unique_key and next_hi respectively) as
78
		 * a source of hi values. The hi/lo algorithm generates identifiers that are unique only
79
		 * for a particular database. */
80
		@GenericGenerator(
81
				name="system-hilo",
82
				strategy = "hilo"
83
		),
84
		/* uses a sequence in DB2, PostgreSQL, Oracle, SAP DB, McKoi or a generator in Interbase.
85
		 * The returned identifier is of type long, short or int */
86
		@GenericGenerator(
87
				name="system-sequence",
88
				strategy = "sequence"
89
		),
90
		/* selects identity, sequence or hilo depending upon the capabilities of the underlying database. */
91
		@GenericGenerator(
92
				name="system-native",
93
				strategy = "native"
94
		)
95
	}
96
)
97

    
98

    
99

    
100
@org.hibernate.annotations.TypeDefs( {
101
	//TODO needed ??
102
	@org.hibernate.annotations.TypeDef(name="persistentDuration", typeClass=org.jadira.usertype.dateandtime.joda.PersistentDurationAsString.class),
103
	@org.hibernate.annotations.TypeDef(name="dateTimeUserType", typeClass=org.jadira.usertype.dateandtime.joda.PersistentDateTime.class),
104
	@org.hibernate.annotations.TypeDef(name="partialUserType", typeClass=eu.etaxonomy.cdm.hibernate.PartialUserType.class),
105
	@org.hibernate.annotations.TypeDef(name="uuidUserType", typeClass=eu.etaxonomy.cdm.hibernate.UUIDUserType.class),
106
	@org.hibernate.annotations.TypeDef(name="uriUserType", typeClass=eu.etaxonomy.cdm.hibernate.URIUserType.class),
107
	@org.hibernate.annotations.TypeDef(name="enumUserType", typeClass=eu.etaxonomy.cdm.hibernate.EnumUserType.class),
108
	@org.hibernate.annotations.TypeDef(name="doiUserType", typeClass=eu.etaxonomy.cdm.hibernate.DOIUserType.class),
109
	@org.hibernate.annotations.TypeDef(name="orcidUserType", typeClass=eu.etaxonomy.cdm.hibernate.OrcidUserType.class),
110
    @org.hibernate.annotations.TypeDef(name="shiftUserType", typeClass=eu.etaxonomy.cdm.hibernate.ShiftUserType.class),
111
    @org.hibernate.annotations.TypeDef(name="bigDecimalUserType", typeClass=eu.etaxonomy.cdm.hibernate.BigDecimalUserType.class),
112
})
113
@org.hibernate.annotations.AnyMetaDef(name = "CdmBase" ,
114
		                              metaType="string",
115
		                              idType="integer",
116
		                              metaValues={
117
		 //Identifiable Entities
118
		@MetaValue(value = "Institution", targetEntity = Institution.class),
119
		@MetaValue(value = "Person", targetEntity = Person.class),
120
		@MetaValue(value = "Team", targetEntity = Team.class),
121
        @MetaValue(value = "MediaKey", targetEntity = MediaKey.class),
122
        @MetaValue(value = "SpecimenDescription", targetEntity = SpecimenDescription.class),
123
        @MetaValue(value = "TaxonDescription", targetEntity = TaxonDescription.class),
124
        @MetaValue(value = "TaxonNameDescription", targetEntity = TaxonNameDescription.class),
125
        @MetaValue(value = "PolytomousKey", targetEntity = PolytomousKey.class),
126
        @MetaValue(value = "Media", targetEntity = Media.class),
127
        @MetaValue(value = "DnaSample", targetEntity = DnaSample.class),
128
        @MetaValue(value = "TaxonName", targetEntity = TaxonName.class),
129
        @MetaValue(value = "Collection", targetEntity = Collection.class),
130
        @MetaValue(value = "FieldUnit", targetEntity = FieldUnit.class),
131
        @MetaValue(value = "DerivedUnit", targetEntity = DerivedUnit.class),
132
        @MetaValue(value = "Reference", targetEntity = Reference.class),
133
        @MetaValue(value = "Classification", targetEntity = Classification.class),
134
        @MetaValue(value = "Synonym", targetEntity = Synonym.class),
135
        @MetaValue(value = "Taxon", targetEntity = Taxon.class),
136

    
137
        @MetaValue(value = "TermTree", targetEntity = TermTree.class),
138
        @MetaValue(value = "PhylogeneticTree", targetEntity = PhylogeneticTree.class),
139
        @MetaValue(value = "MediaSpecimen", targetEntity = MediaSpecimen.class),
140
        @MetaValue(value = "TermVocabulary", targetEntity = TermVocabulary.class),
141
        @MetaValue(value = "OrderedTermVocabulary", targetEntity = OrderedTermVocabulary.class),
142

    
143
        @MetaValue(value = "AnnotationType", targetEntity = AnnotationType.class),
144
        @MetaValue(value = "DefinedTerm", targetEntity = DefinedTerm.class),
145
        @MetaValue(value = "DerivationEventType", targetEntity = DerivationEventType.class),
146
        @MetaValue(value = "ExtensionType", targetEntity = ExtensionType.class),
147
        @MetaValue(value = "Feature", targetEntity = Feature.class),
148
        @MetaValue(value = "Language", targetEntity = Language.class),
149
        @MetaValue(value = "MarkerType", targetEntity = MarkerType.class),
150
        @MetaValue(value = "MeasurementUnit", targetEntity = MeasurementUnit.class),
151
        @MetaValue(value = "NamedAreaType", targetEntity = NamedAreaType.class),
152
        @MetaValue(value = "NaturalLanguageTerm", targetEntity = NaturalLanguageTerm.class),
153
        @MetaValue(value = "ReferenceSystem", targetEntity = ReferenceSystem.class),
154
        @MetaValue(value = "RightsType", targetEntity = RightsType.class),
155
        @MetaValue(value = "StatisticalMeasure", targetEntity = StatisticalMeasure.class),
156
        @MetaValue(value = "TextFormat", targetEntity = TextFormat.class),
157

    
158
        @MetaValue(value = "NamedArea", targetEntity = NamedArea.class),
159
        @MetaValue(value = "Country", targetEntity = Country.class),
160
        @MetaValue(value = "NamedAreaLevel", targetEntity = NamedAreaLevel.class),
161
        @MetaValue(value = "NomenclaturalStatusType", targetEntity = NomenclaturalStatusType.class),
162
        @MetaValue(value = "OrderedTerm", targetEntity = OrderedTerm.class),
163
        @MetaValue(value = "PresenceAbsenceTerm", targetEntity = PresenceAbsenceTerm.class),
164
        @MetaValue(value = "Rank", targetEntity = Rank.class),
165
        @MetaValue(value = "HybridRelationshipType", targetEntity = HybridRelationshipType.class),
166
        @MetaValue(value = "NameRelationshipType", targetEntity = NameRelationshipType.class),
167
        @MetaValue(value = "SynonymType", targetEntity = SynonymType.class),
168
        @MetaValue(value = "TaxonRelationshipType", targetEntity = TaxonRelationshipType.class),
169
        @MetaValue(value = "State", targetEntity = State.class),
170
        @MetaValue(value = "NameTypeDesignationStatus", targetEntity = NameTypeDesignationStatus.class),
171
        @MetaValue(value = "SpecimenTypeDesignationStatus", targetEntity = SpecimenTypeDesignationStatus.class),
172

    
173

    
174
        //Annotatable Entities
175
        @MetaValue(value = "TextData", targetEntity = TextData.class),
176
		@MetaValue(value = "CategoricalData", targetEntity = CategoricalData.class),
177
		@MetaValue(value = "CommonTaxonName", targetEntity = CommonTaxonName.class),
178
		@MetaValue(value = "Distribution", targetEntity = Distribution.class),
179
		@MetaValue(value = "IndividualsAssociation", targetEntity = IndividualsAssociation.class),
180
		@MetaValue(value = "QuantitativeData", targetEntity = QuantitativeData.class),
181
		@MetaValue(value = "TaxonInteraction", targetEntity = TaxonInteraction.class),
182

    
183

    
184
		@MetaValue(value = "Sequence", targetEntity = Sequence.class),
185
		@MetaValue(value = "NomenclaturalStatus", targetEntity = NomenclaturalStatus.class),
186

    
187
		@MetaValue(value = "Annotation", targetEntity = Annotation.class),
188

    
189
		@MetaValue(value = "User", targetEntity = User.class),  //required?
190

    
191

    
192
		@MetaValue(value = "AmplificationResult", targetEntity = AmplificationResult.class),
193
		@MetaValue(value = "Amplification", targetEntity = Amplification.class),
194
        @MetaValue(value = "DerivationEvent", targetEntity = DerivationEvent.class),
195
        @MetaValue(value = "DeterminationEvent", targetEntity = DeterminationEvent.class),
196
        @MetaValue(value = "GatheringEvent", targetEntity = GatheringEvent.class),
197
        @MetaValue(value = "MaterialOrMethodEvent", targetEntity = MaterialOrMethodEvent.class),
198
        @MetaValue(value = "Cloning", targetEntity = Cloning.class),
199
        @MetaValue(value = "PreservationMethod", targetEntity = PreservationMethod.class),
200
        @MetaValue(value = "SingleRead", targetEntity = SingleRead.class),
201
        @MetaValue(value = "HomotypicalGroup", targetEntity = HomotypicalGroup.class),
202
        @MetaValue(value = "Identifier", targetEntity = Identifier.class),
203
        @MetaValue(value = "Credit", targetEntity = Credit.class),
204
        @MetaValue(value = "LanguageString", targetEntity = LanguageString.class),
205
        @MetaValue(value = "Representation", targetEntity = Representation.class),
206
        @MetaValue(value = "Rights", targetEntity = Rights.class),
207
        @MetaValue(value = "Primer", targetEntity = Primer.class),
208
        @MetaValue(value = "TaxonNode", targetEntity = TaxonNode.class),
209
        @MetaValue(value = "TaxonNodeAgentRelation", targetEntity = TaxonNodeAgentRelation.class),
210
        @MetaValue(value = "DescriptiveDataSet", targetEntity = DescriptiveDataSet.class),
211
        @MetaValue(value = "MultiAccessKey", targetEntity = MultiAccessKey.class),
212

    
213
        @MetaValue(value = "DescriptionElementSource", targetEntity = DescriptionElementSource.class),
214
        @MetaValue(value = "IdentifiableSource", targetEntity = IdentifiableSource.class),
215
        @MetaValue(value = "HybridRelationship", targetEntity = HybridRelationship.class),
216
        @MetaValue(value = "NameRelationship", targetEntity = NameRelationship.class),
217
        @MetaValue(value = "TaxonRelationship", targetEntity = TaxonRelationship.class),
218
        @MetaValue(value = "NameTypeDesignation", targetEntity = NameTypeDesignation.class),
219
        @MetaValue(value = "SpecimenTypeDesignation", targetEntity = SpecimenTypeDesignation.class),
220
})
221
package eu.etaxonomy.cdm.model.common;
222

    
223
import org.hibernate.annotations.GenericGenerator;
224
import org.hibernate.annotations.MetaValue;
225
import org.hibernate.annotations.Parameter;
226

    
227
import eu.etaxonomy.cdm.model.agent.Institution;
228
import eu.etaxonomy.cdm.model.agent.Person;
229
import eu.etaxonomy.cdm.model.agent.Team;
230
import eu.etaxonomy.cdm.model.description.CategoricalData;
231
import eu.etaxonomy.cdm.model.description.CommonTaxonName;
232
import eu.etaxonomy.cdm.model.description.DescriptionElementSource;
233
import eu.etaxonomy.cdm.model.description.DescriptiveDataSet;
234
import eu.etaxonomy.cdm.model.description.Distribution;
235
import eu.etaxonomy.cdm.model.description.Feature;
236
import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
237
import eu.etaxonomy.cdm.model.description.MeasurementUnit;
238
import eu.etaxonomy.cdm.model.description.MediaKey;
239
import eu.etaxonomy.cdm.model.description.MultiAccessKey;
240
import eu.etaxonomy.cdm.model.description.NaturalLanguageTerm;
241
import eu.etaxonomy.cdm.model.description.PolytomousKey;
242
import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
243
import eu.etaxonomy.cdm.model.description.QuantitativeData;
244
import eu.etaxonomy.cdm.model.description.SpecimenDescription;
245
import eu.etaxonomy.cdm.model.description.State;
246
import eu.etaxonomy.cdm.model.description.StatisticalMeasure;
247
import eu.etaxonomy.cdm.model.description.TaxonDescription;
248
import eu.etaxonomy.cdm.model.description.TaxonInteraction;
249
import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
250
import eu.etaxonomy.cdm.model.description.TextData;
251
import eu.etaxonomy.cdm.model.description.TextFormat;
252
import eu.etaxonomy.cdm.model.location.Country;
253
import eu.etaxonomy.cdm.model.location.NamedArea;
254
import eu.etaxonomy.cdm.model.location.NamedAreaLevel;
255
import eu.etaxonomy.cdm.model.location.NamedAreaType;
256
import eu.etaxonomy.cdm.model.location.ReferenceSystem;
257
import eu.etaxonomy.cdm.model.media.Media;
258
import eu.etaxonomy.cdm.model.media.Rights;
259
import eu.etaxonomy.cdm.model.media.RightsType;
260
import eu.etaxonomy.cdm.model.molecular.Amplification;
261
import eu.etaxonomy.cdm.model.molecular.AmplificationResult;
262
import eu.etaxonomy.cdm.model.molecular.Cloning;
263
import eu.etaxonomy.cdm.model.molecular.DnaSample;
264
import eu.etaxonomy.cdm.model.molecular.PhylogeneticTree;
265
import eu.etaxonomy.cdm.model.molecular.Primer;
266
import eu.etaxonomy.cdm.model.molecular.Sequence;
267
import eu.etaxonomy.cdm.model.molecular.SingleRead;
268
import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
269
import eu.etaxonomy.cdm.model.name.HybridRelationship;
270
import eu.etaxonomy.cdm.model.name.HybridRelationshipType;
271
import eu.etaxonomy.cdm.model.name.NameRelationship;
272
import eu.etaxonomy.cdm.model.name.NameRelationshipType;
273
import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
274
import eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus;
275
import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
276
import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
277
import eu.etaxonomy.cdm.model.name.Rank;
278
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
279
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
280
import eu.etaxonomy.cdm.model.name.TaxonName;
281
import eu.etaxonomy.cdm.model.occurrence.Collection;
282
import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
283
import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;
284
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
285
import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
286
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
287
import eu.etaxonomy.cdm.model.occurrence.GatheringEvent;
288
import eu.etaxonomy.cdm.model.occurrence.MaterialOrMethodEvent;
289
import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
290
import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;
291
import eu.etaxonomy.cdm.model.permission.User;
292
import eu.etaxonomy.cdm.model.reference.Reference;
293
import eu.etaxonomy.cdm.model.taxon.Classification;
294
import eu.etaxonomy.cdm.model.taxon.Synonym;
295
import eu.etaxonomy.cdm.model.taxon.SynonymType;
296
import eu.etaxonomy.cdm.model.taxon.Taxon;
297
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
298
import eu.etaxonomy.cdm.model.taxon.TaxonNodeAgentRelation;
299
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
300
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
301
import eu.etaxonomy.cdm.model.term.DefinedTerm;
302
import eu.etaxonomy.cdm.model.term.OrderedTerm;
303
import eu.etaxonomy.cdm.model.term.OrderedTermVocabulary;
304
import eu.etaxonomy.cdm.model.term.Representation;
305
import eu.etaxonomy.cdm.model.term.TermTree;
306
import eu.etaxonomy.cdm.model.term.TermVocabulary;
307

    
(55-55/56)