package org.ovirt.engine.core.dao; import java.util.Date; import java.util.List; import org.hibernate.Query; import org.hibernate.SQLQuery; import org.hibernate.criterion.Restrictions; import org.ovirt.engine.core.common.businessentities.AuditLog; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.NotImplementedException; public class AuditLogDAOHibernateImpl extends BaseDAOHibernateImpl<AuditLog, Long> implements AuditLogDAO { public AuditLogDAOHibernateImpl() { super(AuditLog.class); } @Override public AuditLog get(long id) { return get(Long.valueOf(id)); } @Override public void remove(long id) { remove(Long.valueOf(id)); } @Override public List<AuditLog> getAllAfterDate(Date cutoff) { return findByCriteria(Restrictions.gt("logTime", cutoff)); } @SuppressWarnings("unchecked") @Override public List<AuditLog> getAllWithQuery(String sql) { SQLQuery query = getSession().createSQLQuery(sql).addEntity(AuditLog.class); return query.list(); } @Override public void removeAllBeforeDate(Date cutoff) { Query query = getSession().createQuery("delete from AuditLog where logTime < :cutoff " + "and processed = true " + "and id not in (select auditLogId from event_notification_hist)"); query.setParameter("cutoff", cutoff); getSession().beginTransaction(); query.executeUpdate(); getSession().getTransaction().commit(); } @Override public void removeAllForVds(Guid id, boolean configAlerts) { Query query = null; if (configAlerts) { query = getSession().createQuery("delete from AuditLog al where al.vdsId = :vds_id " + "and al.severity >= 10"); } else { query = getSession().createQuery("delete from AuditLog al where al.vds_id = :vds_id " + "and al.severity >= 10 " + "and al.logType >= 9000"); } query.setParameter("vds_id", id); getSession().beginTransaction(); query.executeUpdate(); getSession().getTransaction().commit(); } @Override public void removeAllOfTypeForVds(Guid id, int type) { Query query = getSession().createQuery("delete from AuditLog al where al.vdsId = :vds_id " + "and al.logType = :log_type"); query.setParameter("vds_id", id); query.setParameter("log_type", type); getSession().beginTransaction(); query.executeUpdate(); getSession().getTransaction().commit(); } @Override public int getTimeToWaitForNextPmOp(String vdsName, String event) { throw new NotImplementedException(); } }