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<periods.length;i++) {
|
infos[i] = changePeriodObjToInfo(periods[i]);
|
}
|
} else {
|
infos = new LogPeriodInfo[0];
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
throw new VCIError("140102", new String[]{});//获取日志配置期限出错,请重试!
|
}
|
return infos;
|
}
|
|
/**
|
* 获取日志页面显示条数
|
* @return
|
* @throws VCIError
|
*/
|
public int getPageSize() throws VCIError {
|
int pageSize = 0;
|
try {
|
LogService logSrv = new LogService();
|
pageSize = logSrv.getPageSize();
|
} catch (Exception e) {
|
e.printStackTrace();
|
throw new VCIError("140103", new String[]{});//获取日志页面显示条数出错,请重试!
|
}
|
return pageSize;
|
}
|
|
/**
|
* 获取当前查询日志总数
|
* @param sql 带条件的查询语句
|
* @return
|
* @throws VCIError
|
*/
|
public long getSumLogRows(String sql) throws VCIError {
|
long sumRows = 0;
|
try {
|
LogService logSrv = new LogService();
|
sumRows = logSrv.getSumLogRows(sql);
|
}catch (Exception e) {
|
e.printStackTrace();
|
throw new VCIError("140104", new String[]{});//获取本次查询日志总数出错,请重试!
|
}
|
return sumRows ;
|
}
|
|
/**
|
* 获取全部日志信息
|
* @return
|
*/
|
public LogInfo[] fetchLogInfo(int pageNo,int pageSize,String sql) throws VCIError{
|
LogInfo[] logInfos = null;
|
try {
|
LogService logSrv = new LogService();
|
List<?> list = logSrv.getLogList(pageNo, pageSize,sql);
|
logInfos = new LogInfo[list.size()];
|
//Set<String> userIds = new HashSet<String>();
|
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<String,String> userInfoMap = new HashMap<String,String>();
|
// 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;
|
}
|
|
/**
|
* 根据查询条件获取日志信息
|
* <p>Description: </p>
|
*
|
* @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<String> userIds = new HashSet<String>();
|
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<String,String> userInfoMap = new HashMap<String,String>();
|
// 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;
|
}
|
|
|
/**
|
* 简单记录系统登入、登出日�?
|
* <p>
|
* Description:
|
* </p>
|
*
|
* @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;
|
}
|
|
}
|