/** * This Source Code Form is subject to the terms of the Mozilla Public License, * v. 2.0. If a copy of the MPL was not distributed with this file, You can * obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under * the terms of the Healthcare Disclaimer located at http://openmrs.org/license. * * Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS * graphic logo is a trademark of OpenMRS Inc. */ package org.openmrs.api.db.hibernate; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.criterion.Restrictions; import org.openmrs.BaseOpenmrsMetadata; import org.openmrs.api.db.OpenmrsMetadataDAO; /** * Abstract class implementing basic data access methods for BaseOpenmrsMetadata persistents * * @since 1.10 * * @param <T> */ public class HibernateOpenmrsMetadataDAO<T extends BaseOpenmrsMetadata> extends HibernateOpenmrsObjectDAO<T> implements OpenmrsMetadataDAO<T> { public HibernateOpenmrsMetadataDAO(Class<T> mappedClass) { super(); this.mappedClass = mappedClass; } /** * @see org.openmrs.api.db.OpenmrsMetadataDAO#getAll(boolean) */ @Override public List<T> getAll(boolean includeRetired) { Criteria crit = sessionFactory.getCurrentSession().createCriteria(mappedClass); if (!includeRetired) { crit.add(Restrictions.eq("retired", false)); } return crit.list(); } /** * @see org.openmrs.api.db.OpenmrsMetadataDAO#getAll(boolean, java.lang.Integer, java.lang.Integer) */ @Override public List<T> getAll(boolean includeRetired, Integer firstResult, Integer maxResults) { Criteria crit = sessionFactory.getCurrentSession().createCriteria(mappedClass); if (!includeRetired) { crit.add(Restrictions.eq("retired", false)); } crit.setFirstResult(firstResult); crit.setMaxResults(maxResults); return crit.list(); } /** * @see org.openmrs.api.db.OpenmrsMetadataDAO#getAllCount(boolean) */ @Override public int getAllCount(boolean includeRetired) { String hql = "select count(*)" + " from " + mappedClass; if (!includeRetired) { hql += " where retired = false"; } Query query = sessionFactory.getCurrentSession().createQuery(hql); Number count = (Number) query.uniqueResult(); return count == null ? 0 : count.intValue(); } }