/**
* 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;
import org.squale.jraf.spi.persistence.ISession;
/**
*
* <p>Title : ITLSHibernateDAO.java</p>
* <p>Description : Interface d�crivant le comportement
* d'un DAO de persistance.</p>
* <p>Copyright : Copyright (c) 2004</p>
*
*/
public interface ITLSHibernateDAO extends IDAO {
/**
* Rafraichir un objet du cache session depuis la base
* L'objet doit poss�der un identifiant valide.
* @param obj: Objet a lire.
* @throws JrafDaoException
*/
public abstract void refresh(Object obj) throws JrafDaoException;
/**
* Find utilisant un objet exemple:
* le find est effectue suivant les proprietes simples de l'objet en parametre
* @param bo businness object
* @return List des elements trouves
* @throws JrafDaoException
*/
public abstract List findByExample(Object bo) throws JrafDaoException;
/**
* Find utilisant un objet exemple:
* le find est effectue suivant les proprietes simples de l'objet en parametre
* @param bo businness object
* @param ignoreCase ignore la casse
* @param likeMode mode like
* @return List des elements trouves
* @throws JrafDaoException
*/
public abstract List findByExample(
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 bo businness object
* @param nbLignes nombre de lignes
* @param indexDepart index de depart
* @return List des elements trouves
* @throws JrafDaoException
*/
public abstract List findByExample(
Object bo,
int nbLignes,
int indexDepart)
throws JrafDaoException;
/**
* Execute un find a partir d'un objet exemple
* @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 abstract List findByExample(
Object bo,
int nbLignes,
int indexDepart,
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 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(
Object bo,
int nbLignes,
int indexDepart,
boolean cache)
throws JrafDaoException;
/**
* Execute un find a partir d'un objet exemple
* @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(
Object bo,
int nbLignes,
int indexDepart,
boolean ignoreCase,
boolean likeMode,
boolean cache)
throws JrafDaoException;
/**
* Creation de l'objet m�tier persistant.
* @param objMetier
* @throws JrafDaoException
*/
void create(Object objMetier) throws JrafDaoException;
/**
* Lecture d'un objet. Lecture depuis le cache ou la base.
* @param id id de l'objet
* @throws JrafDaoException
*/
Object get(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 g�n�re une
* exception.
* <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.
* @param oid id de l'objet
* @throws JrafDaoException
*/
public Object loadFromSession(Serializable oid) throws JrafDaoException;
/**
* Lecture d'un objet a partir de sa cle
* @param oid cle
* @return objet charge
* @throws JrafDaoException
*/
public Object load(Serializable oid) throws JrafDaoException;
/**
* Suppression d'un objet dont l'identifiant est complet.
* @param objMetier
* @throws JrafDaoException
*/
void remove(Object objMetier) throws JrafDaoException;
/**
* Suppression de l'ensemble des entit�s d'une classe donn�e.
* @throws JrafDaoException
*/
void removeAll() 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 whereClause clause where de la requete HQL.
* @return Nombre d'instances supprimees
* @throws JrafDaoException
*/
int removeWhere(String whereClause) 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 whereClause clause where de la requete HQL.
* @param bean Bean ou sont lus les valeurs des parametres de la requete
* @return Nombre d'instances supprimees
* @throws JrafDaoException
*/
int removeWhere(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
* @throws JrafDaoException
*/
void save(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
* @return List
* @throws JrafDaoException
*/
List find(String requete) throws JrafDaoException;
/**
* Method findAll. Remonte une liste compl�te d'objets m�tiers.
* @param requete
* @return List
* @throws JrafDaoException
*/
List findAll() 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
* @param nbLignes
* @param indexDepart
* @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.
*/
Object findWhereScrollable(
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
* @param bean Bean ou sont lus les valeurs des parametres de la requete
* @param nbLignes
* @param indexDepart
* @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.
*/
public Object findWhereScrollable(
String whereClause,
Object bean,
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
* @param nbLignes
* @param indexDepart
* @return Liste des elements trouves
*/
List findWhereScrollable(
String whereClause,
int nbLignes,
int indexDepart)
throws JrafDaoException;
/**
* Retourne une liste d'objet fonction de la clause where.
* @param whereClause: clause avec le mot clef "where" en premier
* @return List
* @throws JrafDaoException
*/
List findWhere(String whereClause) throws JrafDaoException;
/**
* Retourne une liste d'objet fonction de la clause where.
* @param whereClause: clause avec le mot clef "where" en premier
* @param bean Bean ou sont lu les parametres de la requete
* @return List
* @throws JrafDaoException
*/
List findWhere(String whereClause, Object bean) throws JrafDaoException;
/**
* Retourne le nombre d'occurence totale d'un objet en
* base.
* @return Integer (null si pb).
* @throws JrafDaoException
*/
Integer count() 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 whereClause
* @return Integer Nombre d'�l�ment trouv�.
* @throws JrafDaoException
*/
Integer countWhere(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 whereClause
* @param bean Bean ou sont lu les parametres de la requete
* @return Integer Nombre d'�l�ment trouv�.
* @throws JrafDaoException
*/
Integer countWhere(String whereClause, Object bean)
throws JrafDaoException;
}