root/trunk/cdmlib/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/DescriptionElementSource.java

Revision 11651, 6.8 kB (checked in by k.luther, 14 months ago)

clone methods for common

Line 
1// $Id$
2/**
3* Copyright (C) 2007 EDIT
4* European Distributed Institute of Taxonomy
5* http://www.e-taxonomy.eu
6*
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.
9*/
10
11package eu.etaxonomy.cdm.model.common;
12
13import javax.persistence.Column;
14import javax.persistence.Entity;
15import javax.persistence.FetchType;
16import javax.persistence.JoinColumn;
17import javax.persistence.ManyToOne;
18import javax.xml.bind.annotation.XmlElement;
19import javax.xml.bind.annotation.XmlIDREF;
20import javax.xml.bind.annotation.XmlSchemaType;
21import javax.xml.bind.annotation.XmlType;
22
23import org.apache.log4j.Logger;
24import org.hibernate.annotations.Any;
25import org.hibernate.annotations.Cascade;
26import org.hibernate.annotations.CascadeType;
27import org.hibernate.envers.Audited;
28import org.hibernate.envers.NotAudited;
29
30import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
31import eu.etaxonomy.cdm.model.name.TaxonNameBase;
32import eu.etaxonomy.cdm.model.reference.Reference;
33
34/**
35 * This class represents an {@link eu.etaxonomy.cdm.model.common.IOriginalSource IOriginalSource}
36 * that can be used with {@link eu.etaxonomy.cdm.model.description.DescriptionElementBase description elements}.
37 * Additionally to the core functionally of IOriginalSource a {@link eu.etaxonomy.cdm.model.name.TaxonNameBase taxon name}
38 * can be stored that points to the name used in the source. This is needed because description always belong
39 * to accepted taxa while the referenced citations may use synonym names.
40 * </BR>
41 * The use of "originalNameString" within a DescriptionElementSource has to be discussed.
42 * In general this string is to be used for different representations of the sourced object. In this classes
43 * context it could also stand for the string representation of the taxon name used in the source. This
44 * may make sense if the taxon name is not available in the CDM and the user for some reason does not want
45 * to create a new ful {@link eu.etaxonomy.cdm.model.name.TaxonNameBase taxon name}.
46 * 
47 * @author a.mueller
48 * @created 18.09.2009
49 * @version 1.0
50 */
51@XmlType(name = "DescriptionElementSource", propOrder = {
52            "sourcedObj",
53            "nameUsedInSource"
54        })
55@Entity
56@Audited
57public class DescriptionElementSource extends OriginalSourceBase<DescriptionElementBase>{
58        private static final long serialVersionUID = -8487673428764273806L;
59        @SuppressWarnings("unused")
60        private static final Logger logger = Logger.getLogger(DescriptionElementSource.class);
61       
62
63        /**
64         * Factory method
65         * @return
66         */
67        public static DescriptionElementSource NewInstance(){
68                return new DescriptionElementSource();
69        }
70       
71        public static DescriptionElementSource NewInstance(String id){
72                DescriptionElementSource result = new DescriptionElementSource();
73                result.setIdInSource(id);
74                return result;
75        }
76
77        public static DescriptionElementSource NewInstance(String id, String idNamespace){
78                DescriptionElementSource result = NewInstance(id);
79                result.setIdNamespace(idNamespace);
80                return result;
81        }
82       
83        public static DescriptionElementSource NewInstance(String id, String idNamespace, Reference citation){
84                DescriptionElementSource result = NewInstance(id, idNamespace);
85                result.setCitation(citation);           
86                return result;
87        }
88
89        public static DescriptionElementSource NewInstance(String id, String idNamespace, Reference citation, String microCitation){
90                DescriptionElementSource result = NewInstance(id, idNamespace);
91                result.setCitation(citation);
92                result.setCitationMicroReference(microCitation);
93                return result;
94        }
95       
96        public static DescriptionElementSource NewInstance(String id, String idNamespace, Reference citation, String microReference, TaxonNameBase nameUsedInSource, String originalNameString){
97                DescriptionElementSource result = NewInstance(id, idNamespace, citation, microReference);
98                result.setNameUsedInSource(nameUsedInSource);
99                result.setOriginalNameString(originalNameString);
100                return result;
101        }
102       
103        public static DescriptionElementSource NewInstance(Reference citation, String microCitation){
104                DescriptionElementSource result = NewInstance();
105                result.setCitation(citation);
106                result.setCitationMicroReference(microCitation);
107                return result;
108        }
109
110        public static DescriptionElementSource NewInstance(Reference citation, String microReference, TaxonNameBase nameUsedInSource, String originalNameString){
111                DescriptionElementSource result = NewInstance(citation, microReference);
112                result.setNameUsedInSource(nameUsedInSource);
113                result.setOriginalNameString(originalNameString);
114                return result;
115        }
116
117       
118       
119        @XmlElement(name = "SourcedObject")
120    @XmlIDREF
121    @XmlSchemaType(name = "IDREF")
122        @Any(metaDef = "CdmBase",
123                 metaColumn=@Column(name = "sourcedObj_type"),
124                 fetch = FetchType.LAZY,
125                 optional = false)
126        @JoinColumn(name = "sourcedObj_id")
127        @NotAudited
128        private DescriptionElementBase sourcedObj;
129       
130        @XmlElement(name = "nameUsedInSource")
131        @XmlIDREF
132        @XmlSchemaType(name = "IDREF")
133        @ManyToOne(fetch = FetchType.LAZY)
134        @Cascade({CascadeType.SAVE_UPDATE})
135        private TaxonNameBase nameUsedInSource;
136       
137        private DescriptionElementSource(){
138               
139        }
140       
141       
142// **************************  GETTER / SETTER ****************************************************/
143       
144       
145        /* (non-Javadoc)
146         * @see eu.etaxonomy.cdm.model.common.IOriginalSource#getSourcedObj()
147         */
148        public DescriptionElementBase getSourcedObj() {
149                return sourcedObj;
150        }
151       
152        /* (non-Javadoc)
153         * @see eu.etaxonomy.cdm.model.common.IOriginalSource#setSourcedObj(eu.etaxonomy.cdm.model.common.ISourceable)
154         */
155        public void setSourcedObj(DescriptionElementBase sourcedObj) {
156                this.sourcedObj = sourcedObj;
157        }
158       
159       
160        /**
161         * @return the taxonNameUsedInSource
162         */
163        public TaxonNameBase getNameUsedInSource() {
164                return nameUsedInSource;
165        }
166
167        /**
168         * @param nameUsedInReference the nameUsedInReference to set
169         */
170        public void setNameUsedInSource(TaxonNameBase nameUsedInSource) {
171                this.nameUsedInSource = nameUsedInSource;
172        }
173
174
175//*********************************** CLONE *********************************************************/
176       
177       
178        /**
179         * Clones this original source and sets the clones sourced object to 'sourceObj'
180         * @see java.lang.Object#clone()
181         */
182        public DescriptionElementSource clone(DescriptionElementBase sourcedObj) throws CloneNotSupportedException{
183                DescriptionElementSource result = (DescriptionElementSource)clone();
184                result.setSourcedObj(sourcedObj);
185                return result;
186        }
187       
188                 
189        /* (non-Javadoc)
190         * @see eu.etaxonomy.cdm.model.common.OriginalSourceBase#clone()
191         * @see java.lang.Object#clone()
192         */
193        @Override
194        public Object clone() throws CloneNotSupportedException{
195                DescriptionElementSource result = (DescriptionElementSource)super.clone();
196               
197                //no changes to: sourcedObj
198                return result;
199        }
200
201       
202       
203}
Note: See TracBrowser for help on using the browser.