/* ================================================================== * 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(); } }