/* ==================================================================
* Created [2009-4-27 下午11:32:55] by Jon.King
* ==================================================================
* TSS
* ==================================================================
* mailTo:jinpujun@hotmail.com
* Copyright (c) Jon.King, 2009-2012
* ==================================================================
*/
package com.jinhe.tss.component.support.persistence.entityaop;
import java.util.Date;
import org.aopalliance.intercept.MethodInvocation;
import com.jinhe.tss.core.persistence.IEntity;
import com.jinhe.tss.core.sso.Environment;
/**
* <p> OperateInfoInterceptor.java </p>
* <p>
* 对象操作者信息记录拦截器
* </p>
*/
public class OperateInfoInterceptor extends MatchByDaoMethodNameInterceptor {
public Object invoke(MethodInvocation invocation) throws Throwable {
Object[] args = invocation.getArguments();
if(args != null){
for (int i = 0; i < args.length; i++) {
int manipulateKind = judgeManipulateKind(invocation.getMethod().getName());
if (args[i] instanceof IOperatable && (manipulateKind == SAVE || manipulateKind == UPDATE)) {
IOperatable operateInfo = (IOperatable) args[i];
if(((IEntity)operateInfo).getId() == null) { // ID为null,说明是新建
operateInfo.setCreateTime(new Date());
operateInfo.setCreatorId(Environment.getOperatorId());
operateInfo.setCreatorName(Environment.getOperatorName());
} else {
operateInfo.setUpdateTime(new Date());
operateInfo.setUpdatorId(Environment.getOperatorId());
operateInfo.setUpdatorName(Environment.getOperatorName());
}
}
}
}
return invocation.proceed();
}
}