3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
11 package eu
.etaxonomy
.cdm
.model
.common
;
13 import javax
.persistence
.Column
;
14 import javax
.persistence
.Entity
;
15 import javax
.persistence
.FetchType
;
16 import javax
.persistence
.JoinColumn
;
17 import javax
.xml
.bind
.annotation
.XmlElement
;
18 import javax
.xml
.bind
.annotation
.XmlIDREF
;
19 import javax
.xml
.bind
.annotation
.XmlSchemaType
;
20 import javax
.xml
.bind
.annotation
.XmlType
;
22 import org
.apache
.log4j
.Logger
;
23 import org
.hibernate
.annotations
.Any
;
24 import org
.hibernate
.envers
.Audited
;
25 import org
.hibernate
.envers
.NotAudited
;
27 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
30 * This class represents an {@link eu.etaxonomy.cdm.model.common.IOriginalSource IOriginalSource}
31 * that can be used with {@link eu.etaxonomy.cdm.model.common.IdentifiableEntity identifiable entity}.
33 * @see eu.etaxonomy.cdm.model.common.IOriginalSource
39 @XmlType(name
= "IdentifiableSource", propOrder
= {
44 public class IdentifiableSource
extends OriginalSourceBase
<IdentifiableEntity
>{
45 private static final long serialVersionUID
= -8487673428764273806L;
46 @SuppressWarnings("unused")
47 private static final Logger logger
= Logger
.getLogger(IdentifiableSource
.class);
53 public static IdentifiableSource
NewInstance(OriginalSourceType type
){
54 return new IdentifiableSource(type
);
57 public static IdentifiableSource
NewDataImportInstance(String id
){
58 IdentifiableSource result
= new IdentifiableSource(OriginalSourceType
.Import
);
59 result
.setIdInSource(id
);
63 public static IdentifiableSource
NewDataImportInstance(String id
, String idNamespace
){
64 IdentifiableSource result
= NewDataImportInstance(id
);
65 result
.setIdNamespace(idNamespace
);
69 public static IdentifiableSource
NewDataImportInstance(String id
, String idNamespace
, Reference ref
){
70 IdentifiableSource result
= NewDataImportInstance(id
, idNamespace
);
71 result
.setCitation(ref
);
75 public static IdentifiableSource
NewInstance(OriginalSourceType type
, String id
, String idNamespace
, Reference citation
, String microCitation
){
76 IdentifiableSource result
= NewInstance(OriginalSourceType
.Import
);
77 result
.setIdInSource(id
);
78 result
.setIdNamespace(idNamespace
);
79 result
.setCitation(citation
);
80 result
.setCitationMicroReference(microCitation
);
84 public static IdentifiableSource
NewPrimarySourceInstance(Reference citation
, String microCitation
){
85 IdentifiableSource result
= NewInstance(OriginalSourceType
.PrimaryTaxonomicSource
);
86 result
.setCitation(citation
);
87 result
.setCitationMicroReference(microCitation
);
91 @XmlElement(name
= "SourcedObject")
93 @XmlSchemaType(name
= "IDREF")
94 @Any(metaDef
= "CdmBase",
95 metaColumn
=@Column(name
= "sourcedObj_type"),
96 fetch
= FetchType
.LAZY
,
98 @JoinColumn(name
= "sourcedObj_id")
100 private IdentifiableEntity
<?
> sourcedObj
;
103 private IdentifiableSource(OriginalSourceType type
) {
109 * @see eu.etaxonomy.cdm.model.common.IOriginalSource#getSourcedObj()
111 public IdentifiableEntity
getSourcedObj() {
116 * @see eu.etaxonomy.cdm.model.common.IOriginalSource#setSourcedObj(eu.etaxonomy.cdm.model.common.IdentifiableEntity)
118 public void setSourcedObj(IdentifiableEntity sourcedObj
) {
119 this.sourcedObj
= sourcedObj
;
122 //*********************************** CLONE *********************************************************/
125 * Clones this original source and sets the clones sourced object to 'sourceObj'
126 * @see java.lang.Object#clone()
128 public IdentifiableSource
clone(IdentifiableEntity sourcedObj
) throws CloneNotSupportedException
{
129 IdentifiableSource result
= (IdentifiableSource
)clone();
130 result
.setSourcedObj(sourcedObj
);
135 * @see eu.etaxonomy.cdm.model.common.OriginalSourceBase#clone()
136 * @see java.lang.Object#clone()
139 public Object
clone() throws CloneNotSupportedException
{
140 IdentifiableSource result
= (IdentifiableSource
)super.clone();
142 //no changes to: sourcedObj