001: /*
002: * Created on 08/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: package br.com.gfpshare.db;
024:
025: import java.sql.SQLException;
026: import java.util.ArrayList;
027: import java.util.Map;
028:
029: /**
030: * Esta interface define os métodos básicos de um objeto que deseja ter seus dados persistidos em um banco de dados.
031: * Na verdade esta interface é a base de uma hierarquia, cuje a segunda é a classe abstrata AbstractPersistentObject.
032: * @author Igor Regis da Silva Simoes
033: * @see br.com.gfpshare.db.AbstractPersistentObject
034: */
035: public interface PersistentObject {
036: /**
037: * Constante indicando o formato curto de apresentação deste objeto em forma de String.
038: */
039: public static final int CURTO = 0;
040:
041: /**
042: * Constante indicando o formato médio de apresentação deste objeto em forma de String.
043: */
044: public static final int MEDIO = 1;
045:
046: /**
047: * Constante indicando o formato longo de apresentação deste objeto em forma de String.
048: */
049: public static final int LONGO = 2;
050:
051: /**
052: * Retorna o sql de intert para este objeto
053: * @return String contendo o sql
054: */
055: public String getInsertSQL();
056:
057: /**
058: * Retorna o sql de upadate para este objeto
059: * @return String contendo o sql
060: */
061: public String getUpdateSQL();
062:
063: /**
064: * Retorna o sql de select para este objeto
065: * @return String contendo o sql
066: */
067: public String getSelectSQL();
068:
069: /**
070: * Retorna o sql de delete para este objeto
071: * @return String contendo o sql
072: */
073: public String getDeleteSQL();
074:
075: /**
076: * Realiza a validação deste objeto
077: * @throws SQLException lança caso os dados esteja inválidos
078: */
079: public void validate() throws SQLException;
080:
081: /**
082: * Atribui novos valores para este objeto
083: * @param dados Map contendo os novoa valores
084: * @throws DataAccessException
085: */
086: public void setDados(Map<String, Object> dados)
087: throws DataAccessException;
088:
089: /**
090: * Retorna os valores deste objetos
091: * @return Map contendo os valores deste objeto
092: * @throws DataAccessException
093: */
094: public Map<String, Object> getAsMap() throws DataAccessException;
095:
096: /**
097: * Retorna o nome da tabela no banco de dados que possui os dados contidos neste objeto
098: * @return Strring com o nome da tebela
099: */
100: public String getTableName();
101:
102: /**
103: * Retorna os nomes das colunas da tabela no banco de dados que possui os dados deste objeto
104: * @return Array de Strting com os nomes das colunas
105: */
106: public ArrayList<String> getColumnsName();
107:
108: /**
109: * Retorna os nomes das chaves primarias da tabela no banco de dados que possui os dados deste objeto
110: * @return Array de Strting com os nomes das chaves primarias
111: */
112: public ArrayList<String> getPkNames();
113:
114: /**
115: * Determina uma nova ordem a ser seguida na seleção de uma coleção de objetos
116: * @param columns Array String contendo as colunas na ordem que devem ser apresentadas
117: */
118: public void setOrderBy(String[] columns);
119:
120: /**
121: * Retorna a ordem a ser seguida na seleção de uma coleção de objetos
122: * @return Array String contendo as colunas na ordem que devem ser apresentadas
123: */
124: public String[] getOrderBy();
125:
126: /**
127: * Adiciona uma nova clausula a um sql
128: * @param condicao clausula a ser adicionada
129: */
130: public void addCondicaoExtra(SQLCondition condicao);
131:
132: /**
133: * Remove uma clausula de um sql
134: * @param condicao clausula a ser removida
135: */
136: public void removeCondicaoExtra(SQLCondition condicao);
137:
138: /**
139: * @return Retorna o valor de resultadoDesejado.
140: */
141: public String getResultadoDesejado();
142:
143: /**
144: * Trata-se da string a ser colocada logo após a palavra select de uma query.
145: * Para usar o * basta setar esta propriedade como null.
146: * @param resultadoDesejado The resultadoDesejado to set.
147: */
148: public void setResultadoDesejado(String resultadoDesejado);
149:
150: /**
151: * Retorna a representação desta objeto como uma string de acordo com um de tres formatos
152: * @param format Formato da representação.
153: * @return a representação desta objeto como uma string de acordo com um de tres formatos
154: */
155: public String getAsString(int format);
156:
157: /**
158: * Determina o nome/tipo do banco de dados que contem os dados deste objeto e portanto o forato do sql que deverá ser gerado
159: * @param dataBase Nome do banco de dados
160: */
161: public void setDataBase(String dataBase);
162:
163: /**
164: * Limpa todos os campos deste objeto
165: */
166: public void clearAllFields();
167:
168: /**
169: * Retorna um ArrayList com os parametros a serem setados no SQL
170: * @return
171: */
172: public ArrayList<Object> getParametrosSQL();
173: }
|