Merge branch 'release/5.45.0'
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / model / common / package-info.java
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 @org.hibernate.annotations.TypeDefs( {
99 //TODO needed ??
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),
110 })
111 @org.hibernate.annotations.AnyMetaDef(name = "CdmBase" ,
112 metaType="string",
113 idType="integer",
114 metaValues={
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),
134
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),
140
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),
155
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),
170
171
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),
180
181
182 @MetaValue(value = "Sequence", targetEntity = Sequence.class),
183 @MetaValue(value = "NomenclaturalStatus", targetEntity = NomenclaturalStatus.class),
184
185 @MetaValue(value = "Annotation", targetEntity = Annotation.class),
186
187 @MetaValue(value = "User", targetEntity = User.class), //required?
188
189
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),
210
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),
218 })
219 package eu.etaxonomy.cdm.model.common;
220
221 import org.hibernate.annotations.GenericGenerator;
222 import org.hibernate.annotations.MetaValue;
223 import org.hibernate.annotations.Parameter;
224
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;
305