KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > manentia > kasai > audit > AuditHandler


1 /*
2  * AuditHandler.java
3  *
4  * Created on June 25, 2004, 6:11 PM
5  */

6
7 package org.manentia.kasai.audit;
8
9 import com.koala.commons.NonCriticalException;
10 import com.koala.commons.audit.AuditBean;
11 import com.koala.commons.log.Log;
12 import com.koala.commons.xml.XMLUtil;
13 import java.sql.SQLException JavaDoc;
14 import java.text.DateFormat JavaDoc;
15 import java.text.SimpleDateFormat JavaDoc;
16 import java.util.*;
17 import java.util.logging.Level JavaDoc;
18 import org.apache.commons.lang.StringUtils;
19 import org.apache.commons.lang.exception.ExceptionUtils;
20 import org.manentia.kasai.exceptions.DataAccessException;
21 import org.manentia.kasai.util.Constants;
22 import org.manentia.kasai.exceptions.CannotAuditException;
23 import org.manentia.kasai.exceptions.InvalidAttributesException;
24 import org.w3c.dom.Document JavaDoc;
25
26 /**
27  *
28  * @author rzuasti
29  */

30 public class AuditHandler {
31     
32     public static Collection listEntries(java.util.Date JavaDoc dateFrom,
33                                         java.util.Date JavaDoc dateTo,
34                                         java.lang.String JavaDoc user,
35                                         java.lang.String JavaDoc operation) throws NonCriticalException, DataAccessException {
36         
37         Log.getInstance(Constants.PROPERTY_FILE).write(AuditHandler.class.getName(), "listEntries",
38             "Enter (dateFrom=" + dateToString(dateFrom) +
39             ", dateTo=" + dateToString(dateTo) +
40             ", user=" + StringUtils.defaultString(user, "<null>") +
41             ", operation=" + StringUtils.defaultString(operation, "<null>") + ")"
42             , java.util.logging.Level.INFO);
43
44         ResourceBundle res = ResourceBundle.getBundle(Constants.PROPERTY_FILE);
45         int maxRecords = Integer.parseInt(res.getString("core.max.list.records"));
46         Collection result = null;
47         
48         try {
49              result = AuditBean.list(dateFrom, dateTo, user, operation, "audit", Constants.PROPERTY_FILE, Constants.DATABASE_SOURCE, null, null, maxRecords);
50         }catch (SQLException JavaDoc sqle){
51             Log.getInstance(Constants.PROPERTY_FILE).write (AuditHandler.class.getName(), "listEntries", ExceptionUtils.getStackTrace(sqle),Level.SEVERE);
52             throw new DataAccessException(sqle);
53         }
54         
55         Log.getInstance(Constants.PROPERTY_FILE).write(AuditHandler.class.getName(), "listEntries",
56             "Exit", java.util.logging.Level.INFO);
57         
58         return result;
59     }
60     
61     public static void createEntry(
62         String JavaDoc userId,
63         int returnCode,
64         String JavaDoc errorDescription,
65         long duration,
66         String JavaDoc clientIP,
67         String JavaDoc operation,
68         String JavaDoc objectID,
69         Document JavaDoc transactionData) throws CannotAuditException {
70     
71             Log.getInstance(Constants.PROPERTY_FILE).write(AuditHandler.class.getName(), "createEntry",
72                 "Enter (userId="+StringUtils.defaultString(userId, "<null>")+
73                 ", returnCode=" + returnCode +
74                 ", errorDescription="+StringUtils.defaultString(errorDescription, "<null>")+
75                 ", duration=" + duration +
76                 ", clientIP="+StringUtils.defaultString(clientIP, "<null>")+
77                 ", operation="+StringUtils.defaultString(operation, "<null>")+
78                 ", objectID="+StringUtils.defaultString(objectID, "<null>")+
79                 ", transactionData="+ (transactionData==null ? "<null>" : "<data>")
80                 , java.util.logging.Level.INFO);
81     
82             if (StringUtils.isEmpty(userId)){
83                 Log.getInstance(Constants.PROPERTY_FILE).write(AuditHandler.class.getName(), "createEntry",
84                     "User was not specified", java.util.logging.Level.SEVERE);
85                 
86                 throw new CannotAuditException(AuditHandler.class.getName() + ".createAuditEntry.noUser");
87             }
88                             
89             if (StringUtils.isEmpty(operation)){
90                 Log.getInstance(Constants.PROPERTY_FILE).write(AuditHandler.class.getName(), "createEntry",
91                     "Operation was not specified", java.util.logging.Level.SEVERE);
92                 
93                 throw new CannotAuditException(AuditHandler.class.getName() + ".createAuditEntry.noOperation");
94             }
95                 
96             AuditBean auditBean = new AuditBean("kasai_audit", Constants.PROPERTY_FILE, Constants.DATABASE_SOURCE, null, null);
97             auditBean.setClientIP(clientIP);
98             auditBean.setDateTime(new java.util.Date JavaDoc());
99             auditBean.setDuration(duration);
100             auditBean.setErrorDescription(errorDescription);
101             auditBean.setOperation(operation);
102             auditBean.setReturnCode(returnCode);
103             auditBean.setUser(userId);
104             auditBean.setProperty("object_id", objectID);
105             auditBean.setProperty("transaction_data", XMLUtil.documentToString(transactionData));
106             
107             try {
108                 auditBean.commit();
109             } catch (NonCriticalException nce){
110                 throw new CannotAuditException(nce);
111             } catch (SQLException JavaDoc sqle){
112                 Log.getInstance(Constants.PROPERTY_FILE).write (AuditHandler.class.getName(), "createEntry", ExceptionUtils.getStackTrace(sqle),Level.SEVERE);
113                 throw new CannotAuditException(sqle);
114             }
115                 
116             Log.getInstance(Constants.PROPERTY_FILE).write(AuditHandler.class.getName(), "createEntry",
117                 "Exit", java.util.logging.Level.INFO);
118     }
119     
120     public static String JavaDoc dateToString(java.util.Date JavaDoc date){
121         DateFormat JavaDoc format = new SimpleDateFormat JavaDoc("MM-dd-yyyy hh:mm:ss:SSS");
122         String JavaDoc result = "<null>";
123         
124         if (date != null){
125             result = format.format(date);
126         }
127         
128         return result;
129     }
130 }
131
Popular Tags