2021-01-07 11:34:56 +07:00

82 lines
2.4 KiB
Java

package com.jasamedika.medifirst2000.logging;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import com.jasamedika.medifirst2000.base.BaseMaster;
import com.jasamedika.medifirst2000.base.BaseTransaction;
import com.jasamedika.medifirst2000.dao.ActivityLogRepository;
import com.jasamedika.medifirst2000.entities.ActivityLog;
import com.jasamedika.medifirst2000.entities.LoginUser;
import com.jasamedika.medifirst2000.service.LoginUserService;
/**
*
* @author Hutagalung
*/
@Aspect
public class LoggingAdvise {
private final Logger LOG = LoggerFactory.getLogger(LoggingAdvise.class);
@Autowired
private ActivityLogRepository activityLogRepository;
@Autowired
private LoginUserService loginUserService;
private StringBuffer buffer, detail;
/*@AfterReturning("execution(* com.jasamedika.medifirst2000.service.*.add(*)) && args(object)")
public void logAddAction(JoinPoint jp, Object object) throws Throwable {
logActivity(" creates new data: ", object);
}*/
@AfterReturning("execution(* com.jasamedika.medifirst2000.dao.*.save(*)) && args(object)")
public void logUpdateAction(JoinPoint jp, Object object) throws Throwable {
logActivity(object);
}
private void logActivity(Object object) {
// get current user
LoginUser currentUser = loginUserService.getLoginUser();
buffer = new StringBuffer();
buffer.append(currentUser.getNamaUser());
// checking action
if (object instanceof BaseMaster) {/*
if (((BaseMaster) object).getId() == null) {
buffer.append(" inserts master record ");
} else {
buffer.append(" updates master record ");
}
*/} else if (object instanceof BaseTransaction) {
if (((BaseTransaction) object).getNoRec().isEmpty()) {
buffer.append(" insert transaction record ");
} else {
buffer.append(" updates transactionr record ");
}
}
detail = new StringBuffer();
try {
detail.append(ObjectUtil.getColumnNamesAndValues(object));
} catch(IllegalAccessException | IllegalArgumentException e) {
LOG.error("LogActivity exception: {}", e.getMessage());
}
ActivityLog activityLog = new ActivityLog();
activityLog.setAction(buffer.toString());
activityLog.setDetail(detail.toString());
activityLogRepository.save(activityLog);
}
}