// TODO clean this up private Query buildFindQuery(final QueryParam qp, final Change filter, final boolean count) { final StringBuilder hql = new StringBuilder(); if (count) { hql.append("select count(*) "); } hql.append(" from Change target where 1=1 "); if (filter.getId() != null) { hql.append("and target id like :id "); } if (filter.getMessage() != null) { hql.append("and upper(target.message) like :message "); } if (filter.getChangeDate() != null) { hql.append("and target.changeDate like :date "); } if (!count && qp != null && qp.hasSort()) { hql.append("order by upper(target.") .append(qp.getSort()) .append(") ") .append(qp.isSortAsc() ? " asc" : " desc"); } final Query query = getEntityManager().createQuery(hql.toString()); if (filter.getId() != null) { query.setParameter("id", "%" + filter.getId() + "%"); } if (filter.getMessage() != null) { query.setParameter("message", "%" + filter.getMessage().toUpperCase() + "%"); } if (filter.getChangeDate() != null) { query.setParameter("date", "%" + filter.getChangeDate() + "%"); } if (!count && qp != null) { query.setFirstResult(qp.getFirst()).setMaxResults(qp.getCount()); } return query; }
public void logChange(final String message) { final Change change = new Change(); change.setMessage(message); change.setChangeDate(new Date()); save(change); }