package com.yihaomen.interceptor;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import org.hibernate.CallbackException;
import org.hibernate.EmptyInterceptor;
import org.hibernate.Session;
import org.hibernate.type.Type;
import com.yihaomen.util.AuditLogUtil;
public class AuditLogInterceptor extends EmptyInterceptor{
Session session;
private Set inserts = new HashSet();
private Set updates = new HashSet();
private Set deletes = new HashSet();
public void setSession(Session session) {
this.session=session;
}
@Override
public String onPrepareStatement(String sql) {
System.out.println("execute sql: " sql);
return super.onPrepareStatement(sql);
}
public boolean onSave(Object entity,Serializable id,
Object[] state,String[] propertyNames,Type[] types)
throws CallbackException {
System.out.println("onSave");
if (entity instanceof IAuditLog){
inserts.add(entity);
}
return false;
}
public boolean onFlushDirty(Object entity,Serializable id,
Object[] currentState,Object[] previousState,
String[] propertyNames,Type[] types)
throws CallbackException {
System.out.println("onFlushDirty");
if (entity instanceof IAuditLog){
updates.add(entity);
}
return false;
}
public void onDelete(Object entity, Serializable id,
Object[] state, String[] propertyNames,
Type[] types) {
System.out.println("onDelete");
if (entity instanceof IAuditLog){
deletes.add(entity);
}
}
//called before commit into database
public void preFlush(Iterator iterator) {
System.out.println("preFlush");
}
//called after committed into database
public void postFlush(Iterator iterator) {
System.out.println("postFlush");
try{
for (Iterator it = inserts.iterator(); it.hasNext();) {
IAuditLog entity = (IAuditLog) it.next();
System.out.println("postFlush - insert");
AuditLogUtil.LogIt("Saved",entity);
}
for (Iterator it = updates.iterator(); it.hasNext();) {
IAuditLog entity = (IAuditLog) it.next();
System.out.println("postFlush - update");
AuditLogUtil.LogIt("Updated",entity);
}
for (Iterator it = deletes.iterator(); it.hasNext();) {
IAuditLog entity = (IAuditLog) it.next();
System.out.println("postFlush - delete");
AuditLogUtil.LogIt("Deleted",entity);
}
} finally {
inserts.clear();
updates.clear();
deletes.clear();
}
}
}
资源文件列表
Hibernate4-inteceptor/.classpath , 754
Hibernate4-inteceptor/.project , 1054
Hibernate4-inteceptor/.settings/.jsdtscope , 503
Hibernate4-inteceptor/.settings/org.eclipse.jdt.core.prefs , 395
Hibernate4-inteceptor/.settings/org.eclipse.wst.common.component , 628
Hibernate4-inteceptor/.settings/org.eclipse.wst.common.project.facet.core.xml , 305
Hibernate4-inteceptor/.settings/org.eclipse.wst.jsdt.ui.superType.container , 49
Hibernate4-inteceptor/.settings/org.eclipse.wst.jsdt.ui.superType.name , 6
Hibernate4-inteceptor/build/classes/com/yihaomen/common/App.class , 2156
Hibernate4-inteceptor/build/classes/com/yihaomen/common/AuditLog.class , 2603
Hibernate4-inteceptor/build/classes/com/yihaomen/common/Stock.class , 2370
Hibernate4-inteceptor/build/classes/com/yihaomen/interceptor/AuditLogInterceptor.class , 3416
Hibernate4-inteceptor/build/classes/com/yihaomen/interceptor/IAuditLog.class , 207
Hibernate4-inteceptor/build/classes/com/yihaomen/util/AuditLogUtil.class , 1622
Hibernate4-inteceptor/build/classes/com/yihaomen/util/HibernateUtil.class , 1390
Hibernate4-inteceptor/build/classes/hibernate.cfg.xml , 950
Hibernate4-inteceptor/conf/hibernate.cfg.xml , 1066
Hibernate4-inteceptor/src/com/yihaomen/common/AuditLog.java , 2201
Hibernate4-inteceptor/src/com/yihaomen/common/Stock.java , 1661
Hibernate4-inteceptor/src/com/yihaomen/interceptor/AuditLogInterceptor.java , 2591
Hibernate4-inteceptor/src/com/yihaomen/interceptor/IAuditLog.java , 149
Hibernate4-inteceptor/src/com/yihaomen/util/AuditLogUtil.java , 770
Hibernate4-inteceptor/src/com/yihaomen/util/HibernateUtil.java , 793
Hibernate4-inteceptor/src/hibernate.cfg.xml , 950
Hibernate4-inteceptor/src-test/com/yihaomen/common/App.java , 1572
Hibernate4-inteceptor/WebContent/META-INF/MANIFEST.MF , 39
Hibernate4-inteceptor/WebContent/WEB-INF/web.xml , 719
