1 /*
2 * The SmartWeb Framework
3 * Copyright (C) 2004-2006
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 *
19 * For further informations on the SmartWeb Framework please visit
20 *
21 * http://smartweb.sourceforge.net
22 */
23
24 package net.smartlab.web.history;
25
26 import java.io.Serializable;
27 import java.sql.Timestamp;
28
29 /**
30 * TODO documentation
31 *
32 * @author rlogiacco
33 */
34 public interface HistorizedBusinessObject {
35
36 /**
37 * Returns the id.
38 *
39 * @return the id.
40 * @hibernate.id
41 * @uml.property name="id"
42 */
43 public HistoryId getHistoryId();
44
45 /**
46 * Sets the id.
47 *
48 * @param historyId the id to set.
49 * @uml.property name="id"
50 */
51 public void setHistoryId(HistoryId historyId);
52
53 /**
54 * TODO documentation
55 *
56 * @return
57 * @hibernate.property column="modified"
58 */
59 public Timestamp getLastModified();
60
61 /**
62 * TODO documentation
63 *
64 * @param timestamp
65 */
66 public void setLastModified(Timestamp timestamp);
67
68 public static class HistoryId implements Serializable {
69
70 private static final long serialVersionUID = -1087450948763335029L;
71
72 /**
73 * The reference part of this identifier.
74 *
75 * @uml.property name="ref"
76 */
77 private Serializable ref;
78
79 private Timestamp lastModified;
80
81
82 /**
83 * A reference back to the primary key of the unlocalized referent
84 * object.
85 *
86 * @return returns the <code>reference</code> part.
87 * @hibernate.property column="`ref`"
88 * @uml.property name="ref"
89 */
90 public Serializable getRef() {
91 return ref;
92 }
93
94 /**
95 * TODO documentation
96 *
97 * @param ref the <code>ref</code> part to set.
98 * @uml.property name="ref"
99 */
100 public void setRef(Serializable ref) {
101 this.ref = ref;
102 }
103
104 /**
105 * TODO documentation
106 *
107 * @return returns the <code>lastModified</code> part.
108 * @hibernate.property column="`modified`"
109 * @uml.property name="lastModified"
110 */
111 public Timestamp getLastModified() {
112 return lastModified;
113 }
114
115 /**
116 * TODO documentation
117 *
118 * @param lastModified the <code>lastModified</code> part to set.
119 * @uml.property name="lastModified"
120 */
121 public void setLastModified(Timestamp lastModified) {
122 this.lastModified = lastModified;
123 }
124
125 /**
126 * @see java.lang.Object#equals(java.lang.Object)
127 */
128 public boolean equals(Object obj) {
129 if (obj instanceof HistoryId) {
130 return ((HistoryId)obj).ref.equals(ref) && ((HistoryId)obj).lastModified.equals(lastModified);
131 } else {
132 return false;
133 }
134 }
135
136 /**
137 * @see java.lang.Object#hashCode()
138 */
139 public int hashCode() {
140 return ref.hashCode() + (lastModified.hashCode() >> 29);
141 }
142
143 /**
144 * @see java.lang.Object#toString()
145 */
146 public String toString() {
147 return "ref = " + ref.toString() + " modified = " + lastModified;
148 }
149 }
150 }