001: /*
002: * Created on 19/05/2004
003: *
004: * Swing Components - visit http://sf.net/projects/gfd
005: *
006: * Copyright (C) 2004 Igor Regis da Silva Simões
007: *
008: * This program is free software; you can redistribute it and/or
009: * modify it under the terms of the GNU General Public License
010: * as published by the Free Software Foundation; either version 2
011: * of the License, or (at your option) any later version.
012: *
013: * This program is distributed in the hope that it will be useful,
014: * but WITHOUT ANY WARRANTY; without even the implied warranty of
015: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
016: * GNU General Public License for more details.
017: *
018: * You should have received a copy of the GNU General Public License
019: * along with this program; if not, write to the Free Software
020: * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
021: *
022: */
023:
024: package br.com.gfpshare.db;
025:
026: import java.sql.ResultSet;
027: import java.sql.SQLException;
028: import java.util.ArrayList;
029:
030: /**
031: * Definição de um controller que intermedia a conexão com um banco de dados e os objetos de negócio
032: * @author Igor Regis da Silva Simões
033: */
034: public interface DAO<T extends PersistentObject> {
035: /**
036: * Libera uma conexão presa ao ResultSet passado como parametro
037: * @param old ResultSet que usa a conexão a ser liberada
038: * @throws SQLException Caso aocorra um problema na liberação da conexão
039: */
040: public void freeResource(ResultSet old) throws SQLException;
041:
042: /**
043: * Executa um select * na tabela representada pelo parametro type
044: * @param old ResultSet que usa a conexão a ser liberada
045: * @param type Tipo que indica a tabela onde estão os dados a serem recuperados
046: * @return resultado da consulta
047: */
048: public ResultSet getAll(ResultSet old, T type);
049:
050: /**
051: * Executa um select * na tabela representada pelo parametro type
052: * @param type Tipo que indica a tabela onde estão os dados a serem recuperados
053: * @return resultado da consulta em ofrma de uma array de PersistentObject
054: */
055: public ArrayList<T> getAllBy(T type) throws SQLException;
056:
057: /**
058: * @param argumento Executa uma consutla sql com os parametro representados pelo PersistentObject
059: * @return Resultado da consulta
060: * @throws SQLException Caso ocorra um erro na execução da consulta
061: */
062: public T getBy(T argumento) throws SQLException;
063:
064: /**
065: * Executa um select com os parametros passados
066: * @param old ResultSet que usa a conexão a ser liberada
067: * @param argumento Tipo que indica a tabela onde estão os dados a serem recuperados
068: * @return resultado da consulta
069: * @throws SQLException Caso ocorra um erro na execução da consulta
070: */
071: public ResultSet filterBy(ResultSet old, T argumento)
072: throws SQLException;
073:
074: /**
075: * Adiciona um novo registro em uma tabela do banco de dados
076: * @param novoRegistro registro a ser adicionado
077: * @return retorna true em caso de sucesso
078: * @throws SQLException Caso ocorra um erro na execução do insert
079: */
080: public boolean adicionarNovo(T novoRegistro) throws SQLException;
081:
082: /**
083: * Deleta registros de uma tabela do banco de dados
084: * @param aSerDeletado parametros que caracterizam os registros a serem deletados
085: * @return retorna true em caso de sucesso
086: * @throws SQLException Caso ocorra um erro na execução do delete
087: */
088: public boolean deletar(T aSerDeletado) throws SQLException;
089:
090: /**
091: * Executa uma atualizazação de um registro do banco de dados
092: * @param atualizacao Registro a ser atualizado
093: * @return retorna true em caso de sucesso
094: * @throws SQLException Caso ocorra um erro na execução do update
095: */
096: public boolean atualizar(T atualizacao) throws SQLException;
097:
098: /**
099: * Indica se será executada uma operação de insert
100: * @return true se estiver executando um insert.
101: */
102: public boolean isAdicionandoNovo();
103:
104: /**
105: * Determina será será executado um insert ou tentativa de update
106: * @param adicionandoNovo.
107: */
108: public void setAdicionandoNovo(boolean adicionandoNovo);
109:
110: /**
111: * Adiciona um listener que será avisado dos eventos deste controller
112: * @param listener ControllerListener
113: */
114: public void addControllerListener(DAOListener listener);
115:
116: /**
117: * Remove um listener que seria avisado dos eventos deste controller
118: * @param listener ControllerListener
119: */
120: public void removeControllerListener(DAOListener listener);
121:
122: }
|