package com.alibaba.doris.admin.web.configer.module.action;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.math.NumberUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.alibaba.citrus.turbine.Context;
import com.alibaba.citrus.turbine.dataresolver.Param;
import com.alibaba.doris.admin.core.AdminServiceLocator;
import com.alibaba.doris.admin.dataobject.SystemLogDO;
import com.alibaba.doris.admin.service.SystemLogService;
import com.alibaba.doris.admin.web.configer.support.SystemLogView;
import com.alibaba.doris.admin.web.configer.util.PageViewUtil;
import com.alibaba.doris.admin.web.configer.util.WebConstant;
/**
* @project :Doris
* @author : len.liu
* @datetime : 2011-7-18 下午07:20:25
* @version :0.1
* @Modification:
*/
public class SystemLogAction {
Log log = LogFactory.getLog(SystemLogAction.class);
SystemLogService systemLogService = AdminServiceLocator.getSystemLogService();
@SuppressWarnings("unchecked")
public void doQuery(Context context, @Param("startTime") String startTime, @Param("endTime") String endTime,
@Param("actionName") String actionName, @Param("currentpage") String currentpage) {
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
Calendar start = Calendar.getInstance();
Calendar end = Calendar.getInstance();
if (StringUtils.isBlank(startTime) && StringUtils.isBlank(endTime)) {
// 当前时间向前一天(24小时)内的systemlog
setTime(start, 0,0,0,0);
setTime(end, 23,59,59,999);
} else if (!StringUtils.isBlank(startTime) && StringUtils.isBlank(endTime)) {
try {
start.setTime(sf.parse(startTime));
end.setTime(start.getTime());
setTime(end, 23,59,59,999);
} catch (ParseException e) {
e.printStackTrace();
}
} else if (StringUtils.isBlank(startTime) && !StringUtils.isBlank(endTime)) {
try {
end.setTime(sf.parse(endTime));
start.setTime(end.getTime());
setTime(start, 0,0,0,0);
setTime(end, 23,59,59,999);
} catch (ParseException e) {
e.printStackTrace();
}
} else {
try {
end.setTime(sf.parse(endTime));
start.setTime(sf.parse(startTime));
//start.setTime(end.getTime());
setTime(end, 23,59,59,999);
} catch (ParseException e) {
e.printStackTrace();
}
}
SimpleDateFormat sfWithTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
startTime = sfWithTime.format(start.getTime());
endTime = sfWithTime.format(end.getTime());
int currentpageNum = NumberUtils.toInt(currentpage, 1);
@SuppressWarnings("rawtypes")
Map paramMap = new HashMap();
paramMap.put("startTime", startTime);
paramMap.put("endTime", endTime);
paramMap.put("actionName", actionName);
paramMap.put("startRow", (currentpageNum - 1) * WebConstant.DEFAULT_ITEMS_PER_PAGE);
paramMap.put("pageSize", WebConstant.DEFAULT_ITEMS_PER_PAGE);
int totalLines = systemLogService.querySystemLogCounts(paramMap);
List<SystemLogDO> logList = systemLogService.querySystemLogs(paramMap);
context.put("logList", formateLogList(logList));
context.put("startTime", startTime.substring(0, 10));
context.put("endTime", endTime.substring(0, 10));
context.put("actionName", actionName);
context.put("pageView", PageViewUtil.buildPageView(currentpageNum, totalLines));
}
private void setTime(Calendar end, int hour, int minute, int second, int millsecond) {
end.set(Calendar.HOUR_OF_DAY, hour);
end.set(Calendar.MINUTE, minute);
end.set(Calendar.SECOND, second);
end.set(Calendar.MILLISECOND, millsecond);
}
private static List<SystemLogView> formateLogList(List<SystemLogDO> logList) {
List<SystemLogView> viewList = new ArrayList<SystemLogView>();
if (logList == null) return viewList;
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
for (SystemLogDO logDo : logList) {
SystemLogView view = new SystemLogView();
view.setActionTime(sf.format(logDo.getActionTime()));
view.setId(logDo.getId());
view.setActionName(logDo.getActionName());
view.setGmtCreate(logDo.getGmtCreate());
view.setGmtModified(logDo.getGmtModified());
view.setLogInfo(logDo.getLogInfo());
viewList.add(view);
}
return viewList;
}
}