⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jahiadbauditlogmanagerservice.java

📁 java 写的一个新闻发布系统
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
////                                   ____.//                       __/\ ______|    |__/\.     _______//            __   .____|    |       \   |    +----+       \//    _______|  /--|    |    |    -   \  _    |    :    -   \_________//   \\______: :---|    :    :           |    :    |         \________>//           |__\---\_____________:______:    :____|____:_____\//                                      /_____|////                 . . . i n   j a h i a   w e   t r u s t . . .//// MJ 19.02.2001//////package org.jahia.services.audit;import java.sql.*;import java.lang.*;import java.util.*;                                     // ArrayListimport java.text.DateFormat;import org.jahia.data.events.*;                     // EventObjectimport org.jahia.data.fields.*;                     // JahiaFieldimport org.jahia.data.containers.*;                 // JahiaContainer, JahiaContainerListimport org.jahia.services.pages.*;                  // JahiaPageimport org.jahia.services.sites.*;                  // JahiaSiteimport org.jahia.services.acl.*;                    // JahiaBaseACLimport org.jahia.services.usermanager.*;            // JahiaUserimport org.jahia.settings.*;                        // JahiaPrivateSettingsimport org.jahia.utils.JahiaConsole;import org.jahia.utils.JahiaObjectTool;             // JahiaObjectToolimport org.jahia.engines.EngineToolBox;import org.jahia.params.*;                          // ParamBeanimport org.jahia.exceptions.*;import org.jahia.registries.ServicesRegistry;import org.jahia.services.database.JahiaIncrementorsDBService;import org.jahia.services.database.JahiaDBPoolService;import org.jahia.data.JahiaDOMObject;import org.jahia.data.JahiaDBDOMObject;public class JahiaDBAuditLogManagerService extends JahiaAuditLogManagerService{    public static final String TABLE_NAME         = "jahia_audit_log";    public static final int    FIELD_TYPE         = JahiaObjectTool.FIELD_TYPE;    public static final int    CONTAINER_TYPE     = JahiaObjectTool.CONTAINER_TYPE;    public static final int    CONTAINERLIST_TYPE = JahiaObjectTool.CONTAINERLIST_TYPE;    public static final int    PAGE_TYPE          = JahiaObjectTool.PAGE_TYPE;    public static final int    TEMPLATE_TYPE      = JahiaObjectTool.TEMPLATE_TYPE;    public static final int    ACL_TYPE           = JahiaObjectTool.ACL_TYPE;    public static final String ENTRY_ID           = "ENTRY_ID";    public static final String TIME               = "TIME";    public static final String USER_ID            = "USER_ID";    public static final String OBJECT_TYPE        = "OBJECT_TYPE";    public static final String OBJECT_ID          = "OBJECT_ID";    public static final String CONTENT            = "CONTENT";    private static final String       MSG_INTERNAL_ERROR = new String ("Audit Log Manager internal error");    private static final String       JSP_FILE           = "/jsp/jahia/engines/logs/viewlogs.jsp";    private static       JahiaDBAuditLogManagerService theObject           = null;    private              JahiaIncrementorsDBService    mIncrementorService = null;    private              JahiaDBPoolService            mDBPoolService      = null;    private              int                           maxLogs;    /**     * constructor     * initializes database connection pool and incrementor service.     *     */    private JahiaDBAuditLogManagerService()    throws JahiaException    {        JahiaConsole.println( "Audit",                        "***** Starting AuditLogManager *****" );        // Try to get the DB Pool Service        ServicesRegistry registry = ServicesRegistry.getInstance();        if (registry != null)        {            mDBPoolService = registry.getDBPoolService();            if (mDBPoolService == null) {                throw new JahiaException (MSG_INTERNAL_ERROR, "Audit Log manager could not get the DB Connection Pool Service instance.",                                            JahiaException.SERVICE_ERROR, JahiaException.CRITICAL);            }            mIncrementorService = registry.getJahiaIncrementorsDBService();            if (mIncrementorService == null) {                throw new JahiaException (MSG_INTERNAL_ERROR, "Audit Log manager could not get the Incrementors DB Service instance.",                                          JahiaException.SERVICE_ERROR, JahiaException.CRITICAL);            }        } else {            throw new JahiaException (MSG_INTERNAL_ERROR, "Audit Log manager could not get the Service Registry instance.",                                      JahiaException.REGISTRY_ERROR, JahiaException.CRITICAL);        }    } // end constructor    /**     * returns a single instance of the object     */    public static synchronized JahiaDBAuditLogManagerService getInstance()    throws JahiaException    {        if (theObject == null) {            theObject = new JahiaDBAuditLogManagerService();        }        return theObject;    } // end getInstance    /**     * standard access method to log an Event     *     * @author  Mikha雔 Janson     * @param   je              a reference to the JahiaEvent object to log     * @param   objectType      an <code>int</code> representing the type of the of the logged event     * @param   operationStr    a <code>String</code> containing the message logged with the event     */    public boolean logEvent ( JahiaEvent je, int objectType, String operationStr )    {        long   time;        String timeStr          = "";        String userNameStr      = "jahia";        String objTypeStr       = "";        String objIDStr         = "0";        String parentObjIDStr   = "0";        String parentObjTypeStr = "";        String siteKey          = "";        String contentStr       = "";        // Get the next available entry ID        int entryID;        try {            entryID = mIncrementorService.autoIncrement ("jahia_audit_log");            // toConsole ("got new entry ID = ["+Integer.toString(entryID)+"]");        } catch (JahiaException ex) {            JahiaConsole.println ("AuditLogManager", "Exception !!! Could not get a new entry ID from the incrementor DB");            return false;        }        try {            time             = je.getEventTime();            timeStr          = new Long(je.getEventTime()).toString();            ParamBean jParams = je.getParams();            if( jParams != null) {                                       // jParams is null in Event if generated by Jahia                userNameStr  = (String) jParams.getUser().getUsername();                siteKey      = ((JahiaSite)jParams.getSession().getAttribute(ParamBean.SESSION_SITE)).getSiteKey();            }            objTypeStr       = new Integer(objectType).toString();            objIDStr         = Integer.toString(getObjectID(je, objectType));            String[] parent  = getParent(je, objectType);            parentObjIDStr   = parent[0];            parentObjTypeStr = parent[1];            contentStr       = JahiaObjectTool.getInstance().getObjectName (objectType, getObjectID(je, objectType));            return insertAuditLogEntry ( entryID, timeStr, userNameStr, objTypeStr, objIDStr, parentObjIDStr, parentObjTypeStr, siteKey, operationStr, contentStr );        } catch (JahiaException jex) {            return false;        }    } // end logEvent    /**     * utility method to retrieve log entries for a specific object type and ID     *     * @author  Mikha雔 Janson     * @param   objectType  an <code>int</code> representing the object type to retrieve     * @param   objectID    an <code>int</code> representing the ID of the object to retrieve logs for     * @return              a <code>List</code> of HashMaps containing keys for time, username, operation, and their value for each logged event     */    public ArrayList getLog (int objectType, int objectID )    {        ArrayList logData = new ArrayList();        // Get a database connection        Connection  dbConn = getDBConnection (1002);        if (dbConn == null) {            return logData;        }        // Have the recursive method descend down the tree        List childrenObjectList = getAllChildren( dbConn, objectType, objectID, null );        // fetch the corresponding entries from the db table        Statement       stmt            = null;        String          query           = "";        try {            stmt = dbConn.createStatement();            query = "SELECT * FROM " + TABLE_NAME                    + " WHERE (objecttype_jahia_audit_log=" + Integer.toString(objectType)                    + " AND objectid_jahia_audit_log=" + Integer.toString(objectID) + ")";            if( !childrenObjectList.isEmpty() ) {                for( int i = 0; i < childrenObjectList.size(); i++ ) {                    Integer[] thisChildObject = (Integer[]) childrenObjectList.get(i);                    query += " OR (objecttype_jahia_audit_log=" + thisChildObject[0].toString();       // type as 1st ary elt                    query += " AND objectid_jahia_audit_log=" + thisChildObject[1].toString() + ")";   // id as 2nd ary elt                }            }            query += " ORDER BY time_jahia_audit_log DESC";            ResultSet rs = ServicesRegistry.getInstance().getDBPoolService().executeQuery (stmt, query);            logData = buildLogEntriesList( rs, logData );        }        catch (SQLException sqlEx) {            toConsole ("SQL Exception occurred!" + sqlEx.getMessage() + " for query " + query);        }        finally {            CloseDBConnection (dbConn);            CloseStatement (stmt);        }        return logData;    } // end getLog    /**     * utility method to retrieve all log entries     *     * @author  Mikha雔 Janson     * @return  a <code>List</code> of HashMaps containing keys for time, username,     *          operation, and their value for each logged event     */    public ArrayList getLog ()    {        ArrayList logData = new ArrayList();        // Get a database connection        Connection  dbConn = getDBConnection (1002);        if (dbConn == null) {            return logData;        }        // fetch the corresponding entries from the db table        Statement       stmt            = null;        String          query           = "";        String          maxLogs         = JahiaPrivateSettings.readJahiaPropertiesFile().getProperty("jahiaMaxLogs");        try {            stmt   = dbConn.createStatement();            query  = "SELECT * FROM " + TABLE_NAME + " ORDER BY time_jahia_audit_log DESC";            ResultSet rs = ServicesRegistry.getInstance().getDBPoolService().executeQuery (stmt, query);            logData = buildLogEntriesList( rs, logData );        }        catch (SQLException sqlEx) {            toConsole ("SQL Exception occurred!" + sqlEx.getMessage() + " for query " + query);        }        finally {            CloseDBConnection (dbConn);            CloseStatement (stmt);        }        return logData;    } // end getLog    /**     * utility method to convert a ResultSet into a List suitable for log display     *     * @author  Mikha雔 Janson     * @param   rs          a <code>ResultSet</code>     * @param   logData     an pre-initialized ArrayList     * @return              an <code>ArrayList</code> suitable for log display     */    private ArrayList buildLogEntriesList ( ResultSet rs, ArrayList logData )    {        int    i       = 0;        try {            while(rs.next()) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -