/* * Data Hub Service (DHuS) - For Space data distribution. * Copyright (C) 2013,2014,2015 GAEL Systems * * This file is part of DHuS software sources. * * 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 <http://www.gnu.org/licenses/>. */ package fr.gael.dhus.database.dao; import java.sql.SQLException; import java.util.List; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.stereotype.Repository; import fr.gael.dhus.database.dao.interfaces.HibernateDao; import fr.gael.dhus.database.object.Search; import fr.gael.dhus.database.object.User; @Repository public class SearchDao extends HibernateDao<Search, String> { public List<Search> scrollSearchesOfUser (final User user, final int skip, final int top) { return getHibernateTemplate ().execute ( new HibernateCallback<List<Search>> () { @Override @SuppressWarnings ("unchecked") public List<Search> doInHibernate (Session session) throws HibernateException, SQLException { String hql = "SELECT s FROM User u LEFT OUTER JOIN u.preferences p " + "LEFT OUTER JOIN p.searches s " + "WHERE u.uuid like ? ORDER BY s.value"; Query query = session.createQuery (hql).setReadOnly (true); query.setString (0, user.getUUID ()); query.setFirstResult (skip); query.setMaxResults (top); return (List<Search>) query.list (); } }); } @Override public void delete (final Search search) { getHibernateTemplate ().execute (new HibernateCallback<Void>() { @Override public Void doInHibernate (Session session) throws HibernateException, SQLException { String sql = "DELETE FROM SEARCH_PREFERENCES WHERE SEARCHES_UUID = ?"; Query query = session.createSQLQuery (sql); query.setString (0, search.getUUID ()); query.executeUpdate (); return null; } }); super.delete (search); } /** * Inactive all saved search notifications of users. */ public void disableAllSearchNotifications () { getHibernateTemplate ().execute (new HibernateCallback<Void> () { @Override public Void doInHibernate (Session session) throws HibernateException, SQLException { String query = "UPDATE SEARCHES SET NOTIFY = false"; session.createSQLQuery (query).executeUpdate (); return null; } }); } }