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
.ReferenceBase
;
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);
54 public static IdentifiableSource
NewInstance(){
55 return new IdentifiableSource();
58 public static IdentifiableSource
NewInstance(String id
){
59 IdentifiableSource result
= new IdentifiableSource();
60 result
.setIdInSource(id
);
64 public static IdentifiableSource
NewInstance(String id
, String idNamespace
){
65 IdentifiableSource result
= NewInstance(id
);
66 result
.setIdNamespace(idNamespace
);
70 public static IdentifiableSource
NewInstance(String id
, String idNamespace
, ReferenceBase citation
, String microReference
){
71 IdentifiableSource result
= NewInstance(id
, idNamespace
);
72 result
.setCitation(citation
);
73 result
.setCitationMicroReference(microReference
);
77 @XmlElement(name
= "SourcedObject")
79 @XmlSchemaType(name
= "IDREF")
80 @Any(metaDef
= "CdmBase",
81 metaColumn
=@Column(name
= "sourcedObj_type"),
82 fetch
= FetchType
.LAZY
,
84 @JoinColumn(name
= "sourcedObj_id")
86 private IdentifiableEntity sourcedObj
;
90 * @see eu.etaxonomy.cdm.model.common.IOriginalSource#getSourcedObj()
92 public IdentifiableEntity
getSourcedObj() {
97 * @see eu.etaxonomy.cdm.model.common.IOriginalSource#setSourcedObj(eu.etaxonomy.cdm.model.common.IdentifiableEntity)
99 public void setSourcedObj(IdentifiableEntity sourcedObj
) {
100 this.sourcedObj
= sourcedObj
;
104 * Clones this original source and sets the clones sourced object to 'sourceObj'
105 * @see java.lang.Object#clone()
107 public IdentifiableSource
clone(IdentifiableEntity sourcedObj
) throws CloneNotSupportedException
{
108 IdentifiableSource result
= (IdentifiableSource
)clone();
109 result
.setSourcedObj(sourcedObj
);