/* * Copyright 2013 GiavaCms.org. * * Licensed under the Eclipse Public License version 1.0, available at * http://www.eclipse.org/legal/epl-v10.html */ package org.giavacms.common.repository; import java.util.ArrayList; import java.util.List; import org.giavacms.common.model.Search; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.criterion.Example; @SuppressWarnings("unchecked") public abstract class HAbstractRepository<T> extends AbstractRepository<T> { private static final long serialVersionUID = 1L; protected Session getSession() { return (Session) getEm().getDelegate(); } protected Criteria getRestrictionsH(Search<T> search, boolean justCount) { return getSession().createCriteria(getEntityType()).add( Example.create(search.getObj())); } public List<T> getList(int startRow, int pageSize, Criteria res) { List<T> result = new ArrayList<T>(); try { return (List<T>) res.list(); } catch (Exception e) { logger.info(e.getMessage()); } return result; } @Override public List<T> getList(Search<T> ricerca, int startRow, int pageSize) { try { List<T> result = new ArrayList<T>(); boolean count = false; Criteria res = getRestrictionsH(ricerca, count); if (res == null) return result; if (startRow >= 0) { res.setFirstResult(startRow); } if (pageSize > 0) { res.setMaxResults(pageSize); } return (List<T>) res.list(); } catch (Exception ex) { logger.error(ex.getMessage(),ex); return null; } } @Override public List<T> getAllList() { try { return (List<T>) getSession().createCriteria(getEntityType()) .list(); } catch (Exception ex) { logger.error(ex.getMessage(), ex); return null; } } @Override public int getListSize(Search<T> ricerca) { Long result = new Long(0); try { boolean count = true; Criteria res = getRestrictionsH(ricerca, count); if ((res != null) && (res.uniqueResult() != null)) result = (Long) res.uniqueResult(); return result.intValue(); } catch (Exception e) { logger.info(e.getMessage()); } return 0; } }