From 07c2ccaec9d0f27f373822e2af63c14bd2fd6e52 Mon Sep 17 00:00:00 2001 From: Miciele Ghiorghis Date: Wed, 16 Jan 2013 17:18:06 +0100 Subject: [PATCH] Tim-connector: DAO for OrderSyncInfo An implementation of the interface IOrderSyncInfoDAO --- .../orders/daos/OrderSyncInfoDAO.java | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 libreplan-business/src/main/java/org/libreplan/business/orders/daos/OrderSyncInfoDAO.java diff --git a/libreplan-business/src/main/java/org/libreplan/business/orders/daos/OrderSyncInfoDAO.java b/libreplan-business/src/main/java/org/libreplan/business/orders/daos/OrderSyncInfoDAO.java new file mode 100644 index 000000000..7e19cc77d --- /dev/null +++ b/libreplan-business/src/main/java/org/libreplan/business/orders/daos/OrderSyncInfoDAO.java @@ -0,0 +1,71 @@ +/* + * This file is part of LibrePlan + * + * Copyright (C) 2013 St. Antoniusziekenhuis + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package org.libreplan.business.orders.daos; + +import java.util.List; + +import org.hibernate.Criteria; +import org.hibernate.criterion.DetachedCriteria; +import org.hibernate.criterion.Projections; +import org.hibernate.criterion.Property; +import org.hibernate.criterion.Restrictions; +import org.libreplan.business.common.daos.GenericDAOHibernate; +import org.libreplan.business.orders.entities.Order; +import org.libreplan.business.orders.entities.OrderSyncInfo; +import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Repository; + +/** + * DAO for {@link OrderSyncInfo} + * + * @author Miciele Ghiorghis + */ +@Repository +@Scope(BeanDefinition.SCOPE_SINGLETON) +public class OrderSyncInfoDAO extends GenericDAOHibernate + implements IOrderSyncInfoDAO { + + @Override + public OrderSyncInfo findByOrderLastSynchronizedInfo(Order order) { + DetachedCriteria mostRecentDate = DetachedCriteria + .forClass(OrderSyncInfo.class) + .setProjection(Projections.max("lastSyncDate")) + .add(Restrictions.isNotNull("code")); + + Criteria criteria = getSession().createCriteria(OrderSyncInfo.class); + + criteria.add(Restrictions.eq("order", order)); + criteria.add(Property.forName("lastSyncDate").eq(mostRecentDate)); + + return (OrderSyncInfo) criteria.uniqueResult(); + } + + @Override + @SuppressWarnings("unchecked") + public List findByOrderLastSynchronizedInfos(Order order) { + Criteria criteria = getSession().createCriteria(OrderSyncInfo.class); + criteria.add(Restrictions.eq("order", order)); + criteria.add(Restrictions.isNotNull("code")); + criteria.addOrder(org.hibernate.criterion.Order.desc("lastSyncDate")); + return criteria.list(); + } + +}