Java tutorial
/* ************************************************************************************ * Copyright (C) 2001-2011 encuestame: system online surveys Copyright (C) 2011 * encuestame Development Team. * Licensed under the Apache Software License version 2.0 * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software distributed * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR * CONDITIONS OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. ************************************************************************************ */ package org.encuestame.persistence.dao.imp; import java.util.Date; import java.util.List; import org.encuestame.persistence.dao.IScheduled; import org.encuestame.persistence.domain.Schedule; import org.encuestame.utils.DateUtil; import org.encuestame.utils.enums.Status; import org.hibernate.SessionFactory; import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; /** * {@link PollDao} Interface. * @author Morales,Diana Paola paolaATencuestame.org * @since October 14, 2013 */ @Repository("scheduledDao") public class ScheduleDao extends AbstractHibernateDaoSupport implements IScheduled { @Autowired public ScheduleDao(SessionFactory sessionFactory) { setSessionFactory(sessionFactory); } /* * (non-Javadoc) * * @see * org.encuestame.persistence.dao.IScheduled#retrieveMinimumScheduledDate( * org.encuestame.utils.enums.Status) */ @SuppressWarnings("unchecked") public Date retrieveMinimumScheduledDate(final Status status) { final DetachedCriteria criteria = DetachedCriteria.forClass(Schedule.class); criteria.setProjection(Projections.min("scheduleDate")); List<Schedule> results = (List<Schedule>) getHibernateTemplate().findByCriteria(criteria); return (Date) (results.get(0) == null ? new Date() : results.get(0)); } /* * (non-Javadoc) * * @see * org.encuestame.persistence.dao.IScheduled#retrieveScheduled(org.encuestame * .utils.enums.Status) */ @SuppressWarnings("unchecked") public List<Schedule> retrieveScheduled(final Status status, final Date minimumDate) { final DetachedCriteria criteria = DetachedCriteria.forClass(Schedule.class); // Between Minimun date and currently date criteria.add(Restrictions.between("scheduleDate", minimumDate, DateUtil.getCurrentCalendarDate())); criteria.add(Restrictions.eq("status", status)); return (List<Schedule>) getHibernateTemplate().findByCriteria(criteria); } /* * (non-Javadoc) * * @see * org.encuestame.persistence.dao.IScheduled#retrieveScheduledFailed(java * .lang.Integer, org.encuestame.utils.enums.Status) */ @SuppressWarnings("unchecked") public List<Schedule> retrieveFailedScheduledItems(final Integer attempts, final Status status) { final DetachedCriteria criteria = DetachedCriteria.forClass(Schedule.class); criteria.add( Restrictions.or(Restrictions.eq("publishAttempts", attempts), Restrictions.eq("status", status))); return (List<Schedule>) getHibernateTemplate().findByCriteria(criteria); } }