01: package com.xoetrope.pm;
02:
03: import java.util.Hashtable;
04:
05: /**
06: * A support class for helping manage project related objects
07: *
08: * <p> Copyright (c) Xoetrope Ltd., 2001-2006, This software is licensed under
09: * the GNU Public License (GPL), please see license.txt for more details. If
10: * you make commercial use of this software you must purchase a commercial
11: * license from Xoetrope.</p>
12: * <p> $Revision: 1.2 $</p>
13: */
14: public class ProjectManagementObject implements Cloneable {
15: protected long id;
16: protected int revisionNumber;
17: protected int versionNumber;
18: private static Hashtable typeIds;
19: protected String typeName;
20:
21: /**
22: * Construct a new managed object
23: * @param typename the type or category of object to be managed
24: */
25: public ProjectManagementObject(String typename) {
26: typeName = typename;
27: id = getNextId(typeName);
28: revisionNumber = 0;
29: versionNumber = 0;
30: }
31:
32: /**
33: * Get the next id for the category or type of managed object
34: * @param typeName the type or category of object being managed
35: * @return the next available id
36: */
37: public long getNextId(String typeName) {
38: if (typeIds == null)
39: typeIds = new Hashtable();
40:
41: Long id = (Long) typeIds.get(typeName);
42: if (id == null)
43: id = new Long(0l);
44:
45: long value = id.longValue();
46: typeIds.put(typeName, new Long(++value));
47:
48: return value;
49: }
50:
51: /**
52: * Get the version number, the version numbering system starts at zero
53: * @return the version number
54: */
55: public int getVersionNumber() {
56: return versionNumber;
57: }
58:
59: /**
60: * Get the revision number, the revision numbering system starts at zero
61: * @return the revision number
62: */
63: public int getRevisionNumber() {
64: return revisionNumber;
65: }
66:
67: /**
68: * Set the new version number. Resets the revision number to zero.
69: * @param newVersion the new number
70: */
71: public void setVersionNumber(int newVersion) {
72: versionNumber = newVersion;
73: revisionNumber = 0;
74: }
75:
76: /**
77: * Set the new revision number
78: * @param newRevision the new number
79: */
80: public void setRevisionNumber(int newRevision) {
81: revisionNumber = newRevision;
82: }
83:
84: /**
85: * Increments the revision number
86: */
87: public void revise() {
88: revisionNumber++;
89: }
90: }
|