1 package eu
.etaxonomy
.cdm
.model
.common
;
3 import java
.beans
.PropertyChangeListener
;
4 import java
.beans
.PropertyChangeSupport
;
5 import java
.beans
.PropertyChangeEvent
;
6 import java
.io
.Serializable
;
7 import java
.util
.Calendar
;
10 import javax
.persistence
.Basic
;
11 import javax
.persistence
.Entity
;
12 import javax
.persistence
.FetchType
;
13 import javax
.persistence
.GeneratedValue
;
14 import javax
.persistence
.Id
;
15 import javax
.persistence
.Inheritance
;
16 import javax
.persistence
.InheritanceType
;
17 import javax
.persistence
.ManyToOne
;
18 import javax
.persistence
.MappedSuperclass
;
19 import javax
.persistence
.Table
;
20 import javax
.persistence
.Temporal
;
21 import javax
.persistence
.TemporalType
;
22 import javax
.persistence
.Transient
;
24 import org
.hibernate
.annotations
.Cascade
;
25 import org
.hibernate
.annotations
.CascadeType
;
27 import eu
.etaxonomy
.cdm
.model
.agent
.Person
;
31 public abstract class CdmBase
implements Serializable
{
32 private PropertyChangeSupport propertyChangeSupport
= new PropertyChangeSupport(this);
35 private Calendar created
;
36 private Person createdBy
;
39 this.uuid
= UUID
.randomUUID();
40 this.created
= Calendar
.getInstance();
44 public void addPropertyChangeListener(PropertyChangeListener listener
) {
45 propertyChangeSupport
.addPropertyChangeListener(listener
);
48 public void addPropertyChangeListener(String propertyName
, PropertyChangeListener listener
) {
49 propertyChangeSupport
.addPropertyChangeListener(propertyName
, listener
);
52 public void removePropertyChangeListener(String propertyName
, PropertyChangeListener listener
) {
53 propertyChangeSupport
.removePropertyChangeListener(propertyName
, listener
);
56 public void removePropertyChangeListener(PropertyChangeListener listener
) {
57 propertyChangeSupport
.removePropertyChangeListener(listener
);
61 public void hasListeners(String propertyName
) {
62 propertyChangeSupport
.hasListeners(propertyName
);
65 public void firePropertyChange(String property
, String oldval
, String newval
) {
66 propertyChangeSupport
.firePropertyChange(property
, oldval
, newval
);
68 public void firePropertyChange(String property
, int oldval
, int newval
) {
69 propertyChangeSupport
.firePropertyChange(property
, oldval
, newval
);
71 public void firePropertyChange(String property
, float oldval
, float newval
) {
72 propertyChangeSupport
.firePropertyChange(property
, oldval
, newval
);
74 public void firePropertyChange(String property
, boolean oldval
, boolean newval
) {
75 propertyChangeSupport
.firePropertyChange(property
, oldval
, newval
);
77 public void firePropertyChange(String property
, Object oldval
, Object newval
) {
78 propertyChangeSupport
.firePropertyChange(property
, oldval
, newval
);
80 public void firePropertyChange(PropertyChangeEvent evt
) {
81 propertyChangeSupport
.firePropertyChange(evt
);
85 @GeneratedValue(generator
= "system-increment")
89 public void setId(int id
) {
94 public UUID
getUuid() {
97 public void setUuid(UUID uuid
) {
102 @Temporal(TemporalType
.TIMESTAMP
)
103 @Basic(fetch
= FetchType
.LAZY
)
104 public Calendar
getCreated() {
107 public void setCreated(Calendar created
) {
108 this.created
= created
;
112 @ManyToOne(fetch
=FetchType
.LAZY
)
113 @Cascade( { CascadeType
.SAVE_UPDATE
})
114 public Person
getCreatedBy() {
115 return this.createdBy
;
117 public void setCreatedBy(Person createdBy
) {
118 this.createdBy
= createdBy
;
123 // equals if UUID and created timestamp are the same!
124 public boolean equals(Object obj
) {
125 if (CdmBase
.class.isAssignableFrom(obj
.getClass())){
126 CdmBase cdmObj
= (CdmBase
)obj
;
127 if (cdmObj
.getUuid().equals(this.getUuid()) && cdmObj
.getCreated().equals(this.getCreated())){
135 public String
toString() {
136 return this.getClass().getSimpleName()+"<"+this.getUuid()+">";