2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.cdm
.model
.common
;
12 import javax
.persistence
.Entity
;
13 import javax
.xml
.bind
.annotation
.XmlType
;
15 import org
.apache
.logging
.log4j
.LogManager
;
16 import org
.apache
.logging
.log4j
.Logger
;
17 import org
.hibernate
.envers
.Audited
;
19 import eu
.etaxonomy
.cdm
.model
.reference
.ICdmTarget
;
20 import eu
.etaxonomy
.cdm
.model
.reference
.OriginalSourceBase
;
21 import eu
.etaxonomy
.cdm
.model
.reference
.OriginalSourceType
;
22 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
25 * This class represents an {@link eu.etaxonomy.cdm.model.reference.IOriginalSource IOriginalSource}
26 * that can be used with {@link eu.etaxonomy.cdm.model.common.IdentifiableEntity identifiable entity}.
28 * @see eu.etaxonomy.cdm.model.reference.IOriginalSource
33 @XmlType(name
= "IdentifiableSource", propOrder
= {
37 public class IdentifiableSource
38 extends OriginalSourceBase
39 implements ICheckEmpty
{
41 private static final long serialVersionUID
= -8487673428764273806L;
42 @SuppressWarnings("unused")
43 private static final Logger logger
= LogManager
.getLogger();
45 //********************************* FACTORY ********************************************************/
47 public static IdentifiableSource
NewInstance(OriginalSourceType type
){
48 return new IdentifiableSource(type
);
51 public static IdentifiableSource
NewDataImportInstance(String id
){
52 IdentifiableSource result
= new IdentifiableSource(OriginalSourceType
.Import
);
53 result
.setIdInSource(id
);
57 public static IdentifiableSource
NewDataImportInstance(String id
, String idNamespace
){
58 IdentifiableSource result
= NewDataImportInstance(id
);
59 result
.setIdNamespace(idNamespace
);
63 public static IdentifiableSource
NewDataImportInstance(String id
, String idNamespace
, Reference ref
){
64 IdentifiableSource result
= NewDataImportInstance(id
, idNamespace
);
65 result
.setCitation(ref
);
69 public static IdentifiableSource
NewInstance(OriginalSourceType type
, String id
, String idNamespace
, Reference
70 reference
, String microReference
){
71 IdentifiableSource result
= NewInstance(type
);
72 result
.setIdInSource(id
);
73 result
.setIdNamespace(idNamespace
);
74 result
.setCitation(reference
);
75 result
.setCitationMicroReference(microReference
);
79 public static IdentifiableSource
NewInstance(OriginalSourceType type
, String id
, String idNamespace
, Reference
80 reference
, String microReference
, String originalInfo
){
81 IdentifiableSource result
= NewInstance(type
, id
, idNamespace
, reference
, microReference
);
82 result
.setOriginalInfo(originalInfo
);
86 public static IdentifiableSource
NewInstance(OriginalSourceType type
, String id
, String idNamespace
, Reference
87 reference
, String microReference
, String originalInfo
, ICdmTarget target
){
88 IdentifiableSource result
= NewInstance(type
, id
, idNamespace
, reference
,
89 microReference
, originalInfo
);
90 result
.setCdmSource(target
);
94 public static IdentifiableSource
NewPrimarySourceInstance(Reference citation
, String microCitation
){
95 IdentifiableSource result
= NewInstance(OriginalSourceType
.PrimaryTaxonomicSource
);
96 result
.setCitation(citation
);
97 result
.setCitationMicroReference(microCitation
);
101 public static IdentifiableSource
NewPrimaryMediaSourceInstance(Reference citation
, String microCitation
){
102 IdentifiableSource result
= NewInstance(OriginalSourceType
.PrimaryMediaSource
);
103 result
.setCitation(citation
);
104 result
.setCitationMicroReference(microCitation
);
108 public static IdentifiableSource
NewAggregationSourceInstance(){
109 IdentifiableSource result
= NewInstance(OriginalSourceType
.Aggregation
);
113 // ******************************** FIELDS ************************************/
117 // ****************** CONSTRUCTOR ********************************/
120 protected IdentifiableSource() {
123 private IdentifiableSource(OriginalSourceType type
) {
127 // ********************** GETTER /SETTER *****************************/
130 public boolean checkEmpty(){
131 return this.checkEmpty(false);
135 public boolean checkEmpty(boolean excludeType
){
137 return super.checkEmpty(excludeType
);
139 //*********************************** CLONE *********************************************************/
143 public IdentifiableSource
clone() throws CloneNotSupportedException
{
144 IdentifiableSource result
= (IdentifiableSource
)super.clone();