%line | %branch | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
org.apache.torque.om.BaseObject |
|
|
1 | package org.apache.torque.om; |
|
2 | ||
3 | /* |
|
4 | * Licensed to the Apache Software Foundation (ASF) under one |
|
5 | * or more contributor license agreements. See the NOTICE file |
|
6 | * distributed with this work for additional information |
|
7 | * regarding copyright ownership. The ASF licenses this file |
|
8 | * to you under the Apache License, Version 2.0 (the |
|
9 | * "License"); you may not use this file except in compliance |
|
10 | * with the License. You may obtain a copy of the License at |
|
11 | * |
|
12 | * http://www.apache.org/licenses/LICENSE-2.0 |
|
13 | * |
|
14 | * Unless required by applicable law or agreed to in writing, |
|
15 | * software distributed under the License is distributed on an |
|
16 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
|
17 | * KIND, either express or implied. See the License for the |
|
18 | * specific language governing permissions and limitations |
|
19 | * under the License. |
|
20 | */ |
|
21 | ||
22 | import java.io.Serializable; |
|
23 | import java.sql.Connection; |
|
24 | ||
25 | import org.apache.commons.logging.Log; |
|
26 | import org.apache.commons.logging.LogFactory; |
|
27 | ||
28 | import org.apache.torque.TorqueException; |
|
29 | import org.apache.torque.map.TableMap; |
|
30 | ||
31 | /** |
|
32 | * This class contains attributes and methods that are used by all |
|
33 | * business objects within the system. |
|
34 | * |
|
35 | * @author <a href="mailto:frank.kim@clearink.com">Frank Y. Kim</a> |
|
36 | * @author <a href="mailto:jmcnally@collab.net">John D. McNally</a> |
|
37 | * @version $Id: BaseObject.java 516325 2007-03-09 08:03:53Z seade $ |
|
38 | */ |
|
39 | 0 | public abstract class BaseObject implements Persistent, Serializable |
40 | { |
|
41 | /** The constant denoting an unset numeric database identifier. */ |
|
42 | public static final int NEW_ID = -1; |
|
43 | ||
44 | /** |
|
45 | * Shared portion of the error message thrown for methods which |
|
46 | * are not implemented. |
|
47 | */ |
|
48 | private static final String NOT_IMPLEMENTED |
|
49 | = "Not implemented: Method must be overridden if called"; |
|
50 | ||
51 | /** attribute to determine if this object has previously been saved. */ |
|
52 | 0 | private boolean isNew = true; |
53 | ||
54 | /** The unique id for the object which can be used for persistence. */ |
|
55 | 0 | private ObjectKey primaryKey = null; |
56 | ||
57 | /** |
|
58 | * A flag that indicates an object has been modified since it was |
|
59 | * last retrieved from the persistence mechanism. This flag is |
|
60 | * used to determine if this object should be saved to the |
|
61 | * database. We initialize it to true to force new objects to be |
|
62 | * saved. |
|
63 | */ |
|
64 | 0 | private boolean modified = true; |
65 | ||
66 | /** Cache the log to avoid looking it up every time its needed. */ |
|
67 | 0 | private transient Log log = null; |
68 | ||
69 | /** |
|
70 | * getter for the object primaryKey. |
|
71 | * |
|
72 | * @return the object primaryKey as an Object |
|
73 | */ |
|
74 | public ObjectKey getPrimaryKey() |
|
75 | { |
|
76 | 0 | return primaryKey; |
77 | } |
|
78 | ||
79 | /** |
|
80 | * Returns whether the object has been modified. |
|
81 | * |
|
82 | * @return True if the object has been modified. |
|
83 | */ |
|
84 | public boolean isModified() |
|
85 | { |
|
86 | 0 | return modified; |
87 | } |
|
88 | ||
89 | /** |
|
90 | * Returns whether the object has ever been saved. This will |
|
91 | * be false, if the object was retrieved from storage or was created |
|
92 | * and then saved. |
|
93 | * |
|
94 | * @return true, if the object has never been persisted. |
|
95 | */ |
|
96 | public boolean isNew() |
|
97 | { |
|
98 | 0 | return isNew; |
99 | } |
|
100 | ||
101 | /** |
|
102 | * Setter for the isNew attribute. This method will be called |
|
103 | * by Torque-generated children and Peers. |
|
104 | * |
|
105 | * @param b the state of the object. |
|
106 | */ |
|
107 | public void setNew(boolean b) |
|
108 | { |
|
109 | 0 | this.isNew = b; |
110 | 0 | } |
111 | ||
112 | /** |
|
113 | * Sets the PrimaryKey for the object. |
|
114 | * |
|
115 | * @param primaryKey The new PrimaryKey for the object. |
|
116 | * @exception TorqueException This method will not throw any exceptions |
|
117 | * but this allows for children to override the method more easily |
|
118 | */ |
|
119 | public void setPrimaryKey(String primaryKey) throws TorqueException |
|
120 | { |
|
121 | 0 | this.primaryKey = new StringKey(primaryKey); |
122 | 0 | } |
123 | ||
124 | /** |
|
125 | * Sets the PrimaryKey for the object as an Object. |
|
126 | * |
|
127 | * @param primaryKey The new PrimaryKey for the object. |
|
128 | * @exception TorqueException This method will not throw any exceptions |
|
129 | * but this allows for children to override the method more easily |
|
130 | */ |
|
131 | public void setPrimaryKey(SimpleKey[] primaryKey) throws TorqueException |
|
132 | { |
|
133 | 0 | this.primaryKey = new ComboKey(primaryKey); |
134 | 0 | } |
135 | ||
136 | /** |
|
137 | * Sets the PrimaryKey for the object as an Object. |
|
138 | * |
|
139 | * @param primaryKey The new PrimaryKey for the object. |
|
140 | * @exception TorqueException This method will not throw any exceptions |
|
141 | * but this allows for children to override the method more easily |
|
142 | */ |
|
143 | public void setPrimaryKey(ObjectKey primaryKey) throws TorqueException |
|
144 | { |
|
145 | 0 | this.primaryKey = primaryKey; |
146 | 0 | } |
147 | ||
148 | /** |
|
149 | * Sets the modified state for the object. |
|
150 | * |
|
151 | * @param m The new modified state for the object. |
|
152 | */ |
|
153 | public void setModified(boolean m) |
|
154 | { |
|
155 | 0 | modified = m; |
156 | 0 | } |
157 | ||
158 | /** |
|
159 | * Sets the modified state for the object to be false. |
|
160 | */ |
|
161 | public void resetModified() |
|
162 | { |
|
163 | 0 | modified = false; |
164 | 0 | } |
165 | ||
166 | /** |
|
167 | * Retrieves a field from the object by name. Must be overridden if called. |
|
168 | * BaseObject's implementation will throw an Error. |
|
169 | * |
|
170 | * @param field The name of the field to retrieve. |
|
171 | * @return The retrieved field value |
|
172 | * |
|
173 | */ |
|
174 | public Object getByName(String field) |
|
175 | { |
|
176 | 0 | throw new Error("BaseObject.getByName: " + NOT_IMPLEMENTED); |
177 | } |
|
178 | ||
179 | /** |
|
180 | * Set a field in the object by field (Java) name. |
|
181 | * |
|
182 | * @param name field name |
|
183 | * @param value field value |
|
184 | * @return True if value was set, false if not (invalid name / protected |
|
185 | * field). |
|
186 | * @throws IllegalArgumentException if object type of value does not match |
|
187 | * field object type. |
|
188 | * @throws TorqueException If a problem occurs with the set[Field] method. |
|
189 | */ |
|
190 | public boolean setByName(String name, Object value) |
|
191 | throws TorqueException |
|
192 | { |
|
193 | 0 | throw new Error("BaseObject.setByName: " + NOT_IMPLEMENTED); |
194 | } |
|
195 | ||
196 | /** |
|
197 | * Retrieves a field from the object by name passed in as a String. Must be |
|
198 | * overridden if called. BaseObject's implementation will throw an Error. |
|
199 | * |
|
200 | * @param name field name |
|
201 | * @return value of the field |
|
202 | */ |
|
203 | public Object getByPeerName(String name) |
|
204 | { |
|
205 | 0 | throw new Error("BaseObject.getByPeerName: " + NOT_IMPLEMENTED); |
206 | } |
|
207 | ||
208 | /** |
|
209 | * Set field values by Peer Field Name |
|
210 | * |
|
211 | * @param name field name |
|
212 | * @param value field value |
|
213 | * @return True if value was set, false if not (invalid name / protected |
|
214 | * field). |
|
215 | * @throws IllegalArgumentException if object type of value does not match |
|
216 | * field object type. |
|
217 | * @throws TorqueException If a problem occurs with the set[Field] method. |
|
218 | */ |
|
219 | public boolean setByPeerName(String name, Object value) |
|
220 | throws TorqueException |
|
221 | { |
|
222 | 0 | throw new Error("BaseObject.setByPeerName: " + NOT_IMPLEMENTED); |
223 | } |
|
224 | ||
225 | /** |
|
226 | * Retrieves a field from the object by position as specified in a database |
|
227 | * schema for example. Must be overridden if called. BaseObject's |
|
228 | * implementation will throw an Error. |
|
229 | * |
|
230 | * @param pos field position |
|
231 | * @return value of the field |
|
232 | */ |
|
233 | public Object getByPosition(int pos) |
|
234 | { |
|
235 | 0 | throw new Error("BaseObject.getByPosition: " + NOT_IMPLEMENTED); |
236 | } |
|
237 | ||
238 | /** |
|
239 | * Set field values by it's position (zero based) in the XML schema. |
|
240 | * |
|
241 | * @param position The field position |
|
242 | * @param value field value |
|
243 | * @return True if value was set, false if not (invalid position / protected |
|
244 | * field). |
|
245 | * @throws IllegalArgumentException if object type of value does not match |
|
246 | * field object type. |
|
247 | * @throws TorqueException If a problem occurs with the set[Field] method. |
|
248 | */ |
|
249 | public boolean setByPosition(int position, Object value) |
|
250 | throws TorqueException |
|
251 | { |
|
252 | 0 | throw new Error("BaseObject.setByPosition: " + NOT_IMPLEMENTED); |
253 | } |
|
254 | ||
255 | /** |
|
256 | * Compares this with another <code>BaseObject</code> instance. If |
|
257 | * <code>obj</code> is an instance of <code>BaseObject</code>, |
|
258 | * delegates to <code>equals(BaseObject)</code>. Otherwise, returns |
|
259 | * <code>false</code>. |
|
260 | * |
|
261 | * @param obj The object to compare to. |
|
262 | * @return Whether equal to the object specified. |
|
263 | */ |
|
264 | public boolean equals(Object obj) |
|
265 | { |
|
266 | 0 | if (obj != null && obj instanceof BaseObject) |
267 | { |
|
268 | 0 | return equals((BaseObject) obj); |
269 | } |
|
270 | else |
|
271 | { |
|
272 | 0 | return false; |
273 | } |
|
274 | } |
|
275 | ||
276 | /** |
|
277 | * Compares the primary key of this instance with the key of another. |
|
278 | * |
|
279 | * @param bo The object to compare to. |
|
280 | * @return Whether the primary keys are equal and the object have the |
|
281 | * same class. |
|
282 | */ |
|
283 | public boolean equals(BaseObject bo) |
|
284 | { |
|
285 | 0 | if (bo == null) |
286 | { |
|
287 | 0 | return false; |
288 | } |
|
289 | 0 | if (this == bo) |
290 | { |
|
291 | 0 | return true; |
292 | } |
|
293 | 0 | else if (getPrimaryKey() == null || bo.getPrimaryKey() == class="keyword">null) |
294 | { |
|
295 | 0 | return false; |
296 | } |
|
297 | 0 | else if (!getClass().equals(bo.getClass())) |
298 | { |
|
299 | 0 | return false; |
300 | } |
|
301 | else |
|
302 | { |
|
303 | 0 | return getPrimaryKey().equals(bo.getPrimaryKey()); |
304 | } |
|
305 | } |
|
306 | ||
307 | /** |
|
308 | * If the primary key is not <code>null</code>, return the hashcode of the |
|
309 | * primary key. Otherwise calls <code>Object.hashCode()</code>. |
|
310 | * |
|
311 | * @return an <code>int</code> value |
|
312 | */ |
|
313 | public int hashCode() |
|
314 | { |
|
315 | 0 | ObjectKey ok = getPrimaryKey(); |
316 | 0 | if (ok == null) |
317 | { |
|
318 | 0 | return super.hashCode(); |
319 | } |
|
320 | ||
321 | 0 | return ok.hashCode(); |
322 | } |
|
323 | ||
324 | /** |
|
325 | * gets a commons-logging Log based on class name. |
|
326 | * |
|
327 | * @return a <code>Log</code> to write log to. |
|
328 | */ |
|
329 | protected Log getLog() |
|
330 | { |
|
331 | 0 | if (log == null) |
332 | { |
|
333 | 0 | log = LogFactory.getLog(getClass().getName()); |
334 | } |
|
335 | 0 | return log; |
336 | } |
|
337 | ||
338 | /** |
|
339 | * @see org.apache.torque.om.Persistent#save() |
|
340 | */ |
|
341 | public abstract void save() throws Exception; |
|
342 | ||
343 | /** |
|
344 | * @see org.apache.torque.om.Persistent#save(String) |
|
345 | */ |
|
346 | public abstract void save(String dbName) throws Exception; |
|
347 | ||
348 | /** |
|
349 | * @see org.apache.torque.om.Persistent#save(Connection) |
|
350 | */ |
|
351 | public abstract void save(Connection con) throws Exception; |
|
352 | ||
353 | /** |
|
354 | * Retrieves the TableMap object related to this Table data. |
|
355 | * Must be overridden in generated classes. If BaseObject's |
|
356 | * implementation is called it will throw an Error. |
|
357 | * |
|
358 | * @return The associated TableMap object. |
|
359 | */ |
|
360 | public TableMap getTableMap() throws TorqueException |
|
361 | { |
|
362 | 0 | throw new Error("BaseObject.getTableMap: " + NOT_IMPLEMENTED); |
363 | } |
|
364 | } |
This report is generated by jcoverage, Maven and Maven JCoverage Plugin. |