/** * Copyright (C) 2008-2010, Squale Project - http://www.squale.org * * This file is part of Squale. * * Squale is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 3 of the * License, or any later version. * * Squale 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 General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Squale. If not, see <http://www.gnu.org/licenses/>. */ package org.squale.jraf.spi.persistence; import java.io.Serializable; import java.util.List; import org.squale.jraf.commons.exception.JrafDaoException; import org.squale.jraf.spi.daolayer.IDAO; /** * * <p>Title : IPersistenceDAO.java</p> * <p>Description : Interface d�crivant le comportement * d'un DAO de persistance.</p> * <p>Copyright : Copyright (c) 2004</p> * */ public interface IPersistenceDAO extends IDAO { /** * Rafraichir un objet du cache session depuis la base * L'objet doit poss�der un identifiant valide. * @param session * @param obj: Objet a lire. * @throws JrafDaoException */ public abstract void refresh(ISession session, Object obj) throws JrafDaoException; /** * Find utilisant un objet exemple: * le find est effectue suivant les proprietes simples de l'objet en parametre * @param session session de persistance * @param bo businness object * @return List des elements trouves * @throws JrafDaoException */ public abstract List findByExample(ISession session, Object bo) throws JrafDaoException; /** * Find utilisant un objet exemple: * le find est effectue suivant les proprietes simples de l'objet en parametre * @param session session de persistance * @param bo businness object * @param ignoreCase ignore la casse * @param likeMode mode like * @return List des elements trouves * @throws JrafDaoException */ public abstract List findByExample( ISession session, Object bo, boolean ignoreCase, boolean likeMode) throws JrafDaoException; /** * Find utilisant un objet exemple: * le find est effectue suivant les proprietes simples de l'objet en parametre * @param session session de persistance * @param bo businness object * @param nbLignes nombre de lignes * @param indexDepart index de depart * @return List des elements trouves * @throws JrafDaoException */ public abstract List findByExample( ISession session, Object bo, int nbLignes, int indexDepart) throws JrafDaoException; /** * Execute un find a partir d'un objet exemple * @param session session de persistance * @param bo businness object exemple * @param nbLignes nombre de lignes * @param indexDepart index de depart * @param ignoreCase ignore la casse * @param likeMode mode like * @param cache true si les elements retournes sont mis en cache, false sinon * @return liste d'objets retrouves * @throws JrafDaoException */ public abstract List findByExample( ISession session, Object bo, int nbLignes, int indexDepart, boolean ignoreCase, boolean likeMode, boolean cache) throws JrafDaoException; /** * Find utilisant un objet exemple: * le find est effectue suivant les proprietes simples de l'objet en parametre * @param session session de persistance * @param bo businness object * @param nbLignes nombre de lignes * @param indexDepart index de depart * @param cache true pour placer les elements retournes en cache session, false sinon * @return List des elements trouves * @throws JrafDaoException */ public List findByExample( ISession session, Object bo, int nbLignes, int indexDepart, boolean cache) throws JrafDaoException; /** * Execute un find a partir d'un objet exemple. * @param session session de persistance * @param bo businness object exemple * @param nbLignes nombre de lignes * @param indexDepart index de depart * @param ignoreCase ignore la casse * @param likeMode mode like * @return liste d'objets retrouves * @throws JrafDaoException */ public List findByExample( ISession session, Object bo, int nbLignes, int indexDepart, boolean ignoreCase, boolean likeMode) throws JrafDaoException; /** * Creation de l'objet m�tier persistant. * @param objMetier * @param session * @throws JrafDaoException */ void create(ISession session, Object objMetier) throws JrafDaoException; /** * Lecture d'un objet. Lecture depuis le cache ou la base. * @param session session de persistance * @param id id de l'objet * @throws JrafDaoException */ Object get(ISession session, Serializable id) throws JrafDaoException; /** * Lecture depuis la session courante. <br> * Cette m�thode suppose que l'objet est pr�sent dans le cache de la session . * Lecture simple. * <li>si l'id n'est pas complet g�n�re une exception. * <li>Si l'objet n'est pas dans le cache/r�f�renc� par un proxy sur la classe g�n�re une * exception si lazy=false, sinon cree un proxy * <li>Si l'objet est marqu� comme �tant un proxy au niveau du mapping il * est utilis�. * <li>Si l'objet est d�ja r�f�renc� par un proxy rien ne se passe. * You should not use this method to determine if an instance exists (use get() instead). Use this only to retrieve an instance that you assume exists, where non-existence would be an actual error. * @param oid id de l'objet * @throws JrafDaoException */ public Object loadFromSession(ISession session, Serializable oid) throws JrafDaoException; /** * Lecture d'un objet a partir de sa cle * @param session session de persistance * @param oid cle * @return objet charge * @throws JrafDaoException */ public Object load(ISession session, Serializable oid) throws JrafDaoException; /** * Suppression d'un objet dont l'identifiant est complet. * @param objMetier * @param session * @throws JrafDaoException */ void remove(ISession session, Object objMetier) throws JrafDaoException; /** * Suppression de l'ensemble des entit�s d'une classe donn�e. * @param session * @throws JrafDaoException */ void removeAll(ISession session) throws JrafDaoException; /** * Supression d'un sous ensemble selectionn� suivant une requete HQL. * Si la clause where existe, elle doit comporter une clause where valide incluant * le mot cl� <b>Where</b * <li> ie: 'where Avion = a'</li> * Sinon, elle peut �tre nulle dans ce cas il s'agit d'un select * * @param session * @param whereClause clause where de la requete HQL. * @return nombre d'instance supprime * @throws JrafDaoException */ int removeWhere(ISession session, String whereClause) throws JrafDaoException; /** * Impl�mentation sp�cifique Hibernate<br> * Supression d'un sous ensemble selectionn� suivant une requete HQL. * Si la clause where existe, elle doit etre une clause where valide incluant * le mot cl� <b>Where</b * <li> ie: 'where Avion = :avion'</li> * Sinon, elle peut �tre nulle dans ce cas il s'agit d'un delete * * @param session * @param whereClause clause where de la requete HQL. * @param bean Bean ou sont lu les parametres de la requete * @return nombre d'instance supprime * @throws JrafDaoException */ public int removeWhere(ISession session, String whereClause, Object bean) throws JrafDaoException; /** * Cr�ation ou sauvegarde de l'objet en fonction du param�trage d�fini dans le fichier de mapping * @param objMetier * @param session * @throws JrafDaoException */ void save(ISession session, Object objMetier) throws JrafDaoException; /** * Requ�te libre en langage OQL ou SQL suivant l'impl�mentation du moteur d'acc�s aux donn�es. * La clause where doit comporter une clause where valide incluant * le mot cl� <b>Where</b * <li> ie: 'where Avion = a'</li> * @param requete * @param session * @return List * @throws JrafDaoException */ java.util.List find(ISession session, String requete) throws JrafDaoException; /** * Execute la requete en valorisant les parametres. * Les valeurs des parametres sont recuperes dans le bean en suivant les noms * utilises dans la requete * Requ�te libre en langage OQL ou SQL suivant l'impl�mentation du moteur d'acc�s aux donn�es. * La clause where doit comporter une clause where valide incluant * le mot cl� <b>Where</b * <li> ie: 'where Avion = :avion'</li> * @param session session a utiliser * @param lRequete requete HQL executee * @param bean bean contenant les parametre de la requete * @return liste d'objets trouves * @throws JrafDaoException exception */ public java.util.List find( ISession session, String lRequete, Object bean) throws JrafDaoException; /** * Method findAll. Remonte une liste compl�te d'objets m�tiers. * @param requete * @param session * @return List * @throws JrafDaoException */ java.util.List findAll(ISession session) throws JrafDaoException; /** * Method findWhereScrollable. Retourne nbligne de la requete pass�e en argument * Si la clause where existe, elle doit comporter une clause where valide incluant * le mot cl� <b>Where</b * <li> ie: 'where Avion = a'</li> * Sinon, elle peut �tre nulle dans ce cas il s'agit d'un select * * @param whereClause Requete a executer * @param session session utilisee * @param nbLignes Nombre de lignes a retourner * @param indexDepart Index de lma premiere ligne a retourner * @param bCaching: Si <b>true</b> retourne utilise l'API iterate() sinon list() * @return Object soit une List si bcaching = true. * soit un Iterator si bcaching = false. * @throws JrafDaoException */ Object findWhereScrollable( ISession session, String whereClause, int nbLignes, int indexDepart, boolean bCaching) throws JrafDaoException; /** * Method findWhereScrollable. Retourne nbligne de la requete pass�e en argument * Si la clause where existe, elle doit comporter une clause where valide incluant * le mot cl� <b>Where</b * <li> ie: 'where Avion = a'</li> * Sinon, elle peut �tre nulle dans ce cas il s'agit d'un select * * @param whereClause Requete a executer * @param session session utilisee * @param bean Bean ou sont lu les parametres de la requete * @param nbLignes Nombre de lignes a retourner * @param indexDepart Index de lma premiere ligne a retourner * @param bCaching: Si <b>true</b> retourne utilise l'API iterate() sinon list() * @return Object soit une List si bcaching = true. * soit un Iterator si bcaching = false. * @throws JrafDaoException */ Object findWhereScrollable( ISession session, String whereClause, Object bean, int nbLignes, int indexDepart, boolean bCaching) throws JrafDaoException; /** * Retourne une List d'objet fonction de la clause where. * La construction de la requete utilise la m�thode getRequete() pour initialiser * le d�but de la clause. * @param whereClause: clause avec le mot clef "where" en premier * @param session * @return List * @throws JrafDaoException */ java.util.List findWhere(ISession session, String whereClause) throws JrafDaoException; /** * Retourne une List d'objet fonction de la clause where. * La construction de la requete utilise la m�thode getRequete() pour initialiser * le d�but de la clause. * Les valeurs des parametres sont recuperes dans le bean en suivant les noms * utilises dans la requete * @param session session a utiliser * @param whereClause whereClause: clause avec le mot clef "where" en premier * @param bean bean contenant les parametre de la requete * @return liste d'objets trouves * @see org.squale.jraf.spi.persistence.IPersistenceDAO#findWhere(org.squale.jraf.spi.persistence.ISession, java.lang.String) */ java.util.List findWhere( ISession session, String whereClause, Object bean) throws JrafDaoException; /** * Retourne le nombre d'occurence totale d'un objet en * base. * @param session * @return Integer (null si pb). * @throws JrafDaoException */ public Integer count(ISession session) throws JrafDaoException; /** * Retourne le nombre d'objets en fonction de la clause where * Si la clause where existe, elle doit comporter une clause where valide incluant * le mot cl� <b>Where</b * <li> ie: 'where Avion = a'</li> * Sinon, elle peut �tre nulle dans ce cas il s'agit d'un <b>select *</b> * @param session * @param whereClause * @return Integer Nombre d'�l�ment trouv�. * @throws JrafDaoException */ public Integer countWhere(ISession session, String whereClause) throws JrafDaoException; /** * Retourne le nombre d'objets en fonction de la clause where * Si la clause where existe, elle doit comporter une clause where valide incluant * le mot cl� <b>Where</b * <li> ie: 'where Avion = a'</li> * Sinon, elle peut �tre nulle dans ce cas il s'agit d'un <b>select *</b> * @param session * @param whereClause * @param bean Bean ou sont lu les parametres de la requete * @return Integer Nombre d'�l�ment trouv�. * @throws JrafDaoException */ public Integer countWhere(ISession session, String whereClause, Object bean) throws JrafDaoException; }