package org.jblooming.logging;
import org.hibernate.CallbackException;
import org.hibernate.Session;
import org.hibernate.HibernateException;
import org.jblooming.persistence.hibernate.HibernateFactory;
import org.jblooming.persistence.hibernate.PersistenceContext;
import org.jblooming.persistence.exceptions.PersistenceException;
import org.jblooming.operator.Operator;
import org.jblooming.utilities.JSP;
import org.jblooming.PlatformRuntimeException;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.sql.Connection;
import java.io.Serializable;
/**
* @author Pietro Polsinelli ppolsinelli@open-lab.com
* @author Roberto Bicchierai rbicchierai@open-lab.com
*/
public class AuditLogHelper {
public static void logEvent(
String message,
Sniffable entity,
Operator logged,
Connection connection)
throws CallbackException {
logEvent(message,
entity,
entity.getId(),
logged,
connection);
}
public static void logEvent(
String message,
Sniffable entity,
Serializable entityId,
Operator logged,
Connection connection)
throws CallbackException {
AuditLogRecord record = new AuditLogRecord(message, entityId, entity.getClass().getName(), logged);
// AuditLogRecord record = new AuditLogRecord(message, "pippo", AuditLog.class, new Operator());
logEvent(record);
}
public static void logEvent(AuditLogRecord record) {
if (JSP.ex(record.getData())) {
Session session = null;
try {
session = HibernateFactory.getSessionFactory().openSession();
session.beginTransaction();
session.save(record);
session.getTransaction().commit();
} catch (Exception ex) {
if (session!=null && session.getTransaction() != null)
session.getTransaction().rollback();
throw new CallbackException(ex);
} finally {
try {
if (session!=null)
session.close();
} catch (Throwable e) {
throw new PlatformRuntimeException(e);
}
}
}
}
}