From aa5d7ffce0612c25dbd0ca3a4dd2e02d2fa9c82f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=20Lu=C3=ADs=20=3D?= Date: Fri, 26 Dec 2008 16:37:47 +0000 Subject: [PATCH] 22/12/2008 git-svn-id: https://svn.coded.pt/svn/SIPRP@876 bb69d46d-e84e-40c8-a05a-06db0d633741 --- trunk/PlanosActuacao/src/java/db/Dblocal.java | 2 + .../src/java/db/entidades/Area.java | 9 ++ .../src/java/db/entidades/Medida.java | 9 ++ .../src/java/db/entidades/PostoTrabalho.java | 9 ++ .../java/db/providers/PlanosDataProvider.java | 31 +++++- .../db/providers/RelatoriosDataProvider.java | 105 ++++++++++++++---- .../java/phaselistener/MainPhaseListener.java | 12 +- .../src/java/planosactuacao/Header.java | 2 +- .../src/java/planosactuacao/ListaPlanos.java | 71 ++++++------ .../java/planosactuacao/PlanosActuacao.java | 28 ++++- .../web/WEB-INF/faces-config.xml | 7 ++ 11 files changed, 224 insertions(+), 61 deletions(-) diff --git a/trunk/PlanosActuacao/src/java/db/Dblocal.java b/trunk/PlanosActuacao/src/java/db/Dblocal.java index 5516dc26..16d78878 100644 --- a/trunk/PlanosActuacao/src/java/db/Dblocal.java +++ b/trunk/PlanosActuacao/src/java/db/Dblocal.java @@ -22,6 +22,8 @@ import javax.servlet.http.HttpSession; */ public class Dblocal { //String connectionURL = "jdbc:postgresql://storage/siprp_local"; //testes + + //String connectionURL = "jdbc:postgresql://storage/siprp_local_3"; //testes local_3 String connectionURL = "jdbc:postgresql://localhost:5436/siprp_local_3"; String User = "postgres"; diff --git a/trunk/PlanosActuacao/src/java/db/entidades/Area.java b/trunk/PlanosActuacao/src/java/db/entidades/Area.java index 1926e05f..afa24255 100644 --- a/trunk/PlanosActuacao/src/java/db/entidades/Area.java +++ b/trunk/PlanosActuacao/src/java/db/entidades/Area.java @@ -13,6 +13,7 @@ import java.util.List; */ public class Area { private Integer id; + private Integer area_id; //from relatorios private Integer plano_id; private String descricao; private List riscos; @@ -48,4 +49,12 @@ public class Area { public void setPlano_id(Integer plano_id) { this.plano_id = plano_id; } + + public Integer getArea_id() { + return area_id; + } + + public void setArea_id(Integer area_id) { + this.area_id = area_id; + } } diff --git a/trunk/PlanosActuacao/src/java/db/entidades/Medida.java b/trunk/PlanosActuacao/src/java/db/entidades/Medida.java index 6410e8fa..0cf1950c 100644 --- a/trunk/PlanosActuacao/src/java/db/entidades/Medida.java +++ b/trunk/PlanosActuacao/src/java/db/entidades/Medida.java @@ -14,6 +14,7 @@ import java.util.Vector; */ public class Medida { private Integer id; + private Integer medida_id; //from relatorios private Integer valor_id; private Integer risco_id; private String descricao; @@ -67,4 +68,12 @@ public class Medida { public void setRisco_id(Integer risco_id) { this.risco_id = risco_id; } + + public Integer getMedida_id() { + return medida_id; + } + + public void setMedida_id(Integer medida_id) { + this.medida_id = medida_id; + } } diff --git a/trunk/PlanosActuacao/src/java/db/entidades/PostoTrabalho.java b/trunk/PlanosActuacao/src/java/db/entidades/PostoTrabalho.java index 21e7b707..0d42aeae 100644 --- a/trunk/PlanosActuacao/src/java/db/entidades/PostoTrabalho.java +++ b/trunk/PlanosActuacao/src/java/db/entidades/PostoTrabalho.java @@ -11,6 +11,7 @@ package db.entidades; */ public class PostoTrabalho { private Integer id; + private Integer posto_id; //from relatorios private Integer medida_id; private String descricao; private String activo; @@ -46,4 +47,12 @@ public class PostoTrabalho { public void setMedida_id(Integer medida_id) { this.medida_id = medida_id; } + + public Integer getPosto_id() { + return posto_id; + } + + public void setPosto_id(Integer posto_id) { + this.posto_id = posto_id; + } } diff --git a/trunk/PlanosActuacao/src/java/db/providers/PlanosDataProvider.java b/trunk/PlanosActuacao/src/java/db/providers/PlanosDataProvider.java index 4bb050cc..4c819eb6 100644 --- a/trunk/PlanosActuacao/src/java/db/providers/PlanosDataProvider.java +++ b/trunk/PlanosActuacao/src/java/db/providers/PlanosDataProvider.java @@ -78,6 +78,28 @@ public class PlanosDataProvider extends GenericDataProvider{ { p.setObservacoes_dns(""); } + if(p.getUser_dir_loja() != null) + { + if(p.getUser_dir_loja().intValue() == 0) + { + p.setUser_dir_loja(null); + } + } + if(p.getUser_dns() != null) + { + if(p.getUser_dns().intValue() == 0) + { + p.setUser_dns(null); + } + } + if(p.getUser_hs() != null) + { + if(p.getUser_hs().intValue() == 0) + { + p.setUser_hs(null); + } + } + Statement st = createStatement(); String sql = ""; @@ -260,8 +282,9 @@ public class PlanosDataProvider extends GenericDataProvider{ { Statement st = createStatement(); Integer newId = getMaxTableId("plano_areas"); - String sql = "insert into plano_areas (id, plano_id, descricao) values ("; + String sql = "insert into plano_areas (id, area_id, plano_id, descricao) values ("; sql += newId + ", "; + sql += a.getArea_id() + ", "; sql += a.getPlano_id() + ", '"; sql += a.getDescricao() + "' "; sql += ")"; @@ -307,8 +330,9 @@ public class PlanosDataProvider extends GenericDataProvider{ { Statement st = createStatement(); Integer newId = getMaxTableId("plano_medidas"); - String sql = "insert into plano_medidas (id, risco_id, descricao) values ("; + String sql = "insert into plano_medidas (id, medida_id, risco_id, descricao) values ("; sql += newId + ", "; + sql += m.getMedida_id() + ", "; sql += m.getRisco_id() + ", '"; sql += m.getDescricao() + "' "; sql += ")"; @@ -322,8 +346,9 @@ public class PlanosDataProvider extends GenericDataProvider{ { Statement st = createStatement(); Integer newId = getMaxTableId("plano_postos_trabalho"); - String sql = "insert into plano_postos_trabalho (id, medida_id, descricao) values ("; + String sql = "insert into plano_postos_trabalho (id, posto_id, medida_id, descricao) values ("; sql += newId + ", "; + sql += p.getPosto_id() + ", "; sql += p.getMedida_id() + ", '"; sql += p.getDescricao() + "' "; sql += ")"; diff --git a/trunk/PlanosActuacao/src/java/db/providers/RelatoriosDataProvider.java b/trunk/PlanosActuacao/src/java/db/providers/RelatoriosDataProvider.java index 32e48c55..38f2f7d7 100644 --- a/trunk/PlanosActuacao/src/java/db/providers/RelatoriosDataProvider.java +++ b/trunk/PlanosActuacao/src/java/db/providers/RelatoriosDataProvider.java @@ -67,19 +67,24 @@ public class RelatoriosDataProvider extends GenericDataProvider { { Area a = new Area(); a.setId(new Integer( rs.getInt("area_id") )); - a.setDescricao(Utils.unicodeToHTML(rs.getString("descricao"))); - try + a.setArea_id(a.getId()); + if(existemMedidasByArea(a.getId())) { - a.setRiscos(getRiscosByArea(a)); - } - catch(Exception ex) - { - System.out.println("ERRO RISCOS BY AREA !!!!"); - ex.printStackTrace(); - a.setRiscos(null); + a.setDescricao(Utils.unicodeToHTML(rs.getString("descricao"))); + try + { + a.setRiscos(getRiscosByArea(a)); + } + catch(Exception ex) + { + System.out.println("ERRO RISCOS BY AREA !!!!"); + ex.printStackTrace(); + a.setRiscos(null); + } + + areas.add(a); } - areas.add(a); }while(rs.next()); plano.setAreas(areas); } @@ -108,13 +113,17 @@ public class RelatoriosDataProvider extends GenericDataProvider { { Risco r = new Risco(); r.setId(new Integer( rs.getInt("id") )); - r.setDescricao(Utils.unicodeToHTML(rs.getString("descricao"))); - r.setValores(getValoresByRisco(r, a)); - //Integer valor = getValorByRisco(r, a); - //r.setValor(valor); - r.setRisco_id(new Integer( rs.getInt("id") )); - r.setMedidas(getMedidasByRisco( r, a)); - riscos.add(r); + if(existemMedidasByRisco(r.getId())) + { + r.setDescricao(Utils.unicodeToHTML(rs.getString("descricao"))); + r.setValores(getValoresByRisco(r, a)); + //Integer valor = getValorByRisco(r, a); + //r.setValor(valor); + r.setRisco_id(new Integer( rs.getInt("id") )); + r.setMedidas(getMedidasByRisco( r, a)); + riscos.add(r); + } + }while(rs.next()); } return riscos; @@ -247,9 +256,10 @@ public class RelatoriosDataProvider extends GenericDataProvider { //int valor = rs.getInt("valor"); //m.setValor(new Integer(valor)); m.setId(new Integer( rs.getInt("medida_id") )); + m.setMedida_id(m.getId()); m.setDescricao(Utils.unicodeToHTML(rs.getString("descricao"))); //m.setPostos(getPostosByMedidaAndValor(m, v, a)); - m.setPostos(getPostosByMedida(m, a)); + m.setPostos(getPostosByMedida(r, m, a)); medidas.add(m); }while(rs.next()); } @@ -288,7 +298,7 @@ public class RelatoriosDataProvider extends GenericDataProvider { // return postos; // } - private List getPostosByMedida(Medida m, Area a) throws Exception + private List getPostosByMedida(Risco r, Medida m, Area a) throws Exception { Statement st = dblocal.createStatement(); String sql = "select subquery.posto_id, valor, descricao from "; @@ -301,7 +311,7 @@ public class RelatoriosDataProvider extends GenericDataProvider { sql += "inner join hs_relatorio_posto_risco on hs_relatorio_posto_risco.posto_id = hs_relatorio_posto_medida.posto_id "; sql += "inner join hs_relatorio_posto on hs_relatorio_posto.id = hs_relatorio_posto_medida.posto_id "; sql += "inner join hs_relatorio_area on hs_relatorio_area.id = area_id "; - sql += "where medida_id = " + m.getId() + " and area_id = " + a.getId() + ") subquery "; + sql += "where medida_id = " + m.getId() + " and area_id = " + a.getId() + " and risco_id = " + r.getId() + ") subquery "; //sql += "where valor = " + v.getValor(); System.out.println("POSTOS BY MEDIDA SQL : " + sql); ResultSet rs = st.executeQuery(sql); @@ -313,6 +323,7 @@ public class RelatoriosDataProvider extends GenericDataProvider { { PostoTrabalho p = new PostoTrabalho(); p.setId(new Integer( rs.getInt("posto_id") )); + p.setPosto_id(p.getId()); p.setDescricao(Utils.unicodeToHTML(rs.getString("descricao"))); postos.add(p); }while(rs.next()); @@ -320,6 +331,60 @@ public class RelatoriosDataProvider extends GenericDataProvider { return postos; } + private boolean existemMedidasByArea(Integer area_id) throws Exception + { + Statement st = dblocal.createStatement(); + String sql = "select distinct medida_id, valor, descricao "; + sql += "from ( select distinct hs_relatorio_posto_medida.medida_id, hs_relatorio_posto_risco.risco_id, hs_relatorio_medida.description as descricao, "; + sql += "case when hs_relatorio_posto_risco.valor_qualitativo_id isnull and hs_relatorio_posto_risco.probabilidade isnull and hs_relatorio_posto_risco.severidade isnull then null "; + sql += "when hs_relatorio_posto_risco.valor_qualitativo_id isnull then hs_relatorio_posto_risco.probabilidade * hs_relatorio_posto_risco.severidade else hs_relatorio_posto_risco.valor_qualitativo_id end as valor from hs_relatorio_posto "; + sql += "inner join hs_relatorio_posto_medida on hs_relatorio_posto_medida.posto_id = hs_relatorio_posto.id "; + sql += "inner join hs_relatorio_medida on hs_relatorio_medida.id = hs_relatorio_posto_medida.medida_id "; + sql += "inner join hs_relatorio_risco on hs_relatorio_risco.id = hs_relatorio_medida.risco_id "; + sql += "inner join hs_relatorio_posto_risco on (hs_relatorio_posto_risco.posto_id = hs_relatorio_posto.id and hs_relatorio_posto_risco.risco_id = hs_relatorio_risco.id) "; + sql += "inner join hs_relatorio on hs_relatorio.id = hs_relatorio_risco.relatorio_id "; + sql += "inner join hs_relatorio_area on hs_relatorio_area.id = area_id "; + sql += "where area_id = " + area_id + " and hs_relatorio_posto_medida.is_plano_actuacao = true) subquery order by subquery.medida_id, valor"; + System.out.println("EXISTEM MEDIDAS BY AREA SQL : " + sql); + ResultSet rs = st.executeQuery(sql); + if(rs.isBeforeFirst()) + { + return true; + } + else + { + return false; + } + } + + private boolean existemMedidasByRisco(Integer risco_id) throws Exception + { + Statement st = dblocal.createStatement(); + String sql = "select distinct medida_id "; + sql += "from ( select distinct hs_relatorio_posto_medida.medida_id, hs_relatorio_posto_risco.risco_id, hs_relatorio_medida.description as descricao, "; + sql += "case when hs_relatorio_posto_risco.valor_qualitativo_id isnull and hs_relatorio_posto_risco.probabilidade isnull and hs_relatorio_posto_risco.severidade isnull then null "; + sql += "when hs_relatorio_posto_risco.valor_qualitativo_id isnull then hs_relatorio_posto_risco.probabilidade * hs_relatorio_posto_risco.severidade else hs_relatorio_posto_risco.valor_qualitativo_id end as valor from hs_relatorio_posto "; + sql += "inner join hs_relatorio_posto_medida on hs_relatorio_posto_medida.posto_id = hs_relatorio_posto.id "; + sql += "inner join hs_relatorio_medida on hs_relatorio_medida.id = hs_relatorio_posto_medida.medida_id "; + sql += "inner join hs_relatorio_risco on hs_relatorio_risco.id = hs_relatorio_medida.risco_id "; + sql += "inner join hs_relatorio_posto_risco on (hs_relatorio_posto_risco.posto_id = hs_relatorio_posto.id and hs_relatorio_posto_risco.risco_id = hs_relatorio_risco.id) "; + sql += "inner join hs_relatorio on hs_relatorio.id = hs_relatorio_risco.relatorio_id "; + sql += "inner join hs_relatorio_area on hs_relatorio_area.id = area_id "; + sql += "where hs_relatorio_posto_risco.risco_id = " + risco_id + " and hs_relatorio_posto_medida.is_plano_actuacao = true) subquery order by medida_id"; + System.out.println("EXISTEM MEDIDAS BY RISCO SQL : " + sql); + ResultSet rs = st.executeQuery(sql); + if(rs.isBeforeFirst()) + { + return true; + } + else + { + return false; + } + + } + + public String getEmpresaNome(Integer empresa_id) throws Exception { Statement st = dblocal.createStatement(); diff --git a/trunk/PlanosActuacao/src/java/phaselistener/MainPhaseListener.java b/trunk/PlanosActuacao/src/java/phaselistener/MainPhaseListener.java index 3d0b970b..343da0c3 100644 --- a/trunk/PlanosActuacao/src/java/phaselistener/MainPhaseListener.java +++ b/trunk/PlanosActuacao/src/java/phaselistener/MainPhaseListener.java @@ -119,6 +119,7 @@ public class MainPhaseListener implements PhaseListener{ ////////////// String user_id = JSFUtils.getRequestParameter(fc, "user"); + System.out.println("PHASE LISTENER - USER ID : " + user_id); Utilizador u = null; try { @@ -146,20 +147,27 @@ public class MainPhaseListener implements PhaseListener{ if(sview.matches("/EditarPlano.jsp") || sview.matches("/EnviarCorrecao.jsp") || sview.matches("/ViewPlano.jsp")) { - session.setDisableMenu(true); + session.setDisableMenu(false); + session.setDisableMenuPlanos(false); if(sview.matches("/ViewPlano.jsp")) { if(u.getTipo().intValue() == Global.DIRECTOR_SIPRP) { + //session.setDisableMenu(false); session.setDisableMenuUtilizadores(false); } + else + { + session.setDisableMenuUtilizadores(true); + } session.setDisableMenuDadosUtilizador(false); session.setRenderTopMenuImages(false); session.setRenderSubHeader(true); } else if(sview.matches("/EditarPlano.jsp")) { - session.setDisableMenuPlanos(true); + //session.setDisableMenuPlanos(true); + session.setDisableMenuPlanos(false); session.setRenderTopMenuImages(false); session.setRenderSubHeader(true); } diff --git a/trunk/PlanosActuacao/src/java/planosactuacao/Header.java b/trunk/PlanosActuacao/src/java/planosactuacao/Header.java index 96846fb8..874edec1 100644 --- a/trunk/PlanosActuacao/src/java/planosactuacao/Header.java +++ b/trunk/PlanosActuacao/src/java/planosactuacao/Header.java @@ -191,7 +191,7 @@ public class Header extends AbstractFragmentBean { public String lnkPlanosActuacao1_action() { // TODO: Process the action. Return value is a navigation // case name where null will return to the same page. - return null; + return "lista_planos"; } public String lnkGerirUtilizadores1_action() { diff --git a/trunk/PlanosActuacao/src/java/planosactuacao/ListaPlanos.java b/trunk/PlanosActuacao/src/java/planosactuacao/ListaPlanos.java index a665673d..b815fcb0 100644 --- a/trunk/PlanosActuacao/src/java/planosactuacao/ListaPlanos.java +++ b/trunk/PlanosActuacao/src/java/planosactuacao/ListaPlanos.java @@ -165,49 +165,58 @@ public class ListaPlanos extends AbstractPageBean { @Override public void prerender() { //UIComponent emptyCol = tableRowGroup1.getEmptyDataText(); - + System.out.println("LISTA PLANOS - PRERENDER"); FacesContext fc = getFacesContext(); String user_id = JSFUtils.getRequestParameter(fc, "user"); + System.out.println("LISTA PLANOS - USER ID : " + user_id); Utilizador u = null; - try + if(user_id != null) { - Integer userId = new Integer(Integer.parseInt(user_id)); try { - UtilizadoresDataProvider udp = new UtilizadoresDataProvider(); - udp.checkConnection(); - u = udp.getUtilizador(userId); - getSessionBean1().setCurrentUser(u); + Integer userId = new Integer(Integer.parseInt(user_id)); + + try + { + UtilizadoresDataProvider udp = new UtilizadoresDataProvider(); + udp.checkConnection(); + u = udp.getUtilizador(userId); + getSessionBean1().setCurrentUser(u); + + u = getSessionBean1().getCurrentUser(); + if(u.getTipo().intValue() == Global.DIRECTOR_SIPRP) + { + gridActual.setRendered(false); + tableRowGroup2.setEmptyDataMsg("Sem registos"); + tableRowGroup3.setEmptyDataMsg("Sem registos"); + } + + if(u.getTipo().intValue() != Global.DIRECTOR_SIPRP) + { + getSessionBean1().setDisableMenuUtilizadores(true); + tableRowGroup1.setEmptyDataMsg("Sem registos"); + tableRowGroup2.setEmptyDataMsg("Sem registos"); + tableRowGroup3.setEmptyDataMsg("Sem registos"); + } + + initialize(); + } + catch(Exception ex1) + { + ex1.printStackTrace(); + } } - catch(Exception ex1) + catch(Exception ex) { - ex1.printStackTrace(); - } - } - catch(Exception ex) - { - ex.printStackTrace(); - } - - u = getSessionBean1().getCurrentUser(); - if(u.getTipo().intValue() == Global.DIRECTOR_SIPRP) - { - gridActual.setRendered(false); - tableRowGroup2.setEmptyDataMsg("Sem registos"); - tableRowGroup3.setEmptyDataMsg("Sem registos"); + ex.printStackTrace(); + } + } + - if(u.getTipo().intValue() != Global.DIRECTOR_SIPRP) - { - getSessionBean1().setDisableMenuUtilizadores(true); - tableRowGroup1.setEmptyDataMsg("Sem registos"); - tableRowGroup2.setEmptyDataMsg("Sem registos"); - tableRowGroup3.setEmptyDataMsg("Sem registos"); - } - - initialize(); + } /** diff --git a/trunk/PlanosActuacao/src/java/planosactuacao/PlanosActuacao.java b/trunk/PlanosActuacao/src/java/planosactuacao/PlanosActuacao.java index 5aa7c106..3f03a872 100644 --- a/trunk/PlanosActuacao/src/java/planosactuacao/PlanosActuacao.java +++ b/trunk/PlanosActuacao/src/java/planosactuacao/PlanosActuacao.java @@ -91,7 +91,11 @@ public class PlanosActuacao { try { PlanoActuacao p = createPlano(relatorio); - enviarMail(p); + if(p != null) + { + enviarMail(p); + } + //showPlano(p); } catch(Exception ex) @@ -131,13 +135,29 @@ public class PlanosActuacao { p.setData_relatorio(relatorio.getData()); p = rdp.getFullPlano(p, relatorio.getId()); - p.setId(pdp.createPlano(p)); if(p.getAreas() != null) { - createAreas(p.getId(), p.getAreas()); + if(p.getAreas().size() > 0) + { + p.setId(pdp.createPlano(p)); + System.out.println("CREATE PLANO - PLANO ID : " + p.getId().toString()); + if(p.getAreas() != null) + { + createAreas(p.getId(), p.getAreas()); + } + } + else + { + p = null; + } + } + else + { + p = null; } - System.out.println("CREATE PLANO - PLANO ID : " + p.getId().toString()); + + return p; } diff --git a/trunk/PlanosActuacao/web/WEB-INF/faces-config.xml b/trunk/PlanosActuacao/web/WEB-INF/faces-config.xml index d602dad8..37358dab 100644 --- a/trunk/PlanosActuacao/web/WEB-INF/faces-config.xml +++ b/trunk/PlanosActuacao/web/WEB-INF/faces-config.xml @@ -91,6 +91,13 @@ /ListaPlanos.jsp + + /EditarPlano.jsp + + lista_planos + /ListaPlanos.jsp + + Dummy planosactuacao.Dummy