package com.loggingbox.storage.dao; import java.util.Date; import java.util.List; import org.hibernate.Criteria; import org.hibernate.SessionFactory; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.loggingbox.storage.model.SqlLog; @Component public class SqlLogDao { @Autowired SessionFactory sessionFactory; public void insertLog(SqlLog sqlLog) { sessionFactory.getCurrentSession().save(sqlLog); } @SuppressWarnings("unchecked") public List<SqlLog> getLogsPage(String applicationId, String beginLogId, int maxNumber, boolean ascendingOrder) { Criteria criteria = sessionFactory.getCurrentSession() .createCriteria(SqlLog.class) .add(Restrictions.eq("applicationId", applicationId)); if (beginLogId != null) { if (ascendingOrder) { criteria = criteria.add(Restrictions.le("id", beginLogId)); } else { criteria = criteria.add(Restrictions.ge("id", beginLogId)); } } if (ascendingOrder) { criteria = criteria.addOrder(Order.desc("id")); } else { criteria = criteria.addOrder(Order.asc("id")); } return (List<SqlLog>) criteria.setMaxResults(maxNumber).list(); } @SuppressWarnings("unchecked") public List<SqlLog> getLogs(String applicationId, Date fromDate, Date toDate, String beginLogId, Integer maxNumber) { Criteria criteria = sessionFactory.getCurrentSession() .createCriteria(SqlLog.class) .add(Restrictions.eq("applicationId", applicationId)) .add(Restrictions.gt("date", fromDate)) .add(Restrictions.lt("date", toDate)); if (beginLogId != null) { criteria = criteria.add(Restrictions.le("id", beginLogId)); } return (List<SqlLog>) criteria.addOrder(Order.desc("id")) .setMaxResults(maxNumber).list(); } }