Como faço para transformar essa classe em uma INTERFACE?
Hoje Invoco ela assim:
try {
ManutencaoTabela mt = new ManutencaoTabela(parceiroComercial, "ParceirosComerciais2", cnn);
mt.IncluiRegistro();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Quero seja assim:
ManutencaoTabela.IncluiRegistro();
Essa é a classe:
/*
* ManutencaoTabela.java
*
* Created on 23 de Junho de 2007, 21:01
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package br.com.copaiba.manutencoes;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.ParameterMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.GregorianCalendar;
import java.util.LinkedHashMap;
import javax.swing.JOptionPane;
/**
*
* @author Paulo Roberto
*/
public class ManutencaoTabela {
private Connection conexao;
private Object tabela;
private String nomeTabela;
private ResultSet rsChavesTabela;
private ResultSet rsColunasTabela;
private ResultSet rsAtributosTabela;
private LinkedHashMap<String, Object> lhmAtributosClasse;
public ManutencaoTabela(final Object tabela, final String nomeTabela, final Connection conexao) throws SQLException {
this.conexao = conexao;
this.tabela = tabela;
this.nomeTabela = nomeTabela;
this.rsChavesTabela = conexao.getMetaData().getPrimaryKeys(this.conexao.getCatalog(), "root", "tb_" + this.nomeTabela);
this.rsColunasTabela = conexao.getMetaData().getColumns(this.conexao.getCatalog(), "root", "tb_" + this.nomeTabela, null);
this.rsAtributosTabela = conexao.getMetaData().getAttributes(this.conexao.getCatalog(), "root", "tb_" + this.nomeTabela, "");
this.lhmAtributosClasse = new LinkedHashMap<String, Object>();
}
public void IncluiRegistro() throws SQLException {
ExecutaTransacao(PreparaInclusaoRegistro());
}
public void AtualizaRegistro() throws SQLException {
ExecutaTransacao(PreparaAlteracaoRegistro());
}
public void ExcluiRegistro() throws SQLException {
ExecutaTransacao(PreparaExclusaoRegistro());
}
public void RecuperaRegistro() throws SQLException {
ExecutaTransacao(PreparaRecuperacaoRegistro());
}
protected void ExecutaTransacao(final String strSQL) {
this.lhmAtributosClasse = getAtributosClasse();
try {
//Prepara transação
PreparedStatement pstmt = conexao.prepareStatement(strSQL);
//Atribui valores aos parâmetros
int i = 0;
//Inclusão
if (strSQL.indexOf("INSERT INTO") > -1) {
//Parâmetros de contexto da QUERY
rsColunasTabela.beforeFirst();
while (rsColunasTabela.next()) {
if (rsColunasTabela.getString("IS_AUTOINCREMENT").equals("NO")) {
pstmt = TrataParametro(pstmt, ++i, this.lhmAtributosClasse.get(rsColunasTabela.getString("COLUMN_NAME")));
}
}
//Mostra String SQL
System.out.println(pstmt.toString());
//Executa procedimento
pstmt.executeUpdate();
} else if (strSQL.indexOf("UPDATE") > -1) {
//Parâmetros de contexto da QUERY
rsColunasTabela.beforeFirst();
while (rsColunasTabela.next()) {
if (rsColunasTabela.getString("IS_AUTOINCREMENT").equals("NO")) {
pstmt = TrataParametro(pstmt, ++i, this.lhmAtributosClasse.get(rsColunasTabela.getString("COLUMN_NAME")));
}
}
//Parâmetros da cláusula WHERE
rsChavesTabela.beforeFirst();
while (rsChavesTabela.next()) {
pstmt = TrataParametro(pstmt, ++i, this.lhmAtributosClasse.get(rsChavesTabela.getString("COLUMN_NAME")));
}
//Mostra String SQL
System.out.println(pstmt.toString());
//Executa procedimento
pstmt.executeUpdate();
} else if (strSQL.indexOf("DELETE FROM") > -1) {
//Parâmetros da cláusula WHERE
rsChavesTabela.beforeFirst();
while (rsChavesTabela.next()) {
pstmt = TrataParametro(pstmt, ++i, this.lhmAtributosClasse.get(rsChavesTabela.getString("COLUMN_NAME")));
}
//Mostra String SQL
System.out.println(pstmt.toString());
//Executa procedimento
pstmt.executeUpdate();
} else if (strSQL.indexOf("SELECT FROM") > -1) {
//Parâmetros da cláusula WHERE
rsChavesTabela.beforeFirst();
while (rsChavesTabela.next()) {
pstmt = TrataParametro(pstmt, ++i, this.lhmAtributosClasse.get(rsChavesTabela.getString("COLUMN_NAME")));
}
//Mostra String SQL
System.out.println(pstmt.toString());
//Executa procedimento
pstmt.executeQuery();
}
////Mostra parâmetros e seus respectivos valores - (Esta PORRA!, não Funciona com alguns Drivers. Inclusive este!)
//System.out.println("Parâmetros ...");
//
//ParameterMetaData pmd = pstmt.getParameterMetaData();
//
//for (int i2 = 1; i2 < pmd.getParameterCount(); i2++) {
// System.out.println("Parameter number " + i2);
// System.out.println(" Class name is " + pmd.getParameterClassName(i2));
// // Note: Mode relates to input, output or inout
// System.out.println(" Mode is " + pmd.getParameterClassName(i2));
// System.out.println(" Type is " + pmd.getParameterType(i2));
// System.out.println(" Type name is " + pmd.getParameterTypeName(i2));
// System.out.println(" Precision is " + pmd.getPrecision(i2));
// System.out.println(" Scale is " + pmd.getScale(i2));
// System.out.println(" Nullable? is " + pmd.isNullable(i2));
// System.out.println(" Signed? is " + pmd.isSigned(i2));
//}
//Fecha procedimento
pstmt.close();
} catch (SQLException errorSQL) {
JOptionPane.showMessageDialog(null, errorSQL.getMessage(), "Erro SQL", JOptionPane.ERROR_MESSAGE);
errorSQL.printStackTrace();
}
}
protected String PreparaInclusaoRegistro() throws SQLException {
StringBuffer sbSQL;
//Inclui Registro
sbSQL = new StringBuffer();
sbSQL.append("INSERT INTO ").append("tb_").append(this.nomeTabela).append(" ");
sbSQL.append("(");
//Lista as entradas (Campos da Tabela)
rsColunasTabela.beforeFirst();
while (rsColunasTabela.next()) {
if (rsColunasTabela.getString("IS_AUTOINCREMENT").equals("NO")) {
sbSQL.append(rsColunasTabela.getString("COLUMN_NAME")).append((", "));
}
}
//Retira o excesso
sbSQL.delete(sbSQL.length() - 2, sbSQL.length());
sbSQL.append(") VALUES (");
//Lista as entradas (Parâmetros)
rsColunasTabela.beforeFirst();
while (rsColunasTabela.next()) {
if (rsColunasTabela.getString("IS_AUTOINCREMENT").equals("NO")) {
sbSQL.append("?, ");
}
}
//Retira o excesso
sbSQL.delete(sbSQL.length() - 2, sbSQL.length());
sbSQL.append(")");
return sbSQL.toString();
}
protected String PreparaAlteracaoRegistro() throws SQLException {
StringBuffer sbSQL;
//Alterar Registro
sbSQL = new StringBuffer();
sbSQL.append("UPDATE ").append("tb_").append(this.nomeTabela).append(" SET ");
//Lista as entradas (Parâmetros)
rsColunasTabela.beforeFirst();
while (rsColunasTabela.next()) {
if (rsColunasTabela.getString("IS_AUTOINCREMENT").equals("NO")) {
sbSQL.append(rsColunasTabela.getString("COLUMN_NAME")).append(" = ").append("?, ");
}
}
//Retira o excesso
sbSQL.delete(sbSQL.length() - 2, sbSQL.length()).append(" ");
sbSQL.append("WHERE ");
//Lista as entradas (Parâmetros / Campos Chave)
rsChavesTabela.beforeFirst();
while (rsChavesTabela.next()) {
sbSQL.append(rsChavesTabela.getString("COLUMN_NAME")).append(" = ").append("? AND ");
}
//Retira o excesso
sbSQL.delete(sbSQL.length() - 5, sbSQL.length());
return sbSQL.toString();
}
protected String PreparaExclusaoRegistro() throws SQLException {
StringBuffer sbSQL = new StringBuffer();
//Exclui Registro
sbSQL.append("DELETE FROM ").append("tb_").append(this.nomeTabela).append(" ");
sbSQL.append("WHERE ");
//Lista as entradas (Parâmetros / Campos Chave)
rsChavesTabela.beforeFirst();
while (rsChavesTabela.next()) {
sbSQL.append(rsChavesTabela.getString("COLUMN_NAME")).append(" = ").append("? AND ");
}
//Retira o excesso
sbSQL.delete(sbSQL.length() - 5, sbSQL.length()).append(" ");
return sbSQL.toString();
}
protected String PreparaRecuperacaoRegistro() throws SQLException {
StringBuffer sbSQL;
//Recupera Registro
sbSQL = new StringBuffer();
sbSQL.append("SELECT ");
//Lista as entradas (Campos da Tabela)
rsColunasTabela.beforeFirst();
while (rsColunasTabela.next()) {
sbSQL.append(rsColunasTabela.getString("COLUMN_NAME")).append((", "));
}
//Retira o excesso
sbSQL.delete(sbSQL.length() - 2, sbSQL.length()).append(" ");
sbSQL.append("FROM ").append("tb_").append(this.nomeTabela).append(" ");
sbSQL.append("WHERE ");
//Lista as entradas (Parâmetros / Campos Chave)
rsChavesTabela.beforeFirst();
while (rsChavesTabela.next()) {
sbSQL.append(rsChavesTabela.getString("COLUMN_NAME")).append(" = ").append("? AND ");
}
//Retira o excesso
sbSQL.delete(sbSQL.length() - 5, sbSQL.length());
return sbSQL.toString();
}
protected LinkedHashMap<String, Object> getAtributosClasse() {
LinkedHashMap<String, Object> lhm = new LinkedHashMap<String, Object>();
// //Campos (Nomes dos atributos)
// Field fields[] = this.tabela.getClass().getDeclaredFields();
// for (int intCampos = 0; intCampos < fields.length; intCampos++) {
// lhm.put(fields[intCampos].getName(), null);
// }
//Métodos (Valores dos atributos)
Method methods[] = this.tabela.getClass().getDeclaredMethods();
for (int intValores = 0; intValores < methods.length; intValores++) {
if(!methods[intValores].getReturnType().equals(Void.class) && methods[intValores].getParameterTypes().length <= 0) {
try {
//if (lhm.containsKey(methods[intValores].getName().substring(3, methods[intValores].getName().length()))) {
System.out.println("Valor do Método = " + methods[intValores].getName() + " - " + methods[intValores].invoke(this.tabela, new Object[0]));
if (methods[intValores].invoke(this.tabela, new Object[0]) != null) {
lhm.put(methods[intValores].getName().substring(3, methods[intValores].getName().length()), methods[intValores].invoke(this.tabela, new Object[0]));
}
//}
} catch (IllegalArgumentException ex) {
ex.printStackTrace();
} catch (InvocationTargetException ex) {
ex.printStackTrace();
} catch (IllegalAccessException ex) {
ex.printStackTrace();
}
}
}
return lhm;
}
protected static PreparedStatement TrataParametro(final PreparedStatement pstmt, final int i, final Object Objeto) throws SQLException {
PreparedStatement pstmt2 = pstmt;
//Trata o parâmetro
if(Objeto instanceof GregorianCalendar) {
pstmt2.setDate(i, new java.sql.Date(((GregorianCalendar) Objeto).getTime().getTime()));
} else if (Objeto instanceof String) {
pstmt2.setString(i, (String) Objeto);
} else if (Objeto instanceof Integer) {
pstmt2.setInt(i, ((Integer) Objeto).intValue());
} else if (Objeto instanceof Float) {
pstmt2.setDouble(i, (Float) Objeto);
} else if (Objeto instanceof Short) {
pstmt2.setDouble(i, (Short) Objeto);
} else if (Objeto instanceof Double) {
pstmt2.setDouble(i, (Double) Objeto);
} else {
System.out.println("Tipo inexistente -> " + "");
pstmt2.setObject(i, null);
}
return pstmt2;
}
}

