package com.vci.server.log.delegate; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import org.apache.commons.lang3.StringUtils; import com.vci.common.utility.ObjectUtility; import com.vci.corba.common.VCIError; import com.vci.corba.log.data.LogInfo; import com.vci.corba.log.data.LogPeriodInfo; import com.vci.corba.log.data.LogType; import com.vci.corba.log.data.RefObj; import com.vci.corba.omd.btm.BtmItem; import com.vci.corba.common.data.UserEntityInfo; import com.vci.corba.framework.data.UserInfo; import com.vci.server.cache.OMCacheProvider; import com.vci.server.cache.OrgCacheProvider; import com.vci.server.log.objects.Log; import com.vci.server.log.objects.LogPeriod; import com.vci.server.log.utils.LogTypeUtil; import com.vci.server.log.dao.LogService; public class LogManagementDelegate { private final String LOG_SAVE_PERIOD = "logSavePeriod";//日志保存期限 private static LogService logSrv = new LogService(); /** * 在初始化日志模块时,检查是否配置了自动删除 * @return true表示设置了自动删除 * @throws VCIError */ public boolean getIsAutoDelete() throws VCIError { boolean res = false; try { LogService logSrv = new LogService(); res = logSrv.getIsAutoDelete(); } catch (Exception e) { e.printStackTrace(); throw new VCIError("140101", new String[]{});//获取日志删除配置出错,请重试! } return res ; } /** * 初始化日志模块时,获取保存期限和备份期限下拉框列表 * @return 配置好的期限值的集合 * @throws VCIError */ public LogPeriodInfo[] getPeriods() throws VCIError { LogPeriod[] periods = null; LogPeriodInfo[] infos = null; try { LogService logSrv = new LogService(); periods = logSrv.getPeriods(); if(periods!=null) { infos = new LogPeriodInfo[periods.length]; for(int i=0;i list = logSrv.getLogList(pageNo, pageSize,sql); logInfos = new LogInfo[list.size()]; //Set userIds = new HashSet(); for(int i = 0;i < list.size();i++){ logInfos[i] = this.changeLogToLogInfo((Log)list.get(i)); UserInfo user = OrgCacheProvider.getUser(logInfos[i].username); if (user != null) logInfos[i].truename = user.trueName; } // if(userIds.size()>0){ // UserInfo[] userInfos = new RightManagementDelegate().fetchUserInfoByNames(userIds.toArray(new String[0])); // Map userInfoMap = new HashMap(); // if(userInfos.length > 0 ){ // for(int i = 0 ; i < userInfos.length; i ++){ // UserInfo user = userInfos[i]; // userInfoMap.put(user.userName, user.trueName); // } // } // for(int i = 0 ; i < logInfos.length ; i ++){ // String userId = logInfos[i].username; // if(userInfoMap.containsKey(userId)){ // logInfos[i].truename = userInfoMap.get(userId); // } // } // } } catch (Exception e) { e.printStackTrace(); throw new VCIError("140105", new String[]{});//查询日志出错,请重试! } return logInfos; } /** * 根据查询条件获取日志信息 *

Description:

* * @author Administrator * @time 2013-1-2 * @param pageNo * @param pageSize * @param sql * @return * @throws VCIError */ public LogInfo[] getLogListByContion(int pageNo,int pageSize,String sql) throws VCIError{ LogInfo[] logInfos = null; try { LogService logSrv = new LogService(); List list = logSrv.getLogListByContion(pageNo, pageSize,sql); logInfos = new LogInfo[list.size()]; //Set userIds = new HashSet(); for(int i = 0;i < list.size();i++){ logInfos[i] = this.changeLogToLogInfo((Log)list.get(i)); UserInfo user = OrgCacheProvider.getUser(logInfos[i].username); if (user != null) logInfos[i].truename = user.trueName; //userIds.add(logInfos[i].username); } // if(userIds.size()>0){ // UserInfo[] userInfos = new RightManagementDelegate().fetchUserInfoByNames(userIds.toArray(new String[0])); // Map userInfoMap = new HashMap(); // if(userInfos.length > 0 ){ // for(int i = 0 ; i < userInfos.length; i ++){ // UserInfo user = userInfos[i]; // userInfoMap.put(user.userName, user.trueName); // } // } // for(int i = 0 ; i < logInfos.length ; i ++){ // String userId = logInfos[i].username; // if(userInfoMap.containsKey(userId)){ // logInfos[i].truename = userInfoMap.get(userId); // } // } // } } catch (Exception e) { e.printStackTrace(); throw new VCIError("140105", new String[]{});//查询日志出错,请重试! } return logInfos; } /** * 保存日志保存/备份期限 * @param info 系统配置表的对象 * @return */ public boolean savePeriod(String period, UserEntityInfo userEnt) throws VCIError{ boolean res = false; String id = ObjectUtility.getNewObjectID36(); try { LogService logSrv = new LogService(); //info.id = id; //UserEntityDelegate.setUserEntityToService(logSrv, userEnt); res = logSrv.savePeriod(LOG_SAVE_PERIOD, period); return res ; } catch (Exception e) { e.printStackTrace(); throw new VCIError("140106", new String[]{});//保存期限出错,请重试! } } /** * 获取保存/备份期限值 * @param type * @return * @throws VCIError */ public int getCurPeriod() throws VCIError{ int period = 0; try { LogService logSrv = new LogService(); period = logSrv.getCurPeriod(LOG_SAVE_PERIOD); } catch (Exception e) { e.printStackTrace(); throw new VCIError("140107", new String[]{});//获取期限数值出错,请重试! } return period; } public boolean deleteLog(String deleteDate) throws VCIError { boolean res = false; try { LogService logSrv = new LogService(); res = logSrv.deleteLog(deleteDate); } catch (Exception e) { e.printStackTrace(); throw new VCIError("140108", new String[]{});//删除日志出错,请重试! } return res; } /** * 简单记录系统登入、登出日�? *

* Description: *

* * @author wangxl * @time 2012-12-27 * @param message * @param userEntityInfo * @throws VCIError */ public void saveLoginLog(boolean success, String message, UserEntityInfo userEntityInfo) throws VCIError { userEntityInfo.modules = "登录模块";// add by liujw UserInfo user = OrgCacheProvider.getUser(userEntityInfo.userName); if (user == null) return; String result = success ? "登录成功" : "登录失败"; writeLog(userEntityInfo, "登录", message, result, LogType.Login, user.id); } public void saveLogoutLog(String message, UserEntityInfo userEntityInfo) throws VCIError { userEntityInfo.modules = "登录模块"; UserInfo user = OrgCacheProvider.getUser(userEntityInfo.userName); if (user == null) return; writeLog(userEntityInfo, "登出", "登录成功", message, LogType.Logout, user.id); } /** * 记录日志 * @param result * @param message * @param type * @param logTypeIntVal * @param dataObjOid * @param userEntityInfo * @throws VCIError */ public void saveLogV2(String result, String message, String type, LogType logType, String dataObjOid, UserEntityInfo userEntityInfo) throws VCIError { //LogType logType = LogType.getByIntVal(logTypeIntVal); writeLog(userEntityInfo, type, result, message, logType, dataObjOid); } public void saveObjLog(RefObj obj, String opType, String result, LogType logType, UserEntityInfo userEnt) { String info = StringUtils.isNotBlank(obj.name) ? obj.name : (StringUtils.isNotBlank(obj.id) ? obj.id : obj.oid); String btLabel = getBtmLabel(obj.btName); userEnt.modules = btLabel; writeLog(userEnt, opType, result, "操作的数据为->"+ btLabel + ":" + info, logType, obj.oid); } public void batchSaveObjLog(RefObj[] objs, String opType, String result, UserEntityInfo userEnt) { if (objs == null || objs.length < 1) { return; } for (int i = 0; i < objs.length; i++) { RefObj ro = objs[i]; String info = StringUtils.isNotBlank(ro.name) ? ro.name : (StringUtils.isNotBlank(ro.id) ? ro.id : ro.oid); String btLabel = getBtmLabel(ro.btName); userEnt.modules = btLabel; writeLog(userEnt, opType, result, "操作的数据为->"+ btLabel + ":" + info, LogType.General, ro.oid); } } // private void writeLog(UserEntity userEntity, String optType, String result, String content, LogType logType, String dataObjId) { // try { // Log log = new Log(); // log.setId(ObjectUtility.getNewObjectID36()); // log.setDate(new Date()); // log.setUserIp(userEntity.getIp()); // // log.setUsername(userEntity.getUserName()); // log.setResult(result); // log.setContent(content); // log.setType(optType); // // String module = userEntity.getModule(); // if (StringUtils.isEmpty(module)) // module = "log"; // // log.setModule(module); // log.setLogType(logType.getLabel()); // log.setObjId(dataObjId); // String roleName = "";//logSrv.getRoleName(userEntity.getModule(),userEntity.getUserName()); // log.setRoleName(roleName); // // logSrv.saveLog(log); // // } catch (Exception e) { // e.printStackTrace(); // } // } private void writeLog(UserEntityInfo userInfo, String optType, String result, String content, LogType logType, String dataObjId) { try { Log log = new Log(); log.setId(ObjectUtility.getNewObjectID36()); log.setDate(new Date()); log.setUserIp(userInfo.ip); log.setUsername(userInfo.userName); log.setResult(result); log.setContent(content); log.setType(optType); String module = userInfo.modules; if (StringUtils.isEmpty(module)) module = "log"; log.setModule(module); log.setLogType(LogTypeUtil.getLabel(logType)); log.setObjId(dataObjId); String roleName = "";//logSrv.getRoleName(userEntity.getModule(),userEntity.getUserName()); log.setRoleName(roleName); logSrv.saveLog(log); } catch (Exception e) { e.printStackTrace(); } } // 简单记录用户被锁定的日志 public void saveLockUserLog(String userId, UserEntityInfo userEntityInfo) throws VCIError { UserInfo user = OrgCacheProvider.getUserByID(userId); if (user == null) return; writeLog(userEntityInfo, LogTypeUtil.getLabel(LogType.LockUser), "用户锁定", user.userName + "[" + user.trueName + "]" + "在连续输入多次密码错误后导致账户被锁定", LogType.LockUser, userId); } /** * period * 服务器端对象转成CORBA对象 * @param obj * @return */ private LogPeriodInfo changePeriodObjToInfo(LogPeriod obj) { LogPeriodInfo info = new LogPeriodInfo(); info.code = obj.getCode()==null?"":obj.getCode(); info.value = obj.getValue()==null?"":obj.getValue(); return info; } /** * 系统配置 * CORBA对象转成服务器端对象 * @param info * @return */ // private SystemCfg changeSysCfgInfoToObj(SystemCfgInfo info) { // SystemCfg sys = new SystemCfg(); // sys.setId(info.id); // sys.setName(info.name); // sys.setValue(info.value); // return sys; // } /** * Log * 服务器端对象转成CORBA对象 * @param obj * @return */ public LogInfo changeLogToLogInfo(Log obj){ LogInfo info = new LogInfo(); info.puid = obj.getId() == null?"":obj.getId(); info.type = obj.getType() == null?"":obj.getType(); info.date = obj.getDate() == null?"":new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(obj.getDate()); info.username = obj.getUsername() == null?"":obj.getUsername(); info.userIp = obj.getUserIp() == null?"":obj.getUserIp(); info.entityDesc = obj.getEntityDesc() == null?"":obj.getEntityDesc(); info.property = obj.getProperty() == null?"":obj.getProperty(); info.previousVal = obj.getPreviousVal() == null?"":obj.getPreviousVal(); info.newVal = obj.getNewVal() == null?"":obj.getNewVal(); info.result = obj.getResult() == null?"":obj.getResult(); info.moduleName = obj.getModule() == null?"":obj.getModule(); info.logType = obj.getLogType() == null ? "" : obj.getLogType(); return info; } /** * 获取类型Label * @param btName * @return */ private String getBtmLabel(String btName) { BtmItem bt = OMCacheProvider.getBizType(btName); if (bt != null) return bt.label; return btName; } }