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
.occurrence
;
13 import eu
.etaxonomy
.cdm
.model
.agent
.Agent
;
14 import eu
.etaxonomy
.cdm
.model
.reference
.ReferenceBase
;
15 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
16 import org
.apache
.log4j
.Logger
;
17 import org
.hibernate
.annotations
.Cascade
;
18 import org
.hibernate
.annotations
.CascadeType
;
20 import eu
.etaxonomy
.cdm
.model
.common
.EventBase
;
24 import javax
.persistence
.*;
29 * @created 08-Nov-2007 13:06:21
32 public class DeterminationEvent
extends EventBase
{
33 private static final Logger logger
= Logger
.getLogger(DeterminationEvent
.class);
35 private SpecimenOrObservationBase identifiedUnit
;
37 private DeterminationModifier modifier
;
38 private boolean preferredFlag
;
39 private Set
<ReferenceBase
> setOfReferences
= getNewReferencesSet();
47 public static DeterminationEvent
NewInstance(){
48 return new DeterminationEvent();
54 protected DeterminationEvent() {
59 @Cascade( { CascadeType
.SAVE_UPDATE
})
60 public DeterminationModifier
getModifier() {
64 public void setModifier(DeterminationModifier modifier
) {
65 this.modifier
= modifier
;
69 @Cascade( { CascadeType
.SAVE_UPDATE
})
70 public Taxon
getTaxon(){
78 public void setTaxon(Taxon taxon
){
84 public Calendar
getIdentificationDate(){
85 return this.getTimeperiod().getStart();
90 * @param identificationDate identificationDate
92 public void setIdentificationDate(Calendar identificationDate
){
93 this.getTimeperiod().setStart(identificationDate
);
97 public Agent
getDeterminer() {
98 return this.getActor();
100 public void setDeterminer(Agent determiner
) {
101 this.setActor(determiner
);
105 @Cascade( { CascadeType
.SAVE_UPDATE
})
106 public SpecimenOrObservationBase
getIdentifiedUnit() {
107 return identifiedUnit
;
110 public void setIdentifiedUnit(SpecimenOrObservationBase identifiedUnit
) {
111 this.identifiedUnit
= identifiedUnit
;
114 public boolean getPreferredFlag() {
115 return preferredFlag
;
118 public void setPreferredFlag(boolean preferredFlag
) {
119 this.preferredFlag
= preferredFlag
;
123 private static Set
<ReferenceBase
> getNewReferencesSet(){
124 return new HashSet
<ReferenceBase
>();
128 @Cascade( { CascadeType
.SAVE_UPDATE
})
129 public Set
<ReferenceBase
> getReferences() {
130 return setOfReferences
;
133 public void setReferences(Set
<ReferenceBase
> references
) {
134 this.setOfReferences
= references
;
137 public void addReference(ReferenceBase reference
) {
138 this.setOfReferences
.add(reference
);
141 //*********** CLONE **********************************/
144 * Clones <i>this</i> determination event. This is a shortcut that enables to
145 * create a new instance that differs only slightly from <i>this</i> determination event
146 * by modifying only some of the attributes.<BR>
147 * This method overrides the clone method from {@link EventBase EventBase}.
149 * @see EventBase#clone()
150 * @see java.lang.Object#clone()
153 public DeterminationEvent
clone(){
155 DeterminationEvent result
= (DeterminationEvent
)super.clone();
157 result
.setIdentifiedUnit(this.getIdentifiedUnit());
159 result
.setModifier(this.getModifier());
161 result
.setTaxon(this.getTaxon()); //TODO
162 //no changes to: preferredFlag
164 } catch (CloneNotSupportedException e
) {
165 logger
.warn("Object does not implement cloneable");