1 /* Package Annotations*/
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(
7 /* @see {@link eu.etaxonomy.cdm.persistence.hibernate.TableGenerator} */
9 name
="custom-enhanced-table",
10 strategy
= "eu.etaxonomy.cdm.persistence.hibernate.TableGenerator",
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
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")
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
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
32 name
="enhanced-table",
33 strategy
= "org.hibernate.id.enhanced.TableGenerator",
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
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")
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 */
50 name
="enhanced-sequence",
51 strategy
= "org.hibernate.id.enhanced.SequenceStyleGenerator",
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
57 @Parameter(name
="initial_value", value
= "10"),
58 @Parameter(name
="increment_size", value
= "10")
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 */
66 name
="system-increment",
67 strategy
= "increment"
69 /* supports identity columns in DB2, MySQL, MS SQL Server, Sybase and HypersonicSQL.
70 * The returned identifier is of type long, short or int. */
72 name
="system-identity",
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. */
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 */
87 name
="system-sequence",
90 /* selects identity, sequence or hilo depending upon the capabilities of the underlying database. */
98 @org.hibernate
.annotations
.TypeDefs( {
100 @org.hibernate
.annotations
.TypeDef(name
="persistentDuration", typeClass
=org
.jadira
.usertype
.dateandtime
.joda
.PersistentDurationAsString
.class),
101 @org.hibernate
.annotations
.TypeDef(name
="dateTimeUserType", typeClass
=org
.jadira
.usertype
.dateandtime
.joda
.PersistentDateTime
.class),
102 @org.hibernate
.annotations
.TypeDef(name
="partialUserType", typeClass
=eu
.etaxonomy
.cdm
.hibernate
.PartialUserType
.class),
103 @org.hibernate
.annotations
.TypeDef(name
="uuidUserType", typeClass
=eu
.etaxonomy
.cdm
.hibernate
.UUIDUserType
.class),
104 @org.hibernate
.annotations
.TypeDef(name
="uriUserType", typeClass
=eu
.etaxonomy
.cdm
.hibernate
.URIUserType
.class),
105 @org.hibernate
.annotations
.TypeDef(name
="enumUserType", typeClass
=eu
.etaxonomy
.cdm
.hibernate
.EnumUserType
.class),
106 @org.hibernate
.annotations
.TypeDef(name
="doiUserType", typeClass
=eu
.etaxonomy
.cdm
.hibernate
.DOIUserType
.class),
107 @org.hibernate
.annotations
.TypeDef(name
="orcidUserType", typeClass
=eu
.etaxonomy
.cdm
.hibernate
.OrcidUserType
.class),
108 @org.hibernate
.annotations
.TypeDef(name
="shiftUserType", typeClass
=eu
.etaxonomy
.cdm
.hibernate
.ShiftUserType
.class),
109 @org.hibernate
.annotations
.TypeDef(name
="bigDecimalUserType", typeClass
=eu
.etaxonomy
.cdm
.hibernate
.BigDecimalUserType
.class),
111 @org.hibernate
.annotations
.AnyMetaDef(name
= "CdmBase" ,
115 //Identifiable Entities
116 @MetaValue(value
= "Institution", targetEntity
= Institution
.class),
117 @MetaValue(value
= "Person", targetEntity
= Person
.class),
118 @MetaValue(value
= "Team", targetEntity
= Team
.class),
119 @MetaValue(value
= "MediaKey", targetEntity
= MediaKey
.class),
120 @MetaValue(value
= "SpecimenDescription", targetEntity
= SpecimenDescription
.class),
121 @MetaValue(value
= "TaxonDescription", targetEntity
= TaxonDescription
.class),
122 @MetaValue(value
= "TaxonNameDescription", targetEntity
= TaxonNameDescription
.class),
123 @MetaValue(value
= "PolytomousKey", targetEntity
= PolytomousKey
.class),
124 @MetaValue(value
= "Media", targetEntity
= Media
.class),
125 @MetaValue(value
= "DnaSample", targetEntity
= DnaSample
.class),
126 @MetaValue(value
= "TaxonName", targetEntity
= TaxonName
.class),
127 @MetaValue(value
= "Collection", targetEntity
= Collection
.class),
128 @MetaValue(value
= "FieldUnit", targetEntity
= FieldUnit
.class),
129 @MetaValue(value
= "DerivedUnit", targetEntity
= DerivedUnit
.class),
130 @MetaValue(value
= "Reference", targetEntity
= Reference
.class),
131 @MetaValue(value
= "Classification", targetEntity
= Classification
.class),
132 @MetaValue(value
= "Synonym", targetEntity
= Synonym
.class),
133 @MetaValue(value
= "Taxon", targetEntity
= Taxon
.class),
135 @MetaValue(value
= "TermTree", targetEntity
= TermTree
.class),
136 @MetaValue(value
= "PhylogeneticTree", targetEntity
= PhylogeneticTree
.class),
137 @MetaValue(value
= "MediaSpecimen", targetEntity
= MediaSpecimen
.class),
138 @MetaValue(value
= "TermVocabulary", targetEntity
= TermVocabulary
.class),
139 @MetaValue(value
= "OrderedTermVocabulary", targetEntity
= OrderedTermVocabulary
.class),
141 @MetaValue(value
= "AnnotationType", targetEntity
= AnnotationType
.class),
142 @MetaValue(value
= "DefinedTerm", targetEntity
= DefinedTerm
.class),
143 @MetaValue(value
= "DerivationEventType", targetEntity
= DerivationEventType
.class),
144 @MetaValue(value
= "ExtensionType", targetEntity
= ExtensionType
.class),
145 @MetaValue(value
= "Feature", targetEntity
= Feature
.class),
146 @MetaValue(value
= "Language", targetEntity
= Language
.class),
147 @MetaValue(value
= "MarkerType", targetEntity
= MarkerType
.class),
148 @MetaValue(value
= "MeasurementUnit", targetEntity
= MeasurementUnit
.class),
149 @MetaValue(value
= "NamedAreaType", targetEntity
= NamedAreaType
.class),
150 @MetaValue(value
= "NaturalLanguageTerm", targetEntity
= NaturalLanguageTerm
.class),
151 @MetaValue(value
= "ReferenceSystem", targetEntity
= ReferenceSystem
.class),
152 @MetaValue(value
= "RightsType", targetEntity
= RightsType
.class),
153 @MetaValue(value
= "StatisticalMeasure", targetEntity
= StatisticalMeasure
.class),
154 @MetaValue(value
= "TextFormat", targetEntity
= TextFormat
.class),
156 @MetaValue(value
= "NamedArea", targetEntity
= NamedArea
.class),
157 @MetaValue(value
= "Country", targetEntity
= Country
.class),
158 @MetaValue(value
= "NamedAreaLevel", targetEntity
= NamedAreaLevel
.class),
159 @MetaValue(value
= "NomenclaturalStatusType", targetEntity
= NomenclaturalStatusType
.class),
160 @MetaValue(value
= "OrderedTerm", targetEntity
= OrderedTerm
.class),
161 @MetaValue(value
= "PresenceAbsenceTerm", targetEntity
= PresenceAbsenceTerm
.class),
162 @MetaValue(value
= "Rank", targetEntity
= Rank
.class),
163 @MetaValue(value
= "HybridRelationshipType", targetEntity
= HybridRelationshipType
.class),
164 @MetaValue(value
= "NameRelationshipType", targetEntity
= NameRelationshipType
.class),
165 @MetaValue(value
= "SynonymType", targetEntity
= SynonymType
.class),
166 @MetaValue(value
= "TaxonRelationshipType", targetEntity
= TaxonRelationshipType
.class),
167 @MetaValue(value
= "State", targetEntity
= State
.class),
168 @MetaValue(value
= "NameTypeDesignationStatus", targetEntity
= NameTypeDesignationStatus
.class),
169 @MetaValue(value
= "SpecimenTypeDesignationStatus", targetEntity
= SpecimenTypeDesignationStatus
.class),
172 //Annotatable Entities
173 @MetaValue(value
= "TextData", targetEntity
= TextData
.class),
174 @MetaValue(value
= "CategoricalData", targetEntity
= CategoricalData
.class),
175 @MetaValue(value
= "CommonTaxonName", targetEntity
= CommonTaxonName
.class),
176 @MetaValue(value
= "Distribution", targetEntity
= Distribution
.class),
177 @MetaValue(value
= "IndividualsAssociation", targetEntity
= IndividualsAssociation
.class),
178 @MetaValue(value
= "QuantitativeData", targetEntity
= QuantitativeData
.class),
179 @MetaValue(value
= "TaxonInteraction", targetEntity
= TaxonInteraction
.class),
182 @MetaValue(value
= "Sequence", targetEntity
= Sequence
.class),
183 @MetaValue(value
= "NomenclaturalStatus", targetEntity
= NomenclaturalStatus
.class),
185 @MetaValue(value
= "Annotation", targetEntity
= Annotation
.class),
187 @MetaValue(value
= "User", targetEntity
= User
.class), //required?
190 @MetaValue(value
= "AmplificationResult", targetEntity
= AmplificationResult
.class),
191 @MetaValue(value
= "Amplification", targetEntity
= Amplification
.class),
192 @MetaValue(value
= "DerivationEvent", targetEntity
= DerivationEvent
.class),
193 @MetaValue(value
= "DeterminationEvent", targetEntity
= DeterminationEvent
.class),
194 @MetaValue(value
= "GatheringEvent", targetEntity
= GatheringEvent
.class),
195 @MetaValue(value
= "MaterialOrMethodEvent", targetEntity
= MaterialOrMethodEvent
.class),
196 @MetaValue(value
= "Cloning", targetEntity
= Cloning
.class),
197 @MetaValue(value
= "PreservationMethod", targetEntity
= PreservationMethod
.class),
198 @MetaValue(value
= "SingleRead", targetEntity
= SingleRead
.class),
199 @MetaValue(value
= "HomotypicalGroup", targetEntity
= HomotypicalGroup
.class),
200 @MetaValue(value
= "Identifier", targetEntity
= Identifier
.class),
201 @MetaValue(value
= "Credit", targetEntity
= Credit
.class),
202 @MetaValue(value
= "LanguageString", targetEntity
= LanguageString
.class),
203 @MetaValue(value
= "Representation", targetEntity
= Representation
.class),
204 @MetaValue(value
= "Rights", targetEntity
= Rights
.class),
205 @MetaValue(value
= "Primer", targetEntity
= Primer
.class),
206 @MetaValue(value
= "TaxonNode", targetEntity
= TaxonNode
.class),
207 @MetaValue(value
= "TaxonNodeAgentRelation", targetEntity
= TaxonNodeAgentRelation
.class),
208 @MetaValue(value
= "DescriptiveDataSet", targetEntity
= DescriptiveDataSet
.class),
209 @MetaValue(value
= "MultiAccessKey", targetEntity
= MultiAccessKey
.class),
211 @MetaValue(value
= "DescriptionElementSource", targetEntity
= DescriptionElementSource
.class),
212 @MetaValue(value
= "IdentifiableSource", targetEntity
= IdentifiableSource
.class),
213 @MetaValue(value
= "HybridRelationship", targetEntity
= HybridRelationship
.class),
214 @MetaValue(value
= "NameRelationship", targetEntity
= NameRelationship
.class),
215 @MetaValue(value
= "TaxonRelationship", targetEntity
= TaxonRelationship
.class),
216 @MetaValue(value
= "NameTypeDesignation", targetEntity
= NameTypeDesignation
.class),
217 @MetaValue(value
= "SpecimenTypeDesignation", targetEntity
= SpecimenTypeDesignation
.class),
219 package eu
.etaxonomy
.cdm
.model
.common
;
221 import org
.hibernate
.annotations
.GenericGenerator
;
222 import org
.hibernate
.annotations
.MetaValue
;
223 import org
.hibernate
.annotations
.Parameter
;
225 import eu
.etaxonomy
.cdm
.model
.agent
.Institution
;
226 import eu
.etaxonomy
.cdm
.model
.agent
.Person
;
227 import eu
.etaxonomy
.cdm
.model
.agent
.Team
;
228 import eu
.etaxonomy
.cdm
.model
.description
.CategoricalData
;
229 import eu
.etaxonomy
.cdm
.model
.description
.CommonTaxonName
;
230 import eu
.etaxonomy
.cdm
.model
.description
.DescriptionElementSource
;
231 import eu
.etaxonomy
.cdm
.model
.description
.DescriptiveDataSet
;
232 import eu
.etaxonomy
.cdm
.model
.description
.Distribution
;
233 import eu
.etaxonomy
.cdm
.model
.description
.Feature
;
234 import eu
.etaxonomy
.cdm
.model
.description
.IndividualsAssociation
;
235 import eu
.etaxonomy
.cdm
.model
.description
.MeasurementUnit
;
236 import eu
.etaxonomy
.cdm
.model
.description
.MediaKey
;
237 import eu
.etaxonomy
.cdm
.model
.description
.MultiAccessKey
;
238 import eu
.etaxonomy
.cdm
.model
.description
.NaturalLanguageTerm
;
239 import eu
.etaxonomy
.cdm
.model
.description
.PolytomousKey
;
240 import eu
.etaxonomy
.cdm
.model
.description
.PresenceAbsenceTerm
;
241 import eu
.etaxonomy
.cdm
.model
.description
.QuantitativeData
;
242 import eu
.etaxonomy
.cdm
.model
.description
.SpecimenDescription
;
243 import eu
.etaxonomy
.cdm
.model
.description
.State
;
244 import eu
.etaxonomy
.cdm
.model
.description
.StatisticalMeasure
;
245 import eu
.etaxonomy
.cdm
.model
.description
.TaxonDescription
;
246 import eu
.etaxonomy
.cdm
.model
.description
.TaxonInteraction
;
247 import eu
.etaxonomy
.cdm
.model
.description
.TaxonNameDescription
;
248 import eu
.etaxonomy
.cdm
.model
.description
.TextData
;
249 import eu
.etaxonomy
.cdm
.model
.description
.TextFormat
;
250 import eu
.etaxonomy
.cdm
.model
.location
.Country
;
251 import eu
.etaxonomy
.cdm
.model
.location
.NamedArea
;
252 import eu
.etaxonomy
.cdm
.model
.location
.NamedAreaLevel
;
253 import eu
.etaxonomy
.cdm
.model
.location
.NamedAreaType
;
254 import eu
.etaxonomy
.cdm
.model
.location
.ReferenceSystem
;
255 import eu
.etaxonomy
.cdm
.model
.media
.Media
;
256 import eu
.etaxonomy
.cdm
.model
.media
.Rights
;
257 import eu
.etaxonomy
.cdm
.model
.media
.RightsType
;
258 import eu
.etaxonomy
.cdm
.model
.molecular
.Amplification
;
259 import eu
.etaxonomy
.cdm
.model
.molecular
.AmplificationResult
;
260 import eu
.etaxonomy
.cdm
.model
.molecular
.Cloning
;
261 import eu
.etaxonomy
.cdm
.model
.molecular
.DnaSample
;
262 import eu
.etaxonomy
.cdm
.model
.molecular
.PhylogeneticTree
;
263 import eu
.etaxonomy
.cdm
.model
.molecular
.Primer
;
264 import eu
.etaxonomy
.cdm
.model
.molecular
.Sequence
;
265 import eu
.etaxonomy
.cdm
.model
.molecular
.SingleRead
;
266 import eu
.etaxonomy
.cdm
.model
.name
.HomotypicalGroup
;
267 import eu
.etaxonomy
.cdm
.model
.name
.HybridRelationship
;
268 import eu
.etaxonomy
.cdm
.model
.name
.HybridRelationshipType
;
269 import eu
.etaxonomy
.cdm
.model
.name
.NameRelationship
;
270 import eu
.etaxonomy
.cdm
.model
.name
.NameRelationshipType
;
271 import eu
.etaxonomy
.cdm
.model
.name
.NameTypeDesignation
;
272 import eu
.etaxonomy
.cdm
.model
.name
.NameTypeDesignationStatus
;
273 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalStatus
;
274 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalStatusType
;
275 import eu
.etaxonomy
.cdm
.model
.name
.Rank
;
276 import eu
.etaxonomy
.cdm
.model
.name
.SpecimenTypeDesignation
;
277 import eu
.etaxonomy
.cdm
.model
.name
.SpecimenTypeDesignationStatus
;
278 import eu
.etaxonomy
.cdm
.model
.name
.TaxonName
;
279 import eu
.etaxonomy
.cdm
.model
.occurrence
.Collection
;
280 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivationEvent
;
281 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivationEventType
;
282 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivedUnit
;
283 import eu
.etaxonomy
.cdm
.model
.occurrence
.DeterminationEvent
;
284 import eu
.etaxonomy
.cdm
.model
.occurrence
.FieldUnit
;
285 import eu
.etaxonomy
.cdm
.model
.occurrence
.GatheringEvent
;
286 import eu
.etaxonomy
.cdm
.model
.occurrence
.MaterialOrMethodEvent
;
287 import eu
.etaxonomy
.cdm
.model
.occurrence
.MediaSpecimen
;
288 import eu
.etaxonomy
.cdm
.model
.occurrence
.PreservationMethod
;
289 import eu
.etaxonomy
.cdm
.model
.permission
.User
;
290 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
291 import eu
.etaxonomy
.cdm
.model
.taxon
.Classification
;
292 import eu
.etaxonomy
.cdm
.model
.taxon
.Synonym
;
293 import eu
.etaxonomy
.cdm
.model
.taxon
.SynonymType
;
294 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
295 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonNode
;
296 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonNodeAgentRelation
;
297 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonRelationship
;
298 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonRelationshipType
;
299 import eu
.etaxonomy
.cdm
.model
.term
.DefinedTerm
;
300 import eu
.etaxonomy
.cdm
.model
.term
.OrderedTerm
;
301 import eu
.etaxonomy
.cdm
.model
.term
.OrderedTermVocabulary
;
302 import eu
.etaxonomy
.cdm
.model
.term
.Representation
;
303 import eu
.etaxonomy
.cdm
.model
.term
.TermTree
;
304 import eu
.etaxonomy
.cdm
.model
.term
.TermVocabulary
;