KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jcorporate > expresso > core > dbobj > AuditedSecuredDBObject


1 /* ====================================================================
2  * The Jcorporate Apache Style Software License, Version 1.2 05-07-2002
3  *
4  * Copyright (c) 1995-2002 Jcorporate Ltd. All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright
11  * notice, this list of conditions and the following disclaimer.
12  *
13  * 2. Redistributions in binary form must reproduce the above copyright
14  * notice, this list of conditions and the following disclaimer in
15  * the documentation and/or other materials provided with the
16  * distribution.
17  *
18  * 3. The end-user documentation included with the redistribution,
19  * if any, must include the following acknowledgment:
20  * "This product includes software developed by Jcorporate Ltd.
21  * (http://www.jcorporate.com/)."
22  * Alternately, this acknowledgment may appear in the software itself,
23  * if and wherever such third-party acknowledgments normally appear.
24  *
25  * 4. "Jcorporate" and product names such as "Expresso" must
26  * not be used to endorse or promote products derived from this
27  * software without prior written permission. For written permission,
28  * please contact info@jcorporate.com.
29  *
30  * 5. Products derived from this software may not be called "Expresso",
31  * or other Jcorporate product names; nor may "Expresso" or other
32  * Jcorporate product names appear in their name, without prior
33  * written permission of Jcorporate Ltd.
34  *
35  * 6. No product derived from this software may compete in the same
36  * market space, i.e. framework, without prior written permission
37  * of Jcorporate Ltd. For written permission, please contact
38  * partners@jcorporate.com.
39  *
40  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
41  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
42  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
43  * DISCLAIMED. IN NO EVENT SHALL JCORPORATE LTD OR ITS CONTRIBUTORS
44  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
45  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
46  * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
47  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
48  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
49  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
50  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51  * SUCH DAMAGE.
52  * ====================================================================
53  *
54  * This software consists of voluntary contributions made by many
55  * individuals on behalf of the Jcorporate Ltd. Contributions back
56  * to the project(s) are encouraged when you make modifications.
57  * Please send them to support@jcorporate.com. For more information
58  * on Jcorporate Ltd. and its products, please see
59  * <http://www.jcorporate.com/>.
60  *
61  * Portions of this software are based upon other open source
62  * products and are subject to their respective licenses.
63  */

64 package com.jcorporate.expresso.core.dbobj;
65
66 import com.jcorporate.expresso.core.db.DBConnection;
67 import com.jcorporate.expresso.core.db.DBException;
68 import com.jcorporate.expresso.ext.dbobj.AuditLog;
69
70
71 /**
72  * AuditedSecuredDBObject is an extension of SecuredDBObject that always writes
73  * an audit entry to the AuditLog table. The AuditLog table tracks who made the change,
74  * when, to what object. AuditedSecuredDBObject's MUST have a field named AUDITLOG_ID
75  * for these objects to work properly.
76  *
77  * @author Adam Rossi, PlatinumSolutions
78  * <p/>
79  * Modify by Yves Henri AMAIZO <amy_amaizo@compuserve.com>
80  * @since $DatabaseSchema $Date: 2004/11/18 02:03:27 $
81  */

82 public class AuditedSecuredDBObject extends SecuredDBObject {
83
84     /**
85      * Constructor
86      *
87      * @throws DBException if the object cannot be created.
88      */

89     public AuditedSecuredDBObject() throws DBException {
90         super();
91     }
92
93     /**
94      * AuditedSecuredDBObject Constructor Constructor.
95      *
96      * @param theConnection Database connection to communicate with the
97      * database
98      * @throws DBException If the new object cannot be created
99      */

100     public AuditedSecuredDBObject(DBConnection theConnection)
101             throws DBException {
102         super(theConnection);
103     }
104     /* Address(DBConnection) */
105
106     /**
107      * The add method writes an entry to the AuditLog with the ADD code.
108      *
109      * @throws DBException Upon error
110      * <p/>
111      * Modify by Yves Henri AMAIZO <amy_amaizo@compuserve.com>
112      * @since $DatabaseSchema $Date: 2004/11/18 02:03:27 $
113      */

114     public synchronized void add() throws DBException {
115         AuditLog auditLog = new AuditLog();
116         auditLog.setField("AUDITLOG_CODE", "ADD");
117         auditLog.setField("EXPUID", "" + this.getRequestingUid());
118         com.jcorporate.expresso.core.dataobjects.jdbc.JDBCObjectMetaData metadata = this.getJDBCMetaData();
119         auditLog.setField("AUDITLOG_DES",
120                 metadata.getDescription() + " (Table: " + metadata.getTargetSQLTable(this.getDataContext()) + ")");
121         auditLog.add();
122         this.setField("AUDITLOG_ID", auditLog.getField("AUDITLOG_ID"));
123         super.add();
124     }
125
126     /**
127      * The Delete method first writes an entry to the AuditLog table, then
128      * deletes the object.
129      *
130      * @throws DBException upon error
131      * <p/>
132      * Modify by Yves Henri AMAIZO <amy_amaizo@compuserve.com>
133      * @since $DatabaseSchema $Date: 2004/11/18 02:03:27 $
134      */

135     public synchronized void delete() throws DBException {
136         AuditLog auditLog = new AuditLog();
137         auditLog.setField("AUDITLOG_CODE", "DEL");
138         auditLog.setField("EXPUID", "" + this.getRequestingUid());
139         com.jcorporate.expresso.core.dataobjects.jdbc.JDBCObjectMetaData metadata = this.getJDBCMetaData();
140         auditLog.setField("AUDITLOG_DES",
141                 metadata.getDescription() + " (Table: " + metadata.getTargetSQLTable(this.getDataContext()) + ")");
142         auditLog.add();
143         this.setField("AUDITLOG_ID", auditLog.getField("AUDITLOG_ID"));
144         super.delete();
145     }
146
147     /**
148      * The update method first writes an entry to the AuditLog, then updates
149      * the DBObject.
150      *
151      * @throws DBException Upon error
152      * <p/>
153      * Modify by Yves Henri AMAIZO <amy_amaizo@compuserve.com>
154      * @since $DatabaseSchema $Date: 2004/11/18 02:03:27 $
155      */

156     public synchronized void update() throws DBException {
157         AuditLog auditLog = new AuditLog();
158         auditLog.setField("AUDITLOG_CODE", "UPT");
159         auditLog.setField("EXPUID", "" + this.getRequestingUid());
160         com.jcorporate.expresso.core.dataobjects.jdbc.JDBCObjectMetaData metadata = this.getJDBCMetaData();
161         auditLog.setField("AUDITLOG_DES",
162                 metadata.getDescription() + " (Table: " + metadata.getTargetSQLTable(this.getDataContext()) + ")");
163         auditLog.add();
164         this.setField("AUDITLOG_ID", auditLog.getField("AUDITLOG_ID"));
165         super.update();
166     }
167 }
168
Popular Tags