package net.tooan.ynpay.log.agent.helper;
import com.google.gson.Gson;
import net.tooan.ynpay.commons.YnpayJndiConstants;
import net.tooan.ynpay.commons.webapp.WebConstants;
import net.tooan.ynpay.log.agent.facade.LogFacade;
import net.tooan.ynpay.third.jfinal.aop.Interceptor;
import net.tooan.ynpay.third.jfinal.core.ActionInvocation;
import net.tooan.ynpay.third.jfinal.core.Controller;
import net.tooan.ynpay.third.jfinal.ext.interceptor.ejb.EJBManager;
import net.tooan.ynpay.third.jfinal.ext.interceptor.ejb.RemoteEJB;
import net.tooan.ynpay.third.jfinal.log.Logger;
import net.tooan.ynpay.user.agent.bean.User;
/**
* Created with IntelliJ IDEA.
* User: Jing
* Date: 13-11-6
* Time: 下午10:07
*/
public class LogInterceptor implements Interceptor {
private static final Logger logger = Logger.getLogger(LogInterceptor.class);
@RemoteEJB(mappedName = YnpayJndiConstants.Mongo_Log_Facade_Remote)
private LogFacade facade;
public LogInterceptor() {
super();
EJBManager.manager.setEJB(this);
}
@Override
public void intercept(ActionInvocation ai) {
int level = LogHelper.getLevel(ai.getMethod());
if (level >= LogLevel.DEBUG) {
Controller controller = ai.getController();
Gson gson = new Gson();
String request = gson.toJson(controller.getParaMap());
String url = ai.getActionKey();
ai.invoke();
String msg = gson.toJson(controller.sysLog());
User user = controller.getAttr("user");
Long userID = null;
if (user != null) {
userID = user.getId();
}
try {
facade.save(level, url, request, msg, userID, WebConstants.getIp(controller.getRequest()));
} catch (Exception e) {
if (logger.isErrorEnabled()) {
logger.error(e.getMessage(), e);
}
}
} else {
ai.invoke();
}
}
}