From 25895b589035430fedcbf51ce250662c300b9e7c Mon Sep 17 00:00:00 2001 From: Diogo Neves Date: Wed, 31 Mar 2010 17:45:27 +0000 Subject: [PATCH] added ErrorLogger git-svn-id: https://svn.coded.pt/svn/SIPRP@1233 bb69d46d-e84e-40c8-a05a-06db0d633741 --- trunk/PlanosActuacao/lib/evologger.jar | Bin 0 -> 15166 bytes trunk/PlanosActuacao/lib/jdbcappender.jar | Bin 0 -> 28636 bytes trunk/PlanosActuacao/src/java/db/Db.java | 7 ++-- .../src/java/db/DbRelatorios.java | 6 +-- trunk/PlanosActuacao/src/java/db/Dblocal.java | 7 ++-- .../src/java/db/DblocalRelatorios.java | 3 +- .../providers/CreatePlanosDataProvider.java | 10 ++--- .../db/providers/GenericDataProvider.java | 6 +-- .../java/db/providers/PlanosDataProvider.java | 17 ++++++-- .../db/providers/RelatoriosDataProvider.java | 5 ++- .../java/phaselistener/MainPhaseListener.java | 30 ++++++++++++-- .../java/planosactuacao/ApplicationBean1.java | 2 + .../src/java/planosactuacao/Dummy.java | 8 ++-- .../src/java/planosactuacao/EditarPlano.java | 32 +++++++------- .../java/planosactuacao/EnviarCorrecao.java | 10 +++-- .../src/java/planosactuacao/Erro.java | 2 + .../src/java/planosactuacao/Footer.java | 2 + .../src/java/planosactuacao/Header.java | 12 +++--- .../src/java/planosactuacao/ListaPlanos.java | 34 ++++++++------- .../src/java/planosactuacao/Login.java | 6 ++- .../java/planosactuacao/PlanosActuacao.java | 20 ++++----- .../src/java/planosactuacao/RequestBean1.java | 2 + .../src/java/planosactuacao/SessionBean1.java | 2 + .../src/java/planosactuacao/ViewPlano.java | 9 ++-- .../PlanosActuacao/src/java/utils/Logos.java | 3 +- .../src/java/utils/PlanosActuacaoLogger.java | 39 ++++++++++++++++++ 26 files changed, 182 insertions(+), 92 deletions(-) create mode 100644 trunk/PlanosActuacao/lib/evologger.jar create mode 100644 trunk/PlanosActuacao/lib/jdbcappender.jar create mode 100644 trunk/PlanosActuacao/src/java/utils/PlanosActuacaoLogger.java diff --git a/trunk/PlanosActuacao/lib/evologger.jar b/trunk/PlanosActuacao/lib/evologger.jar new file mode 100644 index 0000000000000000000000000000000000000000..f47c6fbece5a1bad740f04601167e0507eb0fab4 GIT binary patch literal 15166 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 E0j2k8MgRZ+ literal 0 HcmV?d00001 diff --git a/trunk/PlanosActuacao/lib/jdbcappender.jar b/trunk/PlanosActuacao/lib/jdbcappender.jar new file mode 100644 index 0000000000000000000000000000000000000000..fe9d3e676efa1f4ea393bb13c6809cb9cc0b18ab GIT binary patch literal 28636 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 MzwUi8{rT?y0B?af!vFvP literal 0 HcmV?d00001 diff --git a/trunk/PlanosActuacao/src/java/db/Db.java b/trunk/PlanosActuacao/src/java/db/Db.java index c572c3e0..ac92fd9a 100644 --- a/trunk/PlanosActuacao/src/java/db/Db.java +++ b/trunk/PlanosActuacao/src/java/db/Db.java @@ -5,14 +5,13 @@ package db; +import com.evolute.utils.error.ErrorLogger; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import javax.faces.context.FacesContext; import javax.servlet.http.HttpSession; -import planosactuacao.ApplicationBean1; -import utils.JSFUtils; /** * @@ -68,12 +67,12 @@ public class Db { Statement st; try { - st = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); + st = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); return st; } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); return null; } } diff --git a/trunk/PlanosActuacao/src/java/db/DbRelatorios.java b/trunk/PlanosActuacao/src/java/db/DbRelatorios.java index 2e830aad..7d55a60a 100644 --- a/trunk/PlanosActuacao/src/java/db/DbRelatorios.java +++ b/trunk/PlanosActuacao/src/java/db/DbRelatorios.java @@ -5,13 +5,11 @@ package db; +import com.evolute.utils.error.ErrorLogger; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; -import javax.faces.context.FacesContext; -import planosactuacao.ApplicationBean1; -import utils.JSFUtils; /** * @@ -68,7 +66,7 @@ public class DbRelatorios { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); return null; } } diff --git a/trunk/PlanosActuacao/src/java/db/Dblocal.java b/trunk/PlanosActuacao/src/java/db/Dblocal.java index 0cf2f6a8..28e33249 100644 --- a/trunk/PlanosActuacao/src/java/db/Dblocal.java +++ b/trunk/PlanosActuacao/src/java/db/Dblocal.java @@ -9,21 +9,20 @@ package db; +import com.evolute.utils.error.ErrorLogger; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import javax.faces.context.FacesContext; import javax.servlet.http.HttpSession; -import planosactuacao.ApplicationBean1; -import utils.JSFUtils; /** * * @author lluis */ public class Dblocal { -// String connectionURL = "jdbc:postgresql://storage:5432/siprp_local3"; //testes +// String connectionURL = "jdbc:postgresql://storage:5432/siprp_local_3_20091203"; //testes //String connectionURL = "jdbc:postgresql://storage/siprp_local_3"; //testes local_3 // String connectionURL = "jdbc:postgresql://www.evolute.pt:5436/siprp_local_3"; //testes local_3 String connectionURL = "jdbc:postgresql://localhost:5436/siprp_local_3"; @@ -70,7 +69,7 @@ public class Dblocal { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); return null; } } diff --git a/trunk/PlanosActuacao/src/java/db/DblocalRelatorios.java b/trunk/PlanosActuacao/src/java/db/DblocalRelatorios.java index 561e7d3f..f7b8ce05 100644 --- a/trunk/PlanosActuacao/src/java/db/DblocalRelatorios.java +++ b/trunk/PlanosActuacao/src/java/db/DblocalRelatorios.java @@ -19,6 +19,7 @@ import org.apache.cayenne.map.DataMap; import com.evolute.utils.Singleton; +import com.evolute.utils.error.ErrorLogger; import siprp.SingletonConstants; /** @@ -71,7 +72,7 @@ public class DblocalRelatorios { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); return null; } } diff --git a/trunk/PlanosActuacao/src/java/db/providers/CreatePlanosDataProvider.java b/trunk/PlanosActuacao/src/java/db/providers/CreatePlanosDataProvider.java index 71301e2f..d8417d54 100644 --- a/trunk/PlanosActuacao/src/java/db/providers/CreatePlanosDataProvider.java +++ b/trunk/PlanosActuacao/src/java/db/providers/CreatePlanosDataProvider.java @@ -5,6 +5,7 @@ package db.providers; +import com.evolute.utils.error.ErrorLogger; import db.DbRelatorios; import db.DblocalRelatorios; import db.entidades.Area; @@ -17,7 +18,6 @@ import java.sql.ResultSet; import java.sql.Statement; import java.util.ArrayList; import java.util.Date; -import java.util.GregorianCalendar; import java.util.List; import utils.Utils; @@ -40,7 +40,7 @@ public class CreatePlanosDataProvider { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } } @@ -111,7 +111,7 @@ public class CreatePlanosDataProvider { } catch( Exception e ) { - e.printStackTrace(); + ErrorLogger.logException( e ); } return result; } @@ -128,7 +128,7 @@ public class CreatePlanosDataProvider { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } return plano; @@ -168,7 +168,7 @@ public class CreatePlanosDataProvider { catch(Exception ex) { System.out.println("ERRO RISCOS BY AREA !!!!"); - ex.printStackTrace(); + ErrorLogger.logException( ex ); a.setRiscos(null); } diff --git a/trunk/PlanosActuacao/src/java/db/providers/GenericDataProvider.java b/trunk/PlanosActuacao/src/java/db/providers/GenericDataProvider.java index 91213754..a1a1470c 100644 --- a/trunk/PlanosActuacao/src/java/db/providers/GenericDataProvider.java +++ b/trunk/PlanosActuacao/src/java/db/providers/GenericDataProvider.java @@ -5,9 +5,7 @@ package db.providers; -import com.evolute.utils.timer.TimedEvent; -import com.evolute.utils.timer.Timer; -import planosactuacao.PlanosActuacao; +import com.evolute.utils.error.ErrorLogger; import db.Db; import java.sql.ResultSet; import java.sql.Statement; @@ -30,7 +28,7 @@ public class GenericDataProvider { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } } } diff --git a/trunk/PlanosActuacao/src/java/db/providers/PlanosDataProvider.java b/trunk/PlanosActuacao/src/java/db/providers/PlanosDataProvider.java index d9f7e9a6..4411deb7 100644 --- a/trunk/PlanosActuacao/src/java/db/providers/PlanosDataProvider.java +++ b/trunk/PlanosActuacao/src/java/db/providers/PlanosDataProvider.java @@ -5,6 +5,7 @@ package db.providers; +import com.evolute.utils.error.ErrorLogger; import com.evolute.utils.strings.StringPlainer; import db.entidades.Area; import db.entidades.EstadoMedida; @@ -181,7 +182,9 @@ public class PlanosDataProvider extends GenericDataProvider{ sql += "WHERE id = " + p.getId(); System.out.println("SQL UPDATE PLANO : " + sql); - st.execute(sql); + + ErrorLogger.log( "SAVE : PlanosDataProvider.updatePlano( p ) : " + sql ); + st.execute(sql); } public void updateRisco(Risco r) throws Exception @@ -242,7 +245,9 @@ public class PlanosDataProvider extends GenericDataProvider{ sql += "verificacao_siprp = '" + r.getVerificacao_siprp() + "' "; sql += "WHERE id = " + r.getId(); System.out.println("SQL UPDATE RISCO : " + sql); - st.execute(sql); + + ErrorLogger.log( "SAVE : PlanosDataProvider.updateRisco( r ) : " + sql ); + st.execute(sql); } public void updateMedidas( Risco risco ) throws Exception @@ -261,6 +266,8 @@ public class PlanosDataProvider extends GenericDataProvider{ String sql = "UPDATE plano_medidas SET estado_medidas_id = " + emID + " WHERE id = " + m.getId() + " AND risco_id = " + risco.getId(); System.out.println( "SQL UPDATE MEDIDAS : " + sql ); + + ErrorLogger.log( "SAVE : PlanosDataProvider.updateMedidas( r ) : " + sql ); st.execute( sql ); } } @@ -318,7 +325,9 @@ public class PlanosDataProvider extends GenericDataProvider{ sql += "verificacao_siprp = '" + v.getVerificacao_siprp() + "' "; sql += "WHERE id = " + v.getId(); System.out.println("SQL UPDATE VALOR : " + sql); - st.execute(sql); + + ErrorLogger.log( "SAVE : PlanosDataProvider.updateValor( v ) : " + sql ); + st.execute(sql); } public Integer createArea(Area a) throws Exception @@ -951,7 +960,7 @@ public class PlanosDataProvider extends GenericDataProvider{ } catch(Exception ex) { - + ErrorLogger.logException( ex ); } return total_riscos; diff --git a/trunk/PlanosActuacao/src/java/db/providers/RelatoriosDataProvider.java b/trunk/PlanosActuacao/src/java/db/providers/RelatoriosDataProvider.java index e93bf047..0ef537b3 100644 --- a/trunk/PlanosActuacao/src/java/db/providers/RelatoriosDataProvider.java +++ b/trunk/PlanosActuacao/src/java/db/providers/RelatoriosDataProvider.java @@ -5,6 +5,7 @@ package db.providers; +import com.evolute.utils.error.ErrorLogger; import db.Dblocal; import db.entidades.Area; import db.entidades.Medida; @@ -38,7 +39,7 @@ public class RelatoriosDataProvider extends GenericDataProvider { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } return plano; @@ -78,7 +79,7 @@ public class RelatoriosDataProvider extends GenericDataProvider { catch(Exception ex) { System.out.println("ERRO RISCOS BY AREA !!!!"); - ex.printStackTrace(); + ErrorLogger.logException( ex ); a.setRiscos(null); } diff --git a/trunk/PlanosActuacao/src/java/phaselistener/MainPhaseListener.java b/trunk/PlanosActuacao/src/java/phaselistener/MainPhaseListener.java index aba044ff..4d5ee390 100644 --- a/trunk/PlanosActuacao/src/java/phaselistener/MainPhaseListener.java +++ b/trunk/PlanosActuacao/src/java/phaselistener/MainPhaseListener.java @@ -5,6 +5,7 @@ package phaselistener; +import com.evolute.utils.error.ErrorLogger; import db.entidades.Utilizador; import db.providers.UtilizadoresDataProvider; import global.Global; @@ -19,12 +20,33 @@ import planosactuacao.SessionBean1; import utils.JSFHTTPUtils; import utils.JSFUtils; import utils.Logos; +import utils.PlanosActuacaoLogger; /** * * @author lluis */ public class MainPhaseListener implements PhaseListener{ + + private static Boolean loggerIsLoaded = Boolean.FALSE; + + static + { + try + { + if ( ! loggerIsLoaded ) + { + System.out.println( "\nInitializing logger ..." ); + PlanosActuacaoLogger.init(); + loggerIsLoaded = Boolean.TRUE; + } + } + catch ( Throwable e ) + { + e.printStackTrace( System.err ); + } + } + private boolean firstEntry = true; public void afterPhase(PhaseEvent pe) { @@ -89,13 +111,13 @@ public class MainPhaseListener implements PhaseListener{ } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } } @@ -134,12 +156,12 @@ public class MainPhaseListener implements PhaseListener{ } catch(Exception ex1) { - ex1.printStackTrace(); + ErrorLogger.logException( ex1 ); } } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } ///////////// diff --git a/trunk/PlanosActuacao/src/java/planosactuacao/ApplicationBean1.java b/trunk/PlanosActuacao/src/java/planosactuacao/ApplicationBean1.java index d0aa545c..c1b27cb7 100644 --- a/trunk/PlanosActuacao/src/java/planosactuacao/ApplicationBean1.java +++ b/trunk/PlanosActuacao/src/java/planosactuacao/ApplicationBean1.java @@ -6,6 +6,7 @@ package planosactuacao; +import com.evolute.utils.error.ErrorLogger; import com.sun.rave.web.ui.appbase.AbstractApplicationBean; import java.sql.Connection; import javax.faces.FacesException; @@ -70,6 +71,7 @@ public class ApplicationBean1 extends AbstractApplicationBean { try { _init(); } catch (Exception e) { + ErrorLogger.logException( e ); log("ApplicationBean1 Initialization Failure", e); throw e instanceof FacesException ? (FacesException) e: new FacesException(e); } diff --git a/trunk/PlanosActuacao/src/java/planosactuacao/Dummy.java b/trunk/PlanosActuacao/src/java/planosactuacao/Dummy.java index 762aad98..1c4aa85e 100644 --- a/trunk/PlanosActuacao/src/java/planosactuacao/Dummy.java +++ b/trunk/PlanosActuacao/src/java/planosactuacao/Dummy.java @@ -6,6 +6,7 @@ package planosactuacao; +import com.evolute.utils.error.ErrorLogger; import com.sun.rave.web.ui.appbase.AbstractPageBean; import com.sun.webui.jsf.component.Hyperlink; @@ -90,6 +91,7 @@ public class Dummy extends AbstractPageBean { try { _init(); } catch (Exception e) { + ErrorLogger.logException( e ); log("Dummy Initialization Failure", e); throw e instanceof FacesException ? (FacesException) e: new FacesException(e); } @@ -205,7 +207,7 @@ public class Dummy extends AbstractPageBean { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } } @@ -224,9 +226,9 @@ public class Dummy extends AbstractPageBean { getExternalContext().redirect("faces/Erro.jsp"); } catch(Exception e) { // . . . handle exception . . . - e.printStackTrace(); + ErrorLogger.logException( e ); } - ex.printStackTrace(); + ErrorLogger.logException( ex ); } } diff --git a/trunk/PlanosActuacao/src/java/planosactuacao/EditarPlano.java b/trunk/PlanosActuacao/src/java/planosactuacao/EditarPlano.java index 41f70394..7caf2192 100644 --- a/trunk/PlanosActuacao/src/java/planosactuacao/EditarPlano.java +++ b/trunk/PlanosActuacao/src/java/planosactuacao/EditarPlano.java @@ -6,6 +6,7 @@ package planosactuacao; +import com.evolute.utils.error.ErrorLogger; import com.sun.rave.web.ui.appbase.AbstractPageBean; import com.sun.webui.jsf.component.Button; @@ -325,6 +326,7 @@ public class EditarPlano extends AbstractPageBean { try { _init(); } catch (Exception e) { + ErrorLogger.logException( e ); log("PlanoActuacao Initialization Failure", e); throw e instanceof FacesException ? (FacesException) e: new FacesException(e); } @@ -986,7 +988,7 @@ public class EditarPlano extends AbstractPageBean { } catch ( Exception e ) { - e.printStackTrace(); + ErrorLogger.logException( e ); } DropDown drop = new DropDown(); @@ -1405,7 +1407,7 @@ public class EditarPlano extends AbstractPageBean { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } st.setText("Validado por " + nome + " (Director de Loja) a " + p.getData_validacao_dir_loja_str()); gridValidacoes.getChildren().add(st); @@ -1426,7 +1428,7 @@ public class EditarPlano extends AbstractPageBean { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } st.setText("Validado por " + nome + " (Director de Loja) a " + p.getData_validacao_dir_loja_str()); gridValidacoes.getChildren().add(st); @@ -1445,7 +1447,7 @@ public class EditarPlano extends AbstractPageBean { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } st.setText("Validado por " + nome + " (Director Nacional de Segurança) a " + p.getData_validacao_dns_str()); //st.setText("Validado por Director Nacional de Segurança"); @@ -1519,7 +1521,7 @@ public class EditarPlano extends AbstractPageBean { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); getSessionBean1().setMsg("Erro na gravação do plano!"); } @@ -1723,7 +1725,7 @@ public class EditarPlano extends AbstractPageBean { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } @@ -1771,7 +1773,7 @@ public class EditarPlano extends AbstractPageBean { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } //Risco r = getNextRisco(getSessionBean1().getPlanoId()); @@ -1955,7 +1957,7 @@ public class EditarPlano extends AbstractPageBean { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } try { @@ -1965,7 +1967,7 @@ public class EditarPlano extends AbstractPageBean { catch(Exception ex) { getSessionBean1().setMsg("Erro no envio do Plano"); - ex.printStackTrace(); + ErrorLogger.logException( ex ); } } @@ -2356,7 +2358,7 @@ public class EditarPlano extends AbstractPageBean { } catch(Exception ex1) { - ex1.printStackTrace(); + ErrorLogger.logException( ex1 ); System.out.println("MAIL ERROR : " + ex1.getMessage()); } @@ -2364,7 +2366,7 @@ public class EditarPlano extends AbstractPageBean { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } } else //fase concluido @@ -2394,7 +2396,7 @@ public class EditarPlano extends AbstractPageBean { } catch(Exception ex1) { - ex1.printStackTrace(); + ErrorLogger.logException( ex1 ); System.out.println("MAIL ERROR : " + ex1.getMessage()); } @@ -2402,7 +2404,7 @@ public class EditarPlano extends AbstractPageBean { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } } @@ -2410,7 +2412,7 @@ public class EditarPlano extends AbstractPageBean { // catch(Exception ex) // { -// //ex.printStackTrace(); +// //ErrorLogger.logException( ex ); // } // Mail mail = new Mail(); // try @@ -2420,7 +2422,7 @@ public class EditarPlano extends AbstractPageBean { // } // catch(Exception ex) // { -// ex.printStackTrace(); +// ErrorLogger.logException( ex ); // System.out.println("ERRO NO ENVIO DO EMAIL !!"); // } // } diff --git a/trunk/PlanosActuacao/src/java/planosactuacao/EnviarCorrecao.java b/trunk/PlanosActuacao/src/java/planosactuacao/EnviarCorrecao.java index 7474fe34..a03d9d30 100644 --- a/trunk/PlanosActuacao/src/java/planosactuacao/EnviarCorrecao.java +++ b/trunk/PlanosActuacao/src/java/planosactuacao/EnviarCorrecao.java @@ -6,6 +6,7 @@ package planosactuacao; +import com.evolute.utils.error.ErrorLogger; import com.sun.rave.web.ui.appbase.AbstractPageBean; import com.sun.webui.jsf.component.Button; import com.sun.webui.jsf.component.DropDown; @@ -122,6 +123,7 @@ public class EnviarCorrecao extends AbstractPageBean { try { _init(); } catch (Exception e) { + ErrorLogger.logException( e ); log("EnviarCorrecao Initialization Failure", e); throw e instanceof FacesException ? (FacesException) e: new FacesException(e); } @@ -273,7 +275,7 @@ public class EnviarCorrecao extends AbstractPageBean { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); getSessionBean1().setMsg("Erro no envio do plano para a fase " + Global.FASES_TEXTO[fase-1]); } return null; @@ -334,7 +336,7 @@ public class EnviarCorrecao extends AbstractPageBean { } catch(Exception ex1) { - ex1.printStackTrace(); + ErrorLogger.logException( ex1 ); System.out.println("MAIL ERROR : " + ex1.getMessage()); } @@ -342,7 +344,7 @@ public class EnviarCorrecao extends AbstractPageBean { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } // @@ -356,7 +358,7 @@ public class EnviarCorrecao extends AbstractPageBean { // } // catch(Exception ex) // { -// ex.printStackTrace(); +// ErrorLogger.logException( ex ); // System.out.println("ERRO NO ENVIO DO EMAIL !!"); // } } diff --git a/trunk/PlanosActuacao/src/java/planosactuacao/Erro.java b/trunk/PlanosActuacao/src/java/planosactuacao/Erro.java index 96a8ce9b..895eaa51 100644 --- a/trunk/PlanosActuacao/src/java/planosactuacao/Erro.java +++ b/trunk/PlanosActuacao/src/java/planosactuacao/Erro.java @@ -6,6 +6,7 @@ package planosactuacao; +import com.evolute.utils.error.ErrorLogger; import com.sun.rave.web.ui.appbase.AbstractPageBean; import com.sun.webui.jsf.component.StaticText; import javax.faces.FacesException; @@ -73,6 +74,7 @@ public class Erro extends AbstractPageBean { try { _init(); } catch (Exception e) { + ErrorLogger.logException( e ); log("Erro Initialization Failure", e); throw e instanceof FacesException ? (FacesException) e: new FacesException(e); } diff --git a/trunk/PlanosActuacao/src/java/planosactuacao/Footer.java b/trunk/PlanosActuacao/src/java/planosactuacao/Footer.java index 9736bfc2..1f529e12 100644 --- a/trunk/PlanosActuacao/src/java/planosactuacao/Footer.java +++ b/trunk/PlanosActuacao/src/java/planosactuacao/Footer.java @@ -6,6 +6,7 @@ package planosactuacao; +import com.evolute.utils.error.ErrorLogger; import com.sun.rave.web.ui.appbase.AbstractPageBean; import javax.faces.FacesException; @@ -63,6 +64,7 @@ public class Footer extends AbstractPageBean { try { _init(); } catch (Exception e) { + ErrorLogger.logException( e ); log("Footer Initialization Failure", e); throw e instanceof FacesException ? (FacesException) e: new FacesException(e); } diff --git a/trunk/PlanosActuacao/src/java/planosactuacao/Header.java b/trunk/PlanosActuacao/src/java/planosactuacao/Header.java index 195e5f2f..ab06a77b 100644 --- a/trunk/PlanosActuacao/src/java/planosactuacao/Header.java +++ b/trunk/PlanosActuacao/src/java/planosactuacao/Header.java @@ -6,6 +6,7 @@ package planosactuacao; +import com.evolute.utils.error.ErrorLogger; import com.sun.rave.web.ui.appbase.AbstractFragmentBean; import com.sun.webui.jsf.component.ImageComponent; import com.sun.webui.jsf.component.StaticText; @@ -84,6 +85,7 @@ public class Header extends AbstractFragmentBean { try { _init(); } catch (Exception e) { + ErrorLogger.logException( e ); log("Page1 Initialization Failure", e); throw e instanceof FacesException ? (FacesException) e: new FacesException(e); } @@ -122,13 +124,13 @@ public class Header extends AbstractFragmentBean { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } } catch(Exception ex) { - + ErrorLogger.logException( ex ); } return null; } @@ -183,7 +185,7 @@ public class Header extends AbstractFragmentBean { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } return null; } @@ -211,7 +213,7 @@ public class Header extends AbstractFragmentBean { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } return null; @@ -234,7 +236,7 @@ public class Header extends AbstractFragmentBean { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } return null; diff --git a/trunk/PlanosActuacao/src/java/planosactuacao/ListaPlanos.java b/trunk/PlanosActuacao/src/java/planosactuacao/ListaPlanos.java index 903fb0ba..57d867a4 100644 --- a/trunk/PlanosActuacao/src/java/planosactuacao/ListaPlanos.java +++ b/trunk/PlanosActuacao/src/java/planosactuacao/ListaPlanos.java @@ -6,13 +6,13 @@ package planosactuacao; +import com.evolute.utils.error.ErrorLogger; import com.evolute.utils.timer.TimedEvent; import com.evolute.utils.timer.Timer; import com.sun.data.provider.RowKey; import com.sun.rave.web.ui.appbase.AbstractPageBean; import com.sun.webui.jsf.component.Button; import com.sun.webui.jsf.component.PanelGroup; -import com.sun.webui.jsf.component.StaticText; import com.sun.webui.jsf.component.Table; import com.sun.webui.jsf.component.TableColumn; import com.sun.webui.jsf.component.TableRowGroup; @@ -363,6 +363,7 @@ public class ListaPlanos extends AbstractPageBean { try { _init(); } catch (Exception e) { + ErrorLogger.logException( e ); log("ListaPlanos Initialization Failure", e); throw e instanceof FacesException ? (FacesException) e: new FacesException(e); } @@ -424,7 +425,7 @@ public class ListaPlanos extends AbstractPageBean { } catch(Exception ex2) { - ex2.printStackTrace(); + ErrorLogger.logException( ex2 ); } } @@ -434,12 +435,12 @@ public class ListaPlanos extends AbstractPageBean { } catch(Exception ex1) { - ex1.printStackTrace(); + ErrorLogger.logException( ex1 ); } } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } } @@ -553,7 +554,7 @@ public class ListaPlanos extends AbstractPageBean { } catch ( Exception e ) { - e.printStackTrace(); + ErrorLogger.logException( e ); } } @@ -598,7 +599,7 @@ public class ListaPlanos extends AbstractPageBean { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } return null; @@ -616,7 +617,7 @@ public class ListaPlanos extends AbstractPageBean { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } return null; @@ -634,7 +635,7 @@ public class ListaPlanos extends AbstractPageBean { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } @@ -673,7 +674,7 @@ FacesContext context = FacesContext.getCurrentInstance(); response.getOutputStream().close(); context.responseComplete(); // } catch (IOException e) { -// e.printStackTrace(); +// ErrorLogger.logException( e ); // } System.out.println("SHOW PDF"); } @@ -688,7 +689,7 @@ FacesContext context = FacesContext.getCurrentInstance(); } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } if(!getApplicationBean1().isTimerStarted()) @@ -702,6 +703,7 @@ FacesContext context = FacesContext.getCurrentInstance(); } catch( Exception ex ) { + } Timer.resetEvent( this ); } @@ -878,7 +880,7 @@ FacesContext context = FacesContext.getCurrentInstance(); } catch ( Exception e ) { - e.printStackTrace(); + ErrorLogger.logException( e ); } return list; } @@ -899,7 +901,7 @@ FacesContext context = FacesContext.getCurrentInstance(); // } // catch(Exception ex) // { -// ex.printStackTrace(); +// ErrorLogger.logException( ex ); // } // return list; } @@ -913,7 +915,7 @@ FacesContext context = FacesContext.getCurrentInstance(); } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } return list; } @@ -929,7 +931,7 @@ FacesContext context = FacesContext.getCurrentInstance(); // } // catch(Exception ex) // { -// ex.printStackTrace(); +// ErrorLogger.logException( ex ); // } // return list; } @@ -943,7 +945,7 @@ FacesContext context = FacesContext.getCurrentInstance(); } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } return list; } @@ -959,7 +961,7 @@ FacesContext context = FacesContext.getCurrentInstance(); // } // catch(Exception ex) // { -// ex.printStackTrace(); +// ErrorLogger.logException( ex ); // } // return list; } diff --git a/trunk/PlanosActuacao/src/java/planosactuacao/Login.java b/trunk/PlanosActuacao/src/java/planosactuacao/Login.java index 68771d2d..a884d3a5 100644 --- a/trunk/PlanosActuacao/src/java/planosactuacao/Login.java +++ b/trunk/PlanosActuacao/src/java/planosactuacao/Login.java @@ -6,6 +6,7 @@ package planosactuacao; +import com.evolute.utils.error.ErrorLogger; import com.sun.rave.web.ui.appbase.AbstractPageBean; import com.sun.webui.jsf.component.Button; import com.sun.webui.jsf.component.PasswordField; @@ -95,6 +96,7 @@ public class Login extends AbstractPageBean { try { _init(); } catch (Exception e) { + ErrorLogger.logException( e ); log("Login Initialization Failure", e); throw e instanceof FacesException ? (FacesException) e: new FacesException(e); } @@ -182,9 +184,9 @@ public class Login extends AbstractPageBean { getExternalContext().redirect("faces/Erro.jsp"); } catch(Exception e) { // . . . handle exception . . . - e.printStackTrace(); + ErrorLogger.logException( e ); } - ex.printStackTrace(); + ErrorLogger.logException( ex ); } } diff --git a/trunk/PlanosActuacao/src/java/planosactuacao/PlanosActuacao.java b/trunk/PlanosActuacao/src/java/planosactuacao/PlanosActuacao.java index 7d4ddf71..24faa8a3 100644 --- a/trunk/PlanosActuacao/src/java/planosactuacao/PlanosActuacao.java +++ b/trunk/PlanosActuacao/src/java/planosactuacao/PlanosActuacao.java @@ -5,6 +5,7 @@ package planosactuacao; +import com.evolute.utils.error.ErrorLogger; import db.entidades.Area; import db.entidades.Medida; import db.entidades.PlanoActuacao; @@ -13,8 +14,6 @@ import db.entidades.Risco; import db.entidades.Utilizador; import db.entidades.Valor; import db.providers.CreatePlanosDataProvider; -import db.providers.PlanosDataProvider; -import db.providers.RelatoriosDataProvider; import db.providers.UtilizadoresDataProvider; import global.Global; import java.util.ArrayList; @@ -65,7 +64,7 @@ public class PlanosActuacao { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } } @@ -84,7 +83,7 @@ public class PlanosActuacao { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } } @@ -100,7 +99,7 @@ public class PlanosActuacao { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } return list; } @@ -140,7 +139,7 @@ public class PlanosActuacao { } catch(Exception e ) { - e.printStackTrace(); + ErrorLogger.logException( e ); } } } @@ -170,7 +169,7 @@ public class PlanosActuacao { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); System.out.println("ERRO NA CRIACAO DOS PLANOS : " + ex.getMessage()); } } @@ -200,7 +199,7 @@ public class PlanosActuacao { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } p.setNome_estabelecimento(relatorio.getToHsMarcacoesEstabelecimento().getToEstabelecimentos().getNome()); p.setData_relatorio(relatorio.getData()); @@ -418,7 +417,7 @@ public class PlanosActuacao { } catch(Exception ex1) { - ex1.printStackTrace(); + ErrorLogger.logException( ex1 ); System.out.println("MAIL ERROR : " + ex1.getMessage()); } @@ -427,6 +426,7 @@ public class PlanosActuacao { catch(Exception ex) { //ex.printStackTrace(); + ErrorLogger.logException( ex ); } @@ -437,7 +437,7 @@ public class PlanosActuacao { // } // catch(Exception ex) // { -// ex.printStackTrace(); +// ErrorLogger.logException( ex ); // System.out.println("ERRO NO ENVIO DO EMAIL !!"); // } } diff --git a/trunk/PlanosActuacao/src/java/planosactuacao/RequestBean1.java b/trunk/PlanosActuacao/src/java/planosactuacao/RequestBean1.java index c40493b5..dd5b6d32 100644 --- a/trunk/PlanosActuacao/src/java/planosactuacao/RequestBean1.java +++ b/trunk/PlanosActuacao/src/java/planosactuacao/RequestBean1.java @@ -6,6 +6,7 @@ package planosactuacao; +import com.evolute.utils.error.ErrorLogger; import com.sun.rave.web.ui.appbase.AbstractRequestBean; import javax.faces.FacesException; @@ -64,6 +65,7 @@ public class RequestBean1 extends AbstractRequestBean { try { _init(); } catch (Exception e) { + ErrorLogger.logException( e ); log("RequestBean1 Initialization Failure", e); throw e instanceof FacesException ? (FacesException) e: new FacesException(e); } diff --git a/trunk/PlanosActuacao/src/java/planosactuacao/SessionBean1.java b/trunk/PlanosActuacao/src/java/planosactuacao/SessionBean1.java index 6cf172fb..5ac52af1 100644 --- a/trunk/PlanosActuacao/src/java/planosactuacao/SessionBean1.java +++ b/trunk/PlanosActuacao/src/java/planosactuacao/SessionBean1.java @@ -6,6 +6,7 @@ package planosactuacao; +import com.evolute.utils.error.ErrorLogger; import com.sun.rave.web.ui.appbase.AbstractSessionBean; import db.entidades.Area; import db.entidades.PlanoActuacao; @@ -115,6 +116,7 @@ public class SessionBean1 extends AbstractSessionBean { try { _init(); } catch (Exception e) { + ErrorLogger.logException( e ); log("SessionBean1 Initialization Failure", e); throw e instanceof FacesException ? (FacesException) e: new FacesException(e); } diff --git a/trunk/PlanosActuacao/src/java/planosactuacao/ViewPlano.java b/trunk/PlanosActuacao/src/java/planosactuacao/ViewPlano.java index dd0a744a..f1373dfb 100644 --- a/trunk/PlanosActuacao/src/java/planosactuacao/ViewPlano.java +++ b/trunk/PlanosActuacao/src/java/planosactuacao/ViewPlano.java @@ -6,9 +6,9 @@ package planosactuacao; +import com.evolute.utils.error.ErrorLogger; import com.sun.rave.web.ui.appbase.AbstractPageBean; import com.sun.webui.jsf.component.Button; -import com.sun.webui.jsf.component.Checkbox; import com.sun.webui.jsf.component.PageSeparator; import com.sun.webui.jsf.component.PanelGroup; import com.sun.webui.jsf.component.StaticText; @@ -107,6 +107,7 @@ public class ViewPlano extends AbstractPageBean { try { _init(); } catch (Exception e) { + ErrorLogger.logException( e ); log("ViewPlano Initialization Failure", e); throw e instanceof FacesException ? (FacesException) e: new FacesException(e); } @@ -778,7 +779,7 @@ public class ViewPlano extends AbstractPageBean { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } st.setText("Validado por " + nome + " (Director de Loja) a " + p.getData_validacao_dir_loja_str()); grd.getChildren().add(st); @@ -815,7 +816,7 @@ public class ViewPlano extends AbstractPageBean { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } st.setText("Validado por " + nome + " (Director Nacional de Segurança) a " + p.getData_validacao_dns_str()); grd.getChildren().add(st); @@ -852,7 +853,7 @@ public class ViewPlano extends AbstractPageBean { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); } st.setText("Validado por " + nome + " (Técnico de SHS) a " + p.getData_validacao_hs_str()); grd.getChildren().add(st); diff --git a/trunk/PlanosActuacao/src/java/utils/Logos.java b/trunk/PlanosActuacao/src/java/utils/Logos.java index cbd641fc..7d95e6c1 100644 --- a/trunk/PlanosActuacao/src/java/utils/Logos.java +++ b/trunk/PlanosActuacao/src/java/utils/Logos.java @@ -5,6 +5,7 @@ package utils; +import com.evolute.utils.error.ErrorLogger; import db.providers.RelatoriosDataProvider; import global.Global; import java.io.File; @@ -46,7 +47,7 @@ public class Logos { } catch(Exception ex) { - ex.printStackTrace(); + ErrorLogger.logException( ex ); return null; } diff --git a/trunk/PlanosActuacao/src/java/utils/PlanosActuacaoLogger.java b/trunk/PlanosActuacao/src/java/utils/PlanosActuacaoLogger.java new file mode 100644 index 00000000..d45f4f94 --- /dev/null +++ b/trunk/PlanosActuacao/src/java/utils/PlanosActuacaoLogger.java @@ -0,0 +1,39 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package utils; + +import com.evolute.utils.error.ErrorLogger; +import com.evolute.utils.error.LoggerProperties; +import com.evolute.utils.error.ProjectsEnum; +import com.evolute.utils.error.log4j.DBLogger; +import java.util.HashMap; +import java.util.Map; + +/** + * + * @author dneves + */ +public class PlanosActuacaoLogger +{ + + private static String EVO_LOGGER_DB = "jdbc:postgresql://www.evolute.pt:5436/evo_logging?logUnclosedConnections=true&loginTimeout=5&socketTimeout=5&tcpKeepAlive=true"; + private static String EVO_LOGGER_USER = "evo_logger"; + private static String EVO_LOGGER_PASSWD = "Typein1"; + + public static void init() + { + Map< LoggerProperties, String > map = new HashMap< LoggerProperties, String >(); + map.put( LoggerProperties.USERNAME, EVO_LOGGER_USER ); + map.put( LoggerProperties.PASSWORD, EVO_LOGGER_PASSWD ); + map.put( LoggerProperties.URL, EVO_LOGGER_DB ); + map.put( LoggerProperties.PROJECT, ProjectsEnum.PLANOS_ACTUACAO.toString() ); + map.put( LoggerProperties.SOFTWARE_VERSION, "1" ); + map.put( LoggerProperties.SOFTWARE_NAME, "SIPRP - Planos Actuacao" ); + // TODO - firewall - must be implemented over http (ws) + ErrorLogger.initializeLogger( new DBLogger( map ) ); + } + +}