
com.talanlabs.bean.mybatis.component.observer.TracableTriggerObserver Maven / Gradle / Ivy
The newest version!
package com.talanlabs.bean.mybatis.component.observer;
import com.talanlabs.bean.mybatis.component.ICancelable;
import com.talanlabs.bean.mybatis.component.ITracable;
import com.talanlabs.bean.mybatis.session.observer.AbstractTriggerObserver;
import org.apache.ibatis.session.SqlSession;
import java.util.Date;
public class TracableTriggerObserver extends AbstractTriggerObserver {
private final IUserByHandler userByHandler;
public TracableTriggerObserver(IUserByHandler userByHandler) {
super();
this.userByHandler = userByHandler;
}
@Override
public void triggerBefore(SqlSession sqlSession, Type type, Object bean) {
if (userByHandler != null) {
if (bean instanceof ITracable) {
ITracable tracable = (ITracable) bean;
switch (type) {
case Insert:
tracable.setCreatedBy(userByHandler.getUserBy());
tracable.setCreatedDate(new Date());
break;
case Update:
tracable.setUpdatedBy(userByHandler.getUserBy());
tracable.setUpdatedDate(new Date());
break;
case Delete:
break;
default:
break;
}
}
if (bean instanceof ICancelable) {
ICancelable cancelable = (ICancelable) bean;
if (cancelable.isCanceled() && cancelable.getCanceledDate() == null) {
switch (type) {
case Insert:
break;
case Update:
cancelable.setCanceledBy(userByHandler.getUserBy());
cancelable.setCanceledDate(new Date());
break;
case Delete:
break;
default:
break;
}
}
}
}
}
public interface IUserByHandler {
/**
* Get user
*
* @return user
*/
String getUserBy();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy