1 /***
2 * The contents of this file are subject to the Mozilla Public
3 * License Version 1.1 (the "License"); you may not use this file
4 * except in compliance with the License. You may obtain a copy of
5 * the License at http://www.mozilla.org/MPL/
6 *
7 * Software distributed under the License is distributed on an "AS
8 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
9 * implied. See the License for the specific language governing
10 * rights and limitations under the License.
11 *
12 * The Original Code is pow2ACL library.
13 *
14 * The Initial Owner of the Original Code is Power Of Two S.R.L.
15 * Portions created by Power Of Two S.R.L. are Copyright (C) Power Of Two S.R.L.
16 * All Rights Reserved.
17 *
18 * Contributor(s):
19 */
20
21 package com.pow2.dbforms;
22
23
24 import java.sql.Connection;
25
26 import org.apache.log4j.Category;
27
28 import org.dbforms.config.FieldValue;
29 import org.dbforms.config.FieldValues;
30 import org.dbforms.config.ValidationException;
31 import org.dbforms.event.DbEventInterceptorSupport;
32
33 import com.pow2.dao.DAO;
34 import com.pow2.util.Util;
35
36 /***
37 * DbForm interceptor (hook up class).
38 * <br>
39 * <b>Note: do not close</b> connection objects used in DbEventInterceptor methods.
40 *
41 * @author Luca Fossato
42 * @created 10 maggio 2002
43 */
44 public class Interceptor extends DbEventInterceptorSupport
45 {
46 /*** Log4j category */
47 protected static Category cat = Category.getInstance(Interceptor.class);
48
49 private static DAO dao = DAO.instance();
50
51
52 /***
53 * Delete a record with a non composite key from the input table.
54 *
55 * @param con the JDBC connection object
56 * @param fieldValues the fieldValues object taken from the interceptor interface
57 * @param tableName the table name of the record to delete
58 * @param keyFieldName the name of the NON composite key field
59 * @param isKeyAString yes if the key value type is string; false otherwise
60 *
61 * @return the opertaion code value specified by the dbForms' interceptor interface
62 * @throws ValidationException if any error occurs
63 */
64 protected int delete(Connection con,
65 FieldValues fieldValues,
66 String tableName,
67 String keyFieldName,
68 boolean isKeyAString)
69 throws ValidationException
70 {
71 FieldValue keyFieldValue = null;
72 int returnCode = GRANT_OPERATION;
73
74 keyFieldValue = fieldValues.get(keyFieldName);
75
76 if (keyFieldValue != null)
77 {
78 final String keyValue = keyFieldValue.getFieldValue();
79 String cond = (keyFieldName + " = ");
80 cond += isKeyAString ? Util.dbString(keyValue) : keyValue;
81 returnCode = delete(tableName, cond, con);
82 }
83 else
84 {
85 String errStr = ("cannot retrieve a keyFieldValue using keyField " + keyFieldName);
86 cat.error(errStr);
87 throw new ValidationException(errStr);
88 }
89
90 return returnCode;
91 }
92
93
94 /***
95 * Delete all the records of the input table that match the input condition.
96 *
97 * @param tableName the name of the database table
98 * @param cond the SQL condition string (a WHERE clause without the 'where' world)
99 * @param con the connection object
100 * @return GRANT_OPERATION if the delete function is successfull
101 * @exception ValidationException if any error occurs
102 */
103 protected int delete(String tableName,
104 String cond,
105 Connection con)
106 throws ValidationException
107 {
108 try
109 {
110 dao.delete(tableName, cond, con);
111 }
112 catch (Exception e)
113 {
114 throw new ValidationException(e.getMessage());
115 }
116
117 return GRANT_OPERATION;
118 }
119
120
121 /***
122 * Return a new unique key.
123 *
124 * @return a new unique key
125 * @exception ValidationException if any error occurs
126 */
127 protected long getNewKey() throws ValidationException
128 {
129 try
130 {
131 return dao.getNewKey();
132 }
133 catch (Exception e)
134 {
135 throw new ValidationException(e.getMessage());
136 }
137 }
138 }