1 /*
2 * $Source: /usr/cvsroot/melati/melati/src/main/java/org/melati/PoemContext.java,v $
3 * $Revision: 1.11 $
4 *
5 * Copyright (C) 2005 Tim Pizey
6 *
7 * Part of Melati (http://melati.org), a framework for the rapid
8 * development of clean, maintainable web applications.
9 *
10 * Melati is free software; Permission is granted to copy, distribute
11 * and/or modify this software under the terms either:
12 *
13 * a) the GNU General Public License as published by the Free Software
14 * Foundation; either version 2 of the License, or (at your option)
15 * any later version,
16 *
17 * or
18 *
19 * b) any version of the Melati Software License, as published
20 * at http://melati.org
21 *
22 * You should have received a copy of the GNU General Public License and
23 * the Melati Software License along with this program;
24 * if not, write to the Free Software Foundation, Inc.,
25 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA to obtain the
26 * GNU General Public License and visit http://melati.org to obtain the
27 * Melati Software License.
28 *
29 * Feel free to contact the Developers of Melati (http://melati.org),
30 * if you would like to work out a different arrangement than the options
31 * outlined here. It is our intention to allow Melati to be used by as
32 * wide an audience as possible.
33 *
34 * This program is distributed in the hope that it will be useful,
35 * but WITHOUT ANY WARRANTY; without even the implied warranty of
36 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
37 * GNU General Public License for more details.
38 *
39 * Contact details for copyright holder:
40 *
41 * Tim Pizey <timp At paneris.org>
42 * http://paneris.org/~timp
43 */
44
45 package org.melati;
46
47 import org.melati.poem.Persistent;
48 import org.melati.poem.util.StringUtils;
49
50
51 /**
52 * Holds the names of the database, table and method and the value of the
53 * TROID for a POEM session.
54 * A PoemContext can specify an individual database record, a table or the
55 * whole database.
56 */
57
58 public class PoemContext implements Cloneable {
59
60 /** The database in use */
61 String logicalDatabase;
62 /** The table in use */
63 String table;
64 /** The troid in use */
65 Integer troid;
66 /** The method in use */
67 String method;
68
69 /**
70 * Empty constructor.
71 * If you use this then you have to populate the object by hand.
72 */
73 public PoemContext() { }
74
75 /**
76 * Constructor.
77 * @param logicalDatabase the name of a logical database
78 * @param table the name of the table we are dealing with table
79 * @param troid the Table Row Object ID we are dealing with
80 * @param method what we are doing to this object
81 */
82 public PoemContext(String logicalDatabase, String table, Integer troid,
83 String method) {
84 this.logicalDatabase = logicalDatabase;
85 this.table = table;
86 this.troid = troid;
87 this.method = method;
88 }
89
90 public PoemContext(Persistent p) {
91 this(p, null);
92 }
93 public PoemContext(Persistent p, String method) {
94 this.logicalDatabase = p.getDatabase().getName();
95 this.table = p.getTable().getName();
96 this.troid = p.getTroid();
97 this.method = method;
98 }
99
100 /**
101 * @return a string representation of the state of this class
102 */
103 public String toString() {
104 return "logicalDatabase = " + logicalDatabase + ", " +
105 "table = " + table + ", " +
106 "troid = " + troid + ", " +
107 "method = " + method;
108 }
109
110 /**
111 * Clone me.
112 * @return a duplicate of this
113 * @throws CloneNotSupportedException cannot be thrown
114 */
115 public Object clone() throws CloneNotSupportedException {
116 return super.clone();
117 }
118
119
120 /**
121 * @return the logical database name.
122 */
123 public String getLogicalDatabase() {
124 return logicalDatabase;
125 }
126
127 /**
128 * @return the table name.
129 */
130 public String getTable() {
131 return table;
132 }
133
134 /**
135 * @return the TROID.
136 */
137 public Integer getTroid() {
138 return troid;
139 }
140
141 /**
142 * @return the method.
143 */
144 public String getMethod() {
145 return method;
146 }
147 /**
148 * @param logicalDatabase The logicalDatabase to set.
149 */
150 public void setLogicalDatabase(String logicalDatabase) {
151 this.logicalDatabase = logicalDatabase;
152 }
153 /**
154 * @param method The method to set.
155 */
156 public void setMethod(String method) {
157 this.method = StringUtils.nulled(method);
158 }
159 /**
160 * @param table The table to set.
161 */
162 public void setTable(String table) {
163 this.table = StringUtils.nulled(table); // Can be empty string, but bad practice
164 }
165 /**
166 * @param troid The troid to set.
167 */
168 public void setTroid(Integer troid) {
169 this.troid = troid;
170 }
171 }