/* ================================================================== * 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.dynproperty.support; import org.aopalliance.intercept.MethodInvocation; import com.jinhe.tss.component.dynproperty.support.hibernate.HibernateDynProperty; import com.jinhe.tss.component.support.persistence.entityaop.MatchByDaoMethodNameInterceptor; import com.jinhe.tss.core.persistence.IDao; import com.jinhe.tss.core.persistence.IEntity; /** * <p> ManipulateDynEntityInterceptor.java </p> * 处理动态实体的拦截器(Interceptor)。 * 包括对动态实体进行增加、删除、获取、修改等操作, 在dao上进行拦截。 * * @author Jon.King 2008/04/14 10:18:51 $ */ public class ManipulateDynEntityInterceptor extends MatchByDaoMethodNameInterceptor { private DynProperty dp = new HibernateDynProperty(); @SuppressWarnings("unchecked") public Object invoke(MethodInvocation invocation) throws Throwable { dp.init((IDao<IEntity>) invocation.getThis()); Object returnObj = invocation.proceed(); if(returnObj instanceof AbstractDynEntity) { AbstractDynEntity entity = (AbstractDynEntity) returnObj; switch(judgeManipulateKind(invocation.getMethod().getName())){ case SAVE: case UPDATE: return dp.saveDynProperti4Entity(entity); case GET: return dp.getDynProperti4Entity(entity); case DELETE: dp.removeDynProperti4Entity(entity); return returnObj; } } return returnObj; } }