Log de erros sem o Log4j

4 respostas
R

Boa noite pessoal,

eu tenho experiência de trabalho com vb/vba e desejando expandir meus conhecimentos resolvi tentar desenvolver uma aplicação em Java. Eu terminando de criar uma aplicação de ETL utilizando java, porém me deparei com um problema devido a falta de conhecimento de alguns conceitos do Java e por isso peço-lhes ajuda.
A aplicação já está conectando no banco de dados que eu necessito, extraí os dados, faz a detecção de alertas que eu necessito. Até aí está tudo bem. Pórém eu gostaria de ter um log de erros, para saber quando uma conexão em um dos bancos de dados que esta aplicação for conectar (ela conecta em vários bancos de dados) der erro eu possa saber e assim identificar os erros e solucioná-los o mais rápido possível.
Há 4 classes nessa aplicação:

[list]DBAcesso : a classe responsável por fazer todo o trabalho de "entrar em contato" com o banco de dados através da jdbc. Alguns métodos da classe devem retornar um erro caso a execução destes não ocorra com sucesso;
DBErros: classe utilizada para inserir os dados dos erros numa tabela no meu banco de dados;
ETLOlhoVivo: a classe que faz o trabalho de ETL e que caso apareça algum erro ela chame um objeto do tipo DBErros e insira o erro retornado por DBAcesso;
Main: a classe principal onde há a interface gráfica.[/list]

Abaixo segue o código fonte para vocês entenderem e que possam me ajudar.

package etl_olho_vivo;

// TesteConexaoBanco.java
import camada_bd.*;
import java.sql.*;
import java.util.*;

public class ETLOlhoVivo
{  
        private String usuario = new String ();             // variável para armazenar o usuário p/ conectar no B.D.
        private String usuarioBDExt = new String();         // variável para armazenar o usuário p/ conectar no B.D. externo
        private String senha = new String ();               // variável para armazenar a senha para conectar no B.D.
        private String senhaBDExt = new String();           // variável para armazenar a senha para conectar no B.D. externo
        private String hostName = new String ();            // variável para armazenar o host name do servidor de B.D.
        private String SID = new String ();                 // variável para armazenar o SID
        private String loja = new String ();                // variável para armazenar a loja
        private String strSql = new String ();              // variável para armazenar os sqls a serem executados
        private String dataInicial = new String ();         // variável para armazenar a data inicial a que os dados extraídos se referem
        private String dataFinal = new String ();           // variável para armazenar a data final a que os dados extraídos referem  
        private String datLancamento = new String();        // variável para armazenar a data de lançamento da divergência a ser inserida no B.D.
        private String datLancamentoAux = new String ();    // variável auxiliar para armazenar a data para tratamento
        private String URLBD = new String ();               // variável para armazenar o URL do Banco de Dados
        private int numPorta;                               // variável para armazenar o número da porta para conectar no B.D.
        private boolean sucessoProcessamento;               // flag utilizada que informa se o processamento foi concluído com sucesso
        private int numLog;                                 // número utilizado pelo log
        DBErros logETL; 
        
        private void setSucessoProcessamento (boolean sucessoProcessamento)
        {
            this.sucessoProcessamento = sucessoProcessamento;
        }//setSucessoProcessamento
        
        private boolean getSucessoProcessamento ()
        {
            return sucessoProcessamento;
        }//getSucessoProcessamento
                
        public void setNumLog(int numLog)
        {
            this.numLog = numLog;
        }//setNumLog
        
        public int getNumLog()
        {
            return this.numLog;
        }//getNumLog
        
        public void setURLBD ( String URLBD )
        {
            this.URLBD = URLBD;
        
        }//URLBD

        public String getURLBD ()
        {
            return this.URLBD;
        }//getURLBD

        public void setUsuario (String usuario)
        {
            this.usuario = usuario;
        }//setUsuario

        public String getUsuario ()
        {
            return this.usuario;
        }//get

        public void setNumPorta(int numPorta)
        {
            this.numPorta = numPorta;
        }//setNumPorta

        public int getNumPorta ()
        {
            return this.numPorta;
        }//getNumPorta

        public void setDataInicial (String dataInicial)
        {
            this.dataInicial = dataInicial;
        }//setDataInicial

        public String getDataInicial ()
        {
            return this.dataInicial;
        }//dataInicial

        public String getDataFinal ()
        {
            return this.dataFinal;
        }//getDataFinal

        public void setDataFinal(String dataFinal)
        {
            this.dataFinal = dataFinal;
        } //setDataFinal

        public void setStrSQL (String strSql)
        {
            this.strSql = strSql;
        }//strSQL

        public String getStrSQL ()
        {
            return this.strSql;
        }//getStrSQL

        public void setLoja (String loja)
        {
            this.loja = loja;
        }//setLoja

        public String getLoja ()
        {
            return this.loja;
        }//getLoja

        public void setSID ( String SID )
        {
            this.SID = SID;
        }//SID

        public String getSID ()
        {
            return this.SID; 
        }//getSID

        public void setSenha (String senha)
        {
            this.senha = senha;
        }//setSenha

        public String getSenha ()
        {
            return this.senha;
        }//getSenha

        public void setHostName ( String hostName )
        {
            this.hostName = hostName;
        }//setHostName

        public String getHostName ()
        {
            return this.hostName;
        }//getHostName

        //método utilizado p/ transformar a data do formato dd/mm/aa
        //p/ 1aammdd. Este formato 1aammdd é o utilizado pelo RMS
        public String acertaDataRMS(String data)
        {
            //07/04/03
            datLancamentoAux = data;
            datLancamento = "1" + datLancamentoAux.substring(6,8);
            datLancamento = datLancamento + datLancamentoAux.substring (3,5);
            datLancamento = datLancamento + datLancamentoAux.substring (0,2);
            System.out.println (datLancamento);
            return datLancamento;
        }//acertaDataRMS
        
        //método utilizado p/ transformar a data do formato 1aammdd
        //p/ dd/mm/aa.
        public void acertaDataOlhoVivo(String data)
        {
            datLancamentoAux = data;
            datLancamento = (datLancamentoAux.substring(5,7) + "/"); 
            datLancamento = datLancamento + (datLancamentoAux.substring(3,5) + "/");
            datLancamento = datLancamento + (datLancamentoAux.substring(1,3));
        }//acertaDataRMS
        
        public ETLOlhoVivo (String usuario, String senha, String URLBD, String diaInicial, String diaFinal)
        {  
            setUsuario(usuario);
            setSenha(senha);
            setURLBD(URLBD);
            setDataInicial(acertaDataRMS(diaInicial));
            setDataFinal (acertaDataRMS(diaFinal));
            logETL = new DBErros(getUsuario(), getSenha(), getURLBD());
        }//ETLOlhoVivo
        
        
    
        public void extracao()
        {
              
            setLoja("MTZ");
            
            DB_Acesso conexoes = new DB_Acesso ( usuario, URLBD ,senha ) ;
            
            //configurando o objeto pra ser utilizado p/ as conexoes
            numLog = conexoes.setDriverBD ( "oracle.jdbc.driver.OracleDriver" );
            conexoes.setStrSQL ( "select * from tb_conexoes" );
            numLog = conexoes.conexao();

            //camadaBD.executarSQL();
            numLog = conexoes.executarSQL();	

            //loop para conectar em todas os B.D. do RMS p/ extrair os dados
            //para análise
            ResultSet rsConexoes = conexoes.getRsResultado( );

            //#############################################################################################################
            //############################ TRECHO DE CÓDIGO P/ EXTRAÇÃO DOS DADOS DO RMS ##################################
            //#############################################################################################################
            try
            {
                    while ( rsConexoes.next ( ) )
                    {
                            
                            usuarioBDExt = rsConexoes.getString ( "nom_usuario" );
                            senhaBDExt = rsConexoes.getString ( "sen_senha" );
                            hostName = rsConexoes.getString ( "nom_host" );
                            numPorta = rsConexoes.getInt ( "num_porta" );
                            SID = rsConexoes.getString ( "nom_SID" );
                            loja = rsConexoes.getString ( "nom_abreviatura" );

                            DB_Acesso extracao = new DB_Acesso ( usuarioBDExt, "jdbc:oracle:thin:@"+ hostName + ":" + numPorta + ":" + SID , senhaBDExt ) ;

                            numLog = conexoes.setDriverBD ( "oracle.jdbc.driver.OracleDriver" );

                            //montagem do sql
                            strSql = "meu sql"; //o sql eu suprimi, mas o mesmo estava funcionando corretamente
                            System.out.println (strSql);

                            extracao.setStrSQL ( strSql );
                            numLog = extracao.conexao ( );
                            numLog = extracao.executarSQL();

                            // transferencia para um outro ResultSet p/ se manipular os registro extraídos do RMS
                            ResultSet rsExtracao = extracao.getRsResultado ( );

                            // set do usuário e senha para conectar no B.D. do sist. Olho vivo p/ descarregar a extracao

                            DB_Acesso insercaoBDOlhoVivo = new DB_Acesso ( usuario, URLBD ,senha ) ;

                            //configurando o objeto pra ser utilizado p/ a inserção no B.D.
                            numLog = insercaoBDOlhoVivo.setDriverBD ( "oracle.jdbc.driver.OracleDriver" );
                            numLog = insercaoBDOlhoVivo.conexao ( );
                            
                            //limpeza da tabela temporária tb_ov_divergencia_temp
                            insercaoBDOlhoVivo.setStrSQL("truncate table tb_ov_divergencia_temp");
                            numLog = insercaoBDOlhoVivo.gravarBD();
                            //System.out.println(numLog);
                            //#############################################################################################################
                            //######################### TRECHO DE IMPORTAÇÃO DOS DADOS P/ B.D. DO SISTEMA OLHO VIVO #######################
                            //#############################################################################################################

                            // Armazenar os dados no banco de dados
                            try
                            {
                                //System.out.println(numLog);
                                while ( rsExtracao.next ( ) )
                                {

                                    acertaDataOlhoVivo(rsExtracao.getString("eschc_data"));

                                    //montagem do sql
                                    strSql = "meu sql"; //esteeu suprimi, mas o mesmo está funcionando corretamente
                                    
                                    insercaoBDOlhoVivo.setStrSQL ( strSql );
                                    //insercaoBDOlhoVivo.conexao ( );
                                    System.out.println (strSql);
                                    numLog = insercaoBDOlhoVivo.gravarBD ( );

                                } //while
                                
                            } //try
                            catch ( Exception e )
                            {
                                logETL.setNumErro(getNumLog());
                                logETL.setSiglaLoja(getLoja());
                                logETL.inserirErro();
                                e.printStackTrace ( );
                            } //catch

                            insercaoBDOlhoVivo.fecharConexao();
                            extracao.fecharConexao();
                            logETL.setNumErro(getNumLog());
                            logETL.setSiglaLoja(getLoja());
                            logETL.inserirErro();
                            this.deteccao();
                    } //while
                    numLog = conexoes.fecharConexao();

            } //try
            catch ( SQLException sql )
            {
                    logETL.setNumErro(getNumLog());
                    logETL.setSiglaLoja(getLoja());
                    logETL.inserirErro();
                    sql.printStackTrace ( );
            } //catch

        }//extracao

        public void deteccao()
        {
            //#############################################################################################################
            //########################### TRECHO DE DETECÇÃO DE DIVERGÊNCIAS FORA DOS PADRÕES #############################
            //#############################################################################################################

            try {

                DB_Acesso deteccao = new DB_Acesso ( usuario, URLBD, senha ) ;

                //configurando o objeto pra ser utilizado p/ a detecção das divergências
                numLog = deteccao.setDriverBD ( "oracle.jdbc.driver.OracleDriver" );

                strSql = "meu sql"; //o sql eu suprimi, mas está funcionando corretamente
                
                deteccao.setStrSQL( strSql );
                //System.out.println ( strSql );
                numLog = deteccao.conexao();
                numLog = deteccao.gravarBD ( );
                
                //limpeza da tabela temporária de extracao
                deteccao.setStrSQL ( "truncate table tb_ov_divergencia_temp" );
                numLog = deteccao.gravarBD();
                
                numLog = deteccao.fecharConexao ( );
            } // try
            catch ( Exception sql )
            {   
                logETL.setNumErro(getNumLog());
                logETL.setSiglaLoja(getLoja());
                logETL.inserirErro();
                sql.printStackTrace ( );
            } // catch*/

            logETL.setNumErro(getNumLog());
            logETL.setSiglaLoja(getLoja());
            logETL.inserirErro();
            System.out.println( "Executou com sucesso" );

        } //deteccao
       
} //TesteDB_Acesso
package camada_bd;
import java.sql.*;

public class DB_Acesso {
 
	private String usuario;             //variável utilizada para armazenar o usuário do B.D.
        private String dbURL;               //variável utilizada para armazenar o caminho do servidor
	private Statement stmt;             //variável utilizada para armazenar o objeto do tipo Statement 
        private String senha;               //variável utilizada para armazenar a senha do usuário do B.D.
	private ResultSet rsResultado;      //variável utilizada para armazenar o resultado da consulta no B.D.
	private Connection conexao;         //variável utilizada para armazenar o string de conexão com o B.D.
	private String driverBD;            //variável utilizada para armazenar o string do driver do B.D. 
        private String strSQL;              //variavel utilizada para armazenar o string do SQL;
        private String resultado;           //variável auxiliar
        
        public DB_Acesso ( String usuario, String dbURL, String senha )
        {
            //inicializando as variáveis com os dados para conectar no banco
            setUsuario ( usuario );
            setDbURL ( dbURL );
            setSenha ( senha );
        } // DB_Acesso
        
        public void setStrSQL ( String strSQL )
        {
            this.strSQL = strSQL;
        } //setStrSQL
        
        public String getStrSQL ()
        {
            return strSQL;
        } //getStrSQL
        
        public void setUsuario ( String usuario )
        {
            this.usuario = usuario;
        } //setUsuario

        public String getUsuario( )
        {
            return usuario;
        } //getUsuario
        
        public void setDbURL ( String dbURL )
        {
            this.dbURL = dbURL;
        } //setdbURL
        
        public String getDbURL ( )
        {
            return dbURL;
        } //getdbURL
        
        public void setSenha ( String senha )
        {
            this.senha = senha;
        } //setSenha
        
        public String getSenha ( )
        {
            return senha;
        } //getSenha
        
        public int setDriverBD ( String driverBD )
        {
                try
                {   
                    Class.forName ( driverBD );
                    return 0;
		} // try
		catch ( Exception e)
		{
                    return 1;
                    //e.printStackTrace ( );
		} // catch
        } // setDriverBD
        
        public String getDriverBD ( )
        {
            return driverBD;
        } // setDriverBD
                
	public int conexao() 
        {
                try
                {
                    conexao = DriverManager.getConnection ( dbURL, usuario, senha );
                    stmt = conexao.createStatement();
                    return 0;
                } //try
                catch ( SQLException sql )
		{
                    return 2;
                                        
//                    System.out.println("Ferrou a conexão");
//                    sql.printStackTrace ( );
		} // catch
	}
	 
	public int executarSQL() {
            try
            {
                rsResultado = stmt.executeQuery ( strSQL );
                return 0;
            } //try
            catch ( SQLException sql )
            {
                return 3;
		//sql.printStackTrace ( );
            } // catch
        } //executarSQL
        
        public void setResultado ( String resultado )
        {
            this.resultado = resultado;
        } //setResultado
        
        public String getResultado ( )
        {
            return resultado;
        } //getResultado
	
        public ResultSet getRsResultado ()
        {
            return rsResultado;
        } //getResultado
        
        public int fecharConexao ()
        {
            try
            {
                stmt.close();
                conexao.close();
                return 0;
            } //try
            catch ( SQLException sql)
            {
                return 4;
                //sql.printStackTrace();
            } //catch
        } //fecharConexao
        
	public int gravarBD() {
            try
            {
                int linhas = stmt.executeUpdate ( strSQL );
                return 0;
            } //try
            catch ( SQLException sql )
            {
                sql.printStackTrace ( );
                return 5;
		
            } // catch
	}
	 
}
package camada_bd;
import java.util.*;
import java.text.*;
//import javax.sql.*;
//import java.sql.*;

/**
 *
 * @author mkm jk
 */
public class DBErros {
    
    private int numErro;                                 //variável utilizada para armazena o número do erro
    private String siglaLoja;                            //variável utilizada para armazenar a sigla da loja
    private Date data = new Date();                                   //variável utilizada para armazenar a data do erro
    private String usuario;                              //variável para armazenar o usuário p/ conectar no B.D.
    private String senha;                                //variável para armazenar a senha para conectar no B.D.
    private String URLBD = new String ();                //variável para armazenar o URL do Banco de Dados
    private String sql;                                  //variável para armazenar o comando SQL a ser executado no B.D.
    
    public void setSql(String sql)
    {
        this.sql = sql;
    }//setSql
    
    public String getSql()
    {
        return this.sql;
    }//getSql
    
    public void setUsuario(String usuario)
    {
        this.usuario = usuario;
    }//setUsuario
    
    public String getUsuario()
    {
        return this.usuario;
    }//getUsuario
    
    public void setSenha(String senha)
    {
        this.senha = senha;
    }//setSenha
    
    public String getSenha()
    {
        return this.senha;
    }//getSenha
    
    public void setURLBD(String URLBD)
    {
        this.URLBD = URLBD;
    }//setURLBD
    
    public String getURLBD()
    {
        return this.URLBD;
    }//getURLBD
    
    public void setNumErro(int numErro)
    {
        this.numErro = numErro;
    }//setNumErro
    
    public int getNumErro()
    {
        return this.numErro;
    }//getNumErro
    
    public void setSiglaLoja(String siglaLoja)
    {
        this.siglaLoja = siglaLoja;
    }//setSiglaLoja
    
    public String getSiglaLoja()
    {
        return this.siglaLoja;
    }//getSiglaLoja
    
    public Date getData()
    {
        return this.data;
    }//getData
    
    /** Creates a new instance of DBErros */
    public DBErros(String usuario, String senha, String URLBD) 
    {
        setUsuario(usuario);
        setSenha(senha);
        setURLBD(URLBD);
    }//DBErros
    
    public void inserirErro()
    {
        int numExec;
        
        SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yy");
        
        DB_Acesso log = new DB_Acesso(usuario, URLBD, senha);
        
        try
        {
            log.setDriverBD ( "oracle.jdbc.driver.OracleDriver" );
            log.conexao();

            System.out.println(formatador.format(data));
            
            setSql("insert into tb_log_erros ");
            setSql(sql + "(nom_abreviatura, dat_data_erro, cod_erro) ");
            setSql(sql + "values ('" + siglaLoja + "', ");
            setSql(sql + "'" + formatador.format(data) + "', ");
            setSql(sql + numErro + ")");

            System.out.println(sql);            
            log.setStrSQL(sql);
            log.gravarBD();

            log.fecharConexao();
        }//try
        catch(Exception e)
        {
            e.printStackTrace();
        }//catch
        
    }//inserirErro
    
}//class
package etl_olho_vivo;

import javax.xml.stream.events.StartDocument;
/*
 * Main.java
 *
 * Created on 4 de Abril de 2007, 17:13
 */

/**
 *
 * @author  mkm jk
 */
public class Main extends javax.swing.JFrame {
    
    /**
     * Creates new form Main
     */
    public Main() {
        initComponents();
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">                          
    private void initComponents() {
        extrair = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        txtUsuarioBD = new javax.swing.JTextField();
        pswSenhaBD = new javax.swing.JPasswordField();
        txtURLBD = new javax.swing.JTextField();
        txtDiaInicial = new javax.swing.JTextField();
        statusBar = new javax.swing.JPanel();
        lblStatus = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        txtDiaFinal = new javax.swing.JTextField();
        jLabel6 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Sistema Olho Vivo - ETL");
        setBackground(new java.awt.Color(204, 204, 255));
        extrair.setText("Extrair");
        extrair.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ButtonHandler(evt);
            }
        });

        jLabel1.setFont(new java.awt.Font("Arial", 0, 12));
        jLabel1.setForeground(new java.awt.Color(0, 51, 102));
        jLabel1.setText("Usu\u00e1rio do Banco de Dados:");

        jLabel2.setFont(new java.awt.Font("Arial", 0, 12));
        jLabel2.setForeground(new java.awt.Color(0, 51, 102));
        jLabel2.setText("Senha do Banco de Dados:");

        jLabel3.setFont(new java.awt.Font("Arial", 0, 12));
        jLabel3.setForeground(new java.awt.Color(0, 51, 102));
        jLabel3.setText("URL do Banco de Dados:");

        jLabel4.setFont(new java.awt.Font("Arial", 0, 12));
        jLabel4.setForeground(new java.awt.Color(0, 51, 102));
        jLabel4.setText("Dia Inicial da Extra\u00e7\u00e3o (dd/mm/aa):");

        txtURLBD.setText("");

        statusBar.setBackground(new java.awt.Color(255, 255, 255));
        statusBar.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        lblStatus.setFont(new java.awt.Font("Arial", 0, 12));
        lblStatus.setForeground(new java.awt.Color(0, 51, 102));
        lblStatus.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        
        javax.swing.GroupLayout statusBarLayout = new javax.swing.GroupLayout(statusBar);
        statusBar.setLayout(statusBarLayout);
        statusBarLayout.setHorizontalGroup(
            statusBarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(lblStatus, javax.swing.GroupLayout.DEFAULT_SIZE, 541, Short.MAX_VALUE)
        );
        statusBarLayout.setVerticalGroup(
            statusBarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(lblStatus, javax.swing.GroupLayout.DEFAULT_SIZE, 15, Short.MAX_VALUE)
        );

        jLabel5.setFont(new java.awt.Font("Arial", 0, 24));
        jLabel5.setForeground(new java.awt.Color(0, 51, 102));
        jLabel5.setText("Sistema Olho Vivo - ETL");

        jLabel6.setFont(new java.awt.Font("Arial", 0, 12));
        jLabel6.setForeground(new java.awt.Color(0, 51, 102));
        jLabel6.setText("Dia Final da Extra\u00e7\u00e3o (dd/mm/aa):");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(424, Short.MAX_VALUE)
                .addComponent(extrair)
                .addGap(54, 54, 54))
            .addGroup(layout.createSequentialGroup()
                .addGap(135, 135, 135)
                .addComponent(jLabel5)
                .addContainerGap(149, Short.MAX_VALUE))
            .addComponent(statusBar, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGap(33, 33, 33)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel1)
                    .addComponent(jLabel3)
                    .addComponent(jLabel2)
                    .addComponent(jLabel6)
                    .addComponent(jLabel4))
                .addGap(13, 13, 13)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(txtURLBD, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 281, Short.MAX_VALUE)
                    .addComponent(txtDiaFinal, javax.swing.GroupLayout.DEFAULT_SIZE, 281, Short.MAX_VALUE)
                    .addComponent(txtDiaInicial, javax.swing.GroupLayout.DEFAULT_SIZE, 281, Short.MAX_VALUE)
                    .addComponent(pswSenhaBD, javax.swing.GroupLayout.DEFAULT_SIZE, 281, Short.MAX_VALUE)
                    .addComponent(txtUsuarioBD, javax.swing.GroupLayout.DEFAULT_SIZE, 281, Short.MAX_VALUE))
                .addGap(27, 27, 27))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGap(27, 27, 27)
                .addComponent(jLabel5)
                .addGap(32, 32, 32)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel1)
                    .addComponent(txtUsuarioBD, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(23, 23, 23)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel2)
                    .addComponent(pswSenhaBD, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(25, 25, 25)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel3)
                    .addComponent(txtURLBD, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 26, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel4)
                    .addComponent(txtDiaInicial, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(25, 25, 25)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel6)
                    .addComponent(txtDiaFinal, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(17, 17, 17)
                .addComponent(extrair)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(statusBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
        );
        pack();
    }// </editor-fold>                        

    private void ButtonHandler(java.awt.event.ActionEvent evt) {                               

        System.out.println ("Início do processamento");
        lblStatus.setText("Início do processamento");
        lblStatus.repaint();
        if (evt.getSource() == extrair)
        {
            new Thread()
            {
                public void run()
                {
                    if (validarDados() == false)
                    {
                        lblStatus.setText("Preencha todos os campos para que o processo inicie");
                        lblStatus.repaint();
                    }//if
                    else
                    {
                        try
                        {
                            ETLOlhoVivo ETL = new ETLOlhoVivo(txtUsuarioBD.getText(), pswSenhaBD.getText(), txtURLBD.getText(), txtDiaInicial.getText(), txtDiaFinal.getText());
                            ETL.extracao();
                            //ETL.deteccao();
                            java.awt.EventQueue.invokeLater(new Runnable(){
                                public void run(){
                                    lblStatus.setText("Detecção concluída com sucesso");
                                    lblStatus.repaint();
                                }
                            });//invokeLater

                        }//try
                        catch (Exception e)
                        {
                            java.awt.EventQueue.invokeLater(new Runnable () {
                                public void run(){
                                    lblStatus.setText("Extração concluída com problemas");
                                    lblStatus.repaint();
                                    
                                }
                            });
                            //System.out.println(e.getLocalizedMessage());
                            e.printStackTrace();
                        }//catch


                    }//else   
                }//run
            }.start();//thread
        }//if
    }                              
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Main().setVisible(true);
            }
        });
    }
    
    // Variables declaration - do not modify                     
    private javax.swing.JButton extrair;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel lblStatus;
    private javax.swing.JPasswordField pswSenhaBD;
    private javax.swing.JPanel statusBar;
    private javax.swing.JTextField txtDiaFinal;
    private javax.swing.JTextField txtDiaInicial;
    private javax.swing.JTextField txtURLBD;
    private javax.swing.JTextField txtUsuarioBD;
    // End of variables declaration                   

    public boolean validarDados()
    {
        //txtUsuarioBD
        String usuarioBD = txtUsuarioBD.getText();
        String senhaBD = pswSenhaBD.getText();
        String URLBD = txtURLBD.getText();
        String diaInicial = txtDiaInicial.getText();
        String diaFinal = txtDiaFinal.getText();
        
        if(usuarioBD.length() == 0)
        {
            return false;
        }//if
        
        //pswSenhaBD
        if(senhaBD.length() == 0)
        {
            return false;
        }//if
        
        //txtURLBD
        if(URLBD.length() == 0)
        {
            return false;
        }//if
        
        //txtDiaInicial
        if(diaInicial.length() == 0)
        {
            return false;
        }//if
        
        //txtDiaFinal
        if(diaFinal.length() == 0)
        {
            return false;
        }//if
        
        return true;
        
    }//validarDados
    
}//class Main

Eu não fui atrás do Log4j agora porque eu não tenho muito tempo para terminar esta aplicação, e gostaria de fazer funcionar essa estrutura que eu comecei a montar. Eu vou estudar o Log4J, mas para implementá-la agora acredito que não conseguirei. Mas eu vou estudar o Log4J. Agradeço desde já quem puder me ajudar!!!!!! Valews!!!!!!

4 Respostas

furutani

Olá

Para fazer log opções não faltam tem o commons-logging, o próprio java tem uma API de Log embutida. Em ultimo caso vc pode criar uma classe que cria um arquivo texto e você a chama de dentro do catch de todas as exceções.

Calvin

Olá,

furutani:
Olá

Para fazer log opções não faltam tem o commons-logging, o próprio java tem uma API de Log embutida. Em ultimo caso vc pode criar uma classe que cria um arquivo texto e você a chama de dentro do catch de todas as exceções.

Em penúltimo caso criaria um xml!
Com xml você pode exportar para um excel (VBA - você deve saber bem isso)… para criar relátorios fica muito mais fácil.

Abraços!

R

Bom dia,

Muito obrigado pelas dicas. Também vou correr atrás dessas questões porém, o meu grande problema com este código todo é que quando é capturada a exceção ele deveria inserir no banco de dados o número do erro, porém ele só grava zero. Tipo, parece que ele quando a exceção é capturada as instruções que deveriam ser executadas não são feitas como deveriam ser. O que poderia ser? Valews novamente pelas dicas!!! Abraços.

Calvin

Olá,

Antes leia esse post sobre classe de conexao com banco, acredito que com isso você consiguirá melhorar a sua!

Sobre o erro:

catch ( Exception e ) { logETL.setNumErro(getNumLog()); logETL.setSiglaLoja(getLoja()); logETL.inserirErro(); e.printStackTrace ( ); } //catch

Verifique se isso getNumLog(); está realmente retornando algo.

Outra dica:
Entre no site da Caelum e faça download da apostila do curso básico. Leia o capítulo sobre Exception, com a leitura você terá diversas idéias de como melhorar seu tratamento de erro.

Abraços.

Criado 2 de julho de 2007
Ultima resposta 3 de jul. de 2007
Respostas 4
Participantes 3