diff --git a/trunk/PlanosActuacao/nbproject/faces-config.NavData b/trunk/PlanosActuacao/nbproject/faces-config.NavData index 365f6c28..6c525138 100644 --- a/trunk/PlanosActuacao/nbproject/faces-config.NavData +++ b/trunk/PlanosActuacao/nbproject/faces-config.NavData @@ -3,11 +3,12 @@ - + + diff --git a/trunk/PlanosActuacao/nbproject/private/private.properties b/trunk/PlanosActuacao/nbproject/private/private.properties index dcd9566d..33b5591e 100644 --- a/trunk/PlanosActuacao/nbproject/private/private.properties +++ b/trunk/PlanosActuacao/nbproject/private/private.properties @@ -3,7 +3,7 @@ auxiliary.org-netbeans-modules-web-client-tools-api.dialogShowDebugPanel=false auxiliary.org-netbeans-modules-web-client-tools-api.FIREFOX=true auxiliary.org-netbeans-modules-web-client-tools-api.INTERNET_5f_EXPLORER=false auxiliary.org-netbeans-modules-web-client-tools-api.serverdebug=true -deploy.ant.properties.file=/home/fpalma/.netbeans/6.7/tomcat60.properties +deploy.ant.properties.file=/home/fpalma/.netbeans/6.7/tomcat60_1.properties j2ee.platform.classpath=/home/fpalma/apache/apache-tomcat-6.0.32/lib/el-api.jar:/home/fpalma/apache/apache-tomcat-6.0.32/lib/catalina.jar:/home/fpalma/apache/apache-tomcat-6.0.32/lib/tomcat-i18n-ja.jar:/home/fpalma/apache/apache-tomcat-6.0.32/lib/catalina-ant.jar:/home/fpalma/apache/apache-tomcat-6.0.32/lib/tomcat-coyote.jar:/home/fpalma/apache/apache-tomcat-6.0.32/lib/tomcat-dbcp.jar:/home/fpalma/apache/apache-tomcat-6.0.32/lib/jsp-api.jar:/home/fpalma/apache/apache-tomcat-6.0.32/lib/jasper.jar:/home/fpalma/apache/apache-tomcat-6.0.32/lib/catalina-ha.jar:/home/fpalma/apache/apache-tomcat-6.0.32/lib/ecj-3.3.1.jar:/home/fpalma/apache/apache-tomcat-6.0.32/lib/tomcat-i18n-fr.jar:/home/fpalma/apache/apache-tomcat-6.0.32/lib/servlet-api.jar:/home/fpalma/apache/apache-tomcat-6.0.32/lib/tomcat-i18n-es.jar:/home/fpalma/apache/apache-tomcat-6.0.32/lib/annotations-api.jar:/home/fpalma/apache/apache-tomcat-6.0.32/lib/jasper-el.jar:/home/fpalma/apache/apache-tomcat-6.0.32/lib/catalina-tribes.jar:/home/fpalma/apache/apache-tomcat-6.0.32/bin/tomcat-juli.jar j2ee.server.instance=tomcat60:home=/home/fpalma/apache/apache-tomcat-6.0.32 javac.debug=true diff --git a/trunk/PlanosActuacao/src/java/db/entidades/LinhaEstatistica.java b/trunk/PlanosActuacao/src/java/db/entidades/LinhaEstatistica.java new file mode 100644 index 00000000..4716b06a --- /dev/null +++ b/trunk/PlanosActuacao/src/java/db/entidades/LinhaEstatistica.java @@ -0,0 +1,67 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package db.entidades; + +/** + * + * @author fpalma + */ +public class LinhaEstatistica { + protected String titulo; + protected String valoracao; + protected Integer percentagem; + protected Integer quantidade; + + public LinhaEstatistica( String titulo, String valoracao, Integer percentagem, Integer quantidade ) + { + this.titulo = titulo; + this.valoracao = valoracao; + this.percentagem = percentagem; + this.quantidade = quantidade; + } + + public Integer getQuantidade() + { + return quantidade; + } + + public void setQuantidade( Integer quantidade ) + { + this.quantidade = quantidade; + } + + public Integer getPercentagem() + { + return percentagem; + } + + public void setPercentagem( Integer percentagem ) + { + this.percentagem = percentagem; + } + + public String getTitulo() + { + return titulo; + } + + public void setTitulo( String titulo ) + { + this.titulo = titulo; + } + + public String getValoracao() + { + return valoracao; + } + + public void setValoracao( String valoracao ) + { + this.valoracao = valoracao; + } + + +} diff --git a/trunk/PlanosActuacao/src/java/db/providers/PlanosDataProvider.java b/trunk/PlanosActuacao/src/java/db/providers/PlanosDataProvider.java index c33d3506..b3956060 100644 --- a/trunk/PlanosActuacao/src/java/db/providers/PlanosDataProvider.java +++ b/trunk/PlanosActuacao/src/java/db/providers/PlanosDataProvider.java @@ -6,14 +6,18 @@ package db.providers; import com.evolute.utils.arrays.Virtual2DArray; +import com.evolute.utils.data.Mappable; +import com.evolute.utils.data.MappableObject; import com.evolute.utils.error.ErrorLogger; import com.evolute.utils.sql.Assignment; import com.evolute.utils.sql.Expression; import com.evolute.utils.sql.Field; +import com.evolute.utils.sql.Select; import com.evolute.utils.sql.Select2; import com.evolute.utils.sql.Update; import com.evolute.utils.sql.expression.Par; import com.evolute.utils.strings.StringPlainer; +import db.data.siprp.outer.EstabelecimentosData; import db.data.siprp.outer.EstadoMedidasData; import db.data.siprp.outer.PlanoAreasData; import db.data.siprp.outer.PlanoMedidasData; @@ -23,12 +27,14 @@ import db.data.siprp.outer.PlanoValoresQualitativosData; import db.data.siprp.outer.PlanosActuacaoData; import db.entidades.Area; import db.entidades.EstadoMedida; +import db.entidades.LinhaEstatistica; import db.entidades.Medida; import db.entidades.PlanoActuacao; import db.entidades.PostoTrabalho; import db.entidades.Risco; import db.entidades.Utilizador; import java.sql.Timestamp; +import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import utils.Global; @@ -1093,4 +1099,198 @@ public class PlanosDataProvider extends GenericDataProvider } return result; } + + public List getEstatisticaForPlanoId( Integer planoId ) + throws Exception + { + Select select = + new Select2( new String[]{ PlanoAreasData.TABLENAME, PlanoRiscosData.TABLENAME, PlanoMedidasData.TABLENAME, + EstadoMedidasData.TABLENAME, PlanoValoresQualitativosData.TABLENAME }, + new Integer[]{ Select2.JOIN_INNER, Select2.JOIN_INNER, Select2.JOIN_LEFT_OUTER, Select2.JOIN_LEFT_OUTER }, + new Expression[]{ + new Field( PlanoAreasData.ID_FULL ).isEqual( new Field( PlanoRiscosData.AREA_ID_FULL ) ), + new Field( PlanoRiscosData.ID_FULL ).isEqual( new Field( PlanoMedidasData.RISCO_ID_FULL ) ), + new Field( EstadoMedidasData.ID_FULL ).isEqual( new Field( PlanoMedidasData.ESTADO_MEDIDAS_ID_FULL ) ), + new Field( PlanoValoresQualitativosData.ID_FULL ).isEqual( new Field( PlanoRiscosData.VALOR_QUALITATIVO_ID_FULL ) ), + }, + new String[]{ "COALESCE( " + EstadoMedidasData.DESCRICAO_FULL + ", 'n.d.' )", + "COALESCE( ''|| " + PlanoRiscosData.VALOR_FULL + "," + PlanoValoresQualitativosData.DESCRICAO_FULL + " )", + "COUNT( * )", + EstadoMedidasData.ORDEM_FULL, + PlanoRiscosData.VALOR_FULL }, + new Field( PlanoAreasData.PLANO_ID_FULL ).isEqual( planoId), + new String[]{ "4", "5", "2" }, + new String[]{ "1", "4", "2", "5" }, + null, + null ) ; + select.disableOrderFieldsVerification(); + Virtual2DArray array = getExecuter().executeQuery( select ); + List linhas = new ArrayList(); + int total = 0; + String last = null; + int totalEstado = 0; + for( int n = 0; n < array.columnLength(); n++ ) + { + String estado = array.get( n, 0 ); + if( last == null ? estado != null : !last.equals( estado ) ) + { + if( totalEstado > 0 ) + { + linhas.add( new LinhaEstatistica( "", "TOTAL", 0, totalEstado ) ); + } + last = estado; + totalEstado = 0; + } + else + { + estado = ""; + } + String valoracao = array.get( n, 1 ); + Integer count = ( ( Number ) array.get( n, 2 ) ).intValue(); + total += count; + totalEstado += count; + linhas.add( new LinhaEstatistica( estado, valoracao, 0, count) ); + } + linhas.add( new LinhaEstatistica( "", "TOTAL", 0, totalEstado ) ); + for( LinhaEstatistica linha : linhas ) + { + linha.setPercentagem( ( int ) Math.round( linha.getQuantidade().doubleValue() * 100.0 / (double) total ) ); + } + linhas.add( new LinhaEstatistica( "TOTAL", "", 100, total ) ); + return linhas; + } + + public List getEstatisticaForEstabelecimentoIdAndDateInterval( Integer estabelecimentoId, Date dataInicio, Date dataFim ) + throws Exception + { + Expression expr = null; + if( estabelecimentoId != null ) + { + expr = new Field( PlanosActuacaoData.ESTABELECIMENTO_ID_FULL ).isEqual( estabelecimentoId); + } + if( dataInicio != null ) + { + Expression diExpr = new Field( PlanosActuacaoData.DATA_VISITA_FULL ).isGreaterOrEqual( dataInicio); + if( expr != null ) + { + expr = expr.and( diExpr); + } + else + { + expr = diExpr; + } + } + if( dataFim != null ) + { + Expression dfExpr = new Field( PlanosActuacaoData.DATA_VISITA_FULL ).isLessOrEqual( dataFim); + if( expr != null ) + { + expr = expr.and( dfExpr); + } + else + { + expr = dfExpr; + } + } + Select select = + new Select2( new String[]{ PlanosActuacaoData.TABLENAME, PlanoAreasData.TABLENAME, PlanoRiscosData.TABLENAME, + PlanoMedidasData.TABLENAME, EstadoMedidasData.TABLENAME, PlanoValoresQualitativosData.TABLENAME }, + new Integer[]{ Select2.JOIN_INNER, Select2.JOIN_INNER, Select2.JOIN_INNER, Select2.JOIN_LEFT_OUTER, Select2.JOIN_LEFT_OUTER }, + new Expression[]{ + new Field( PlanosActuacaoData.ID_FULL ).isEqual( new Field( PlanoAreasData.PLANO_ID_FULL ) ), + new Field( PlanoAreasData.ID_FULL ).isEqual( new Field( PlanoRiscosData.AREA_ID_FULL ) ), + new Field( PlanoRiscosData.ID_FULL ).isEqual( new Field( PlanoMedidasData.RISCO_ID_FULL ) ), + new Field( EstadoMedidasData.ID_FULL ).isEqual( new Field( PlanoMedidasData.ESTADO_MEDIDAS_ID_FULL ) ), + new Field( PlanoValoresQualitativosData.ID_FULL ).isEqual( new Field( PlanoRiscosData.VALOR_QUALITATIVO_ID_FULL ) ), + }, + new String[]{ "COALESCE( " + EstadoMedidasData.DESCRICAO_FULL + ", 'n.d.' )", + "COALESCE( ''|| " + PlanoRiscosData.VALOR_FULL + "," + PlanoValoresQualitativosData.DESCRICAO_FULL + " )", + "COUNT( * )", + EstadoMedidasData.ORDEM_FULL, + PlanoRiscosData.VALOR_FULL }, + expr, + new String[]{ "4", "5", "2" }, + new String[]{ "1", "4", "2", "5" }, + null, + null ) ; + select.disableOrderFieldsVerification(); + Virtual2DArray array = getExecuter().executeQuery( select ); + List linhas = new ArrayList(); + int total = 0; + String last = null; + int totalEstado = 0; + for( int n = 0; n < array.columnLength(); n++ ) + { + String estado = array.get( n, 0 ); + if( last == null ? estado != null : !last.equals( estado ) ) + { + if( totalEstado > 0 ) + { + linhas.add( new LinhaEstatistica( "", "TOTAL", 0, totalEstado ) ); + } + last = estado; + totalEstado = 0; + } + else + { + estado = ""; + } + String valoracao = array.get( n, 1 ); + Integer count = ( ( Number ) array.get( n, 2 ) ).intValue(); + total += count; + totalEstado += count; + linhas.add( new LinhaEstatistica( estado, valoracao, 0, count) ); + } + linhas.add( new LinhaEstatistica( "", "TOTAL", 0, totalEstado ) ); + for( LinhaEstatistica linha : linhas ) + { + linha.setPercentagem( ( int ) Math.round( linha.getQuantidade().doubleValue() * 100.0 / (double) total ) ); + } + linhas.add( new LinhaEstatistica( "TOTAL", "", 100, total ) ); + return linhas; + } + +// public List getEstabelecimentosForEstatistica( Utilizador u ) + public List getEstabelecimentosForEstatistica( Utilizador u ) + throws Exception + { + Expression exp = new Field( db.data.siprp_local.outer.EstabelecimentosData.EMPRESA_ID_FULL ).isEqual( 32 ).and( + new Field( db.data.siprp_local.outer.EstabelecimentosData.INACTIVO_FULL ).isDifferent( "y" ) ); + int userType = u.getTipo().intValue(); + if ( userType != Global.DIRECTOR_SIPRP && userType != Global.TECNICO_HS + && userType != Global.DIRECTOR_NACIONAL_SEGURANCA && userType != Global.DIRECTOR_GERAL_RH + && userType != Global.GESTOR ) + { + exp = exp.and( new Field( db.data.siprp_local.outer.EstabelecimentosData.ID_FULL ).isEqual( u.getEstabelecimento_id() ) ); + } + Select select = + new Select2( new String[]{ db.data.siprp_local.outer.EstabelecimentosData.TABLENAME }, + new Integer[]{}, + new Expression[]{}, + new String[]{ db.data.siprp_local.outer.EstabelecimentosData.ID_FULL, db.data.siprp_local.outer.EstabelecimentosData.NOME_FULL }, + exp, + new String[]{ db.data.siprp_local.outer.EstabelecimentosData.NOME_FULL }, + null, + null, + null); + Virtual2DArray array = getLocalExecuter().executeQuery( select ); + List estabelecimentos = new ArrayList(); + for( int n = 0; n < array.columnLength(); n++ ) + { + estabelecimentos.add( new MappableObject( ( Integer ) array.get( n, 0), ( String ) array.get( n, 1 ) ) ); + } + return estabelecimentos; +// int userType = u.getTipo().intValue(); +// if ( userType != Global.DIRECTOR_SIPRP && userType != Global.TECNICO_HS +// && userType != Global.DIRECTOR_NACIONAL_SEGURANCA && userType != Global.DIRECTOR_GERAL_RH +// && userType != Global.GESTOR ) +// { +// return getProvider().listLoad( EstabelecimentosData.class, new Object[]{ u.getEstabelecimento_id() }, +// new String[]{ EstabelecimentosData.ID_FULL }, new String[]{ EstabelecimentosData.NOME_FULL } ); +// } +// else +// { +// return getProvider().listLoad( EstabelecimentosData.class, EstabelecimentosData.NOME_FULL); +// } + } } diff --git a/trunk/PlanosActuacao/src/java/phaselistener/PAMainPhaseListener.java b/trunk/PlanosActuacao/src/java/phaselistener/PAMainPhaseListener.java index 8ec0e5a8..61ca9c4b 100644 --- a/trunk/PlanosActuacao/src/java/phaselistener/PAMainPhaseListener.java +++ b/trunk/PlanosActuacao/src/java/phaselistener/PAMainPhaseListener.java @@ -225,10 +225,11 @@ public class PAMainPhaseListener implements PhaseListener //disable/enable EditarPlano menu ??? session.setRenderTopMenuImages( true ); session.setRenderSubHeader( false ); + session.setDisableMenuEstatisticas( false ); Utilizador currentUser = session.getCurrentUser(); int userType = currentUser == null ? -1 : currentUser.getTipo() == null ? -1 : currentUser.getTipo().intValue(); - if ( viewID.matches( "/EditarPlano.jsp" ) || viewID.matches( "/EnviarCorrecao.jsp" ) || viewID.matches( "/ViewPlano.jsp" ) ) + if ( viewID.matches( "/EditarPlano.jsp" ) || viewID.matches( "/EnviarCorrecao.jsp" ) || viewID.matches( "/ViewPlano.jsp" ) || viewID.matches( "/Estatistica.jsp" ) ) { session.setDisableMenu( false ); session.setDisableMenuPlanos( false ); @@ -245,6 +246,12 @@ public class PAMainPhaseListener implements PhaseListener session.setRenderTopMenuImages( false ); session.setRenderSubHeader( true ); } + else if( viewID.matches( "/Estatistica.jsp" ) ) + { + session.setDisableMenuPlanos( false ); + session.setRenderTopMenuImages( false ); + session.setDisableMenuEstatisticas( true ); + } } else { diff --git a/trunk/PlanosActuacao/src/java/planosactuacao/Estatistica.java b/trunk/PlanosActuacao/src/java/planosactuacao/Estatistica.java new file mode 100644 index 00000000..244529db --- /dev/null +++ b/trunk/PlanosActuacao/src/java/planosactuacao/Estatistica.java @@ -0,0 +1,289 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package planosactuacao; + +import com.evolute.utils.data.Mappable; +import com.evolute.utils.strings.UnicodeChecker; +import com.sun.rave.web.ui.appbase.AbstractPageBean; +import com.sun.webui.jsf.component.Button; +import com.sun.webui.jsf.component.DropDown; +import com.sun.webui.jsf.component.Table; +import com.sun.webui.jsf.component.TableRowGroup; +import com.sun.webui.jsf.model.Option; +import db.entidades.LinhaEstatistica; +import db.providers.PlanosDataProvider; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import javax.faces.FacesException; + +/** + *

Page bean that corresponds to a similarly named JSP page. This + * class contains component definitions (and initialization code) for + * all components that you have defined on this page, as well as + * lifecycle methods and event handlers where you may add behavior + * to respond to incoming events.

+ * + * @version Estatistica.java + * @version Created on Mar 27, 2012, 2:22:42 PM + * @author fpalma + */ + +public class Estatistica extends AbstractPageBean { + // + + private DropDown dropEstabelecimento = new DropDown(); + private Date calInicioDate = null; + private Date calFimDate = null; + private Button buttonPesquisar;// = new Button(); + private Table tableEstatistica = new Table(); + private TableRowGroup tableRowGroupEstatisticas = new TableRowGroup(); + + /** + *

Automatically managed component initialization. WARNING: + * This method is automatically generated, so any user-specified code inserted + * here is subject to being replaced.

+ */ + private void _init() throws Exception { + } + + //
+ + /** + *

Construct a new Page bean instance.

+ */ + public Estatistica() { + } + + /** + *

Callback method that is called whenever a page is navigated to, + * either directly via a URL, or indirectly via page navigation. + * Customize this method to acquire resources that will be needed + * for event handlers and lifecycle methods, whether or not this + * page is performing post back processing.

+ * + *

Note that, if the current request is a postback, the property + * values of the components do not represent any + * values submitted with this request. Instead, they represent the + * property values that were saved for this view when it was rendered.

+ */ + @Override + public void init() { + // Perform initializations inherited from our superclass + super.init(); + // Perform application initialization that must complete + // *before* managed components are initialized + // TODO - add your own initialiation code here + + // + // Initialize automatically managed components + // *Note* - this logic should NOT be modified + try { + _init(); + fillEstabelecimentosDrop(); + } catch (Exception e) { + log("Estatistica Initialization Failure", e); + throw e instanceof FacesException ? (FacesException) e: new FacesException(e); + } + + // + // Perform application initialization that must complete + // *after* managed components are initialized + // TODO - add your own initialization code here + } + + /** + *

Callback method that is called after the component tree has been + * restored, but before any event processing takes place. This method + * will only be called on a postback request that + * is processing a form submit. Customize this method to allocate + * resources that will be required in your event handlers.

+ */ + @Override + public void preprocess() { + + } + + /** + *

Callback method that is called just before rendering takes place. + * This method will only be called for the page that + * will actually be rendered (and not, for example, on a page that + * handled a postback and then navigated to a different page). Customize + * this method to allocate resources that will be required for rendering + * this page.

+ */ + @Override + public void prerender() { + + } + + /** + *

Callback method that is called after rendering is completed for + * this request, if init() was called (regardless of whether + * or not this was the page that was actually rendered). Customize this + * method to release resources acquired in the init(), + * preprocess(), or prerender() methods (or + * acquired during execution of an event handler).

+ */ + @Override + public void destroy() { + } + + /** + *

Return a reference to the scoped data bean.

+ * + * @return reference to the scoped data bean + */ + protected ApplicationBean1 getApplicationBean1() + { + return ( ApplicationBean1 ) getBean( "ApplicationBean1" ); + } + + /** + *

Return a reference to the scoped data bean.

+ * + * @return reference to the scoped data bean + */ + protected SessionBean1 getSessionBean1() + { + return ( SessionBean1 ) getBean( "SessionBean1" ); + } + + /** + *

Return a reference to the scoped data bean.

+ * + * @return reference to the scoped data bean + */ + protected RequestBean1 getRequestBean1() + { + return ( RequestBean1 ) getBean( "RequestBean1" ); + } + + public Button getButtonPesquisar() + { + return buttonPesquisar; + } + + public void setButtonPesquisar( Button buttonPesquisar ) + { + this.buttonPesquisar = buttonPesquisar; + } + + public Date getCalFimDate() + { + return calFimDate; + } + + public void setCalFimDate( Date calFimDate ) + { + this.calFimDate = calFimDate; + } + + public Date getCalInicioDate() + { + return calInicioDate; + } + + public void setCalInicioDate( Date calInicioDate ) + { + this.calInicioDate = calInicioDate; + } + + public DropDown getDropEstabelecimento() + { + return dropEstabelecimento; + } + + public void setDropEstabelecimento( DropDown dropEstabelecimento ) + { + this.dropEstabelecimento = dropEstabelecimento; + } + + public Table getTableEstatistica() + { + return tableEstatistica; + } + + public void setTableEstatistica( Table tableEstatistica ) + { + this.tableEstatistica = tableEstatistica; + } + + public TableRowGroup getTableRowGroupEstatisticas() + { + return tableRowGroupEstatisticas; + } + + public void setTableRowGroupEstatisticas( TableRowGroup tableRowGroupEstatisticas ) + { + this.tableRowGroupEstatisticas = tableRowGroupEstatisticas; + } + + public String buttonPesquisar_action() + { + System.out.println( "ACTION" ); + List linhasEstatistica = null; + try + { + Integer estabelecimentoId = null; + if ( dropEstabelecimento.getSelected() != null ) + { + String estabelecimento = ( String ) dropEstabelecimento.getSelected(); + if ( estabelecimento != null ) + { + try { + estabelecimentoId = Integer.parseInt( estabelecimento ); + } + catch ( Exception e ) + { + e.printStackTrace(); + } + } + } + linhasEstatistica = PlanosDataProvider.getInstance().getEstatisticaForEstabelecimentoIdAndDateInterval( estabelecimentoId, calInicioDate, calFimDate ); + System.out.println( "LINHAS: " + linhasEstatistica.size() ); + } + catch( Exception ex ) + { + System.out.println( "EXCEPTION" ); + ex.printStackTrace(); + linhasEstatistica = new ArrayList(); + } + getSessionBean1().getEstatisticaPlanoDataProvider().setList( linhasEstatistica ); + return null; + } + + protected void fillEstabelecimentosDrop() + { +// List estabelecimentos = null; + List estabelecimentos = null; + try + { + estabelecimentos = PlanosDataProvider.getInstance().getEstabelecimentosForEstatistica( getSessionBean1().getCurrentUser() ); + } + catch( Exception ex ) + { + ex.printStackTrace(); + return; + } + Option[] options = new Option[ estabelecimentos.size() > 1 ? estabelecimentos.size() + 1 : 1 ]; + int off = 0; + if( options.length > 1 ) + { + options[ 0 ] = new Option( null, "Todos" ); + off = 1; + } + for( int i = 0; i + off < options.length; i++ ) + { + options[ i + off ] = new Option( estabelecimentos.get( i ).getID(), ( String ) estabelecimentos.get( i ).getValue() ); + } + if ( estabelecimentos != null ) + { + dropEstabelecimento.setItems( options ); + } + } +} + diff --git a/trunk/PlanosActuacao/src/java/planosactuacao/Header.java b/trunk/PlanosActuacao/src/java/planosactuacao/Header.java index 68a72110..bacd8562 100644 --- a/trunk/PlanosActuacao/src/java/planosactuacao/Header.java +++ b/trunk/PlanosActuacao/src/java/planosactuacao/Header.java @@ -242,6 +242,12 @@ public class Header extends AbstractFragmentBean { // case name where null will return to the same page. return "planos_actuacao_ajuda.pdf"; } - + + + public String lnkEstatisticas_action() { + // TODO: Process the action. Return value is a navigation + // case name where null will return to the same page. + return "estatistica"; + } } diff --git a/trunk/PlanosActuacao/src/java/planosactuacao/SessionBean1.java b/trunk/PlanosActuacao/src/java/planosactuacao/SessionBean1.java index d35c606f..8737a21d 100644 --- a/trunk/PlanosActuacao/src/java/planosactuacao/SessionBean1.java +++ b/trunk/PlanosActuacao/src/java/planosactuacao/SessionBean1.java @@ -44,8 +44,9 @@ public class SessionBean1 extends AbstractSessionBean { private tabledataproviders.PlanosActualDataProvider planosActualDataProvider; - private tabledataproviders.PlanosSeguimentoDataProvider planosSeguimentoDataProvider; - private tabledataproviders.PlanosConcluidosDataProvider planosConcluidosDataProvider; + private tabledataproviders.PlanosSeguimentoDataProvider planosSeguimentoDataProvider; + private tabledataproviders.PlanosConcluidosDataProvider planosConcluidosDataProvider; + private tabledataproviders.EstatisticaPlanoDataProvider estatisticaPlanoDataProvider; // /** @@ -63,6 +64,7 @@ public class SessionBean1 extends AbstractSessionBean { private boolean disableMenuPlanos = false; private boolean disableMenuUtilizadores = false; private boolean disableMenuDadosUtilizador = false; + private boolean disableMenuEstatisticas = false; private boolean renderSubHeader = false; private boolean renderTopMenuImages = true; @@ -119,7 +121,8 @@ public class SessionBean1 extends AbstractSessionBean { planosActualDataProvider = new tabledataproviders.PlanosActualDataProvider(); planosSeguimentoDataProvider = new tabledataproviders.PlanosSeguimentoDataProvider(); - planosConcluidosDataProvider = new tabledataproviders.PlanosConcluidosDataProvider(); + planosConcluidosDataProvider = new tabledataproviders.PlanosConcluidosDataProvider(); + estatisticaPlanoDataProvider = new tabledataproviders.EstatisticaPlanoDataProvider(); planoId = null; } @@ -248,6 +251,14 @@ public class SessionBean1 extends AbstractSessionBean { this.planosConcluidosDataProvider = planosConcluidosDataProvider; } + public tabledataproviders.EstatisticaPlanoDataProvider getEstatisticaPlanoDataProvider() { + return estatisticaPlanoDataProvider; + } + + public void setEstatisticaPlanoDataProvider(tabledataproviders.EstatisticaPlanoDataProvider estatisticaPlanoDataProvider) { + this.estatisticaPlanoDataProvider = estatisticaPlanoDataProvider; + } + public Integer getPlanoId() { return planoId; } @@ -309,6 +320,14 @@ public class SessionBean1 extends AbstractSessionBean { this.disableMenuDadosUtilizador = disableMenuDadosUtilizador; } + public boolean isDisableMenuEstatisticas() { + return disableMenuEstatisticas; + } + + public void setDisableMenuEstatisticas(boolean disableMenuEstatisticas) { + this.disableMenuEstatisticas = disableMenuEstatisticas; + } + public int getFase() { return fase; } diff --git a/trunk/PlanosActuacao/src/java/planosactuacao/ViewPlano.java b/trunk/PlanosActuacao/src/java/planosactuacao/ViewPlano.java index 1cd48f91..4a1e6dde 100644 --- a/trunk/PlanosActuacao/src/java/planosactuacao/ViewPlano.java +++ b/trunk/PlanosActuacao/src/java/planosactuacao/ViewPlano.java @@ -11,19 +11,25 @@ import com.sun.webui.jsf.component.Button; import com.sun.webui.jsf.component.PageSeparator; 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.TableRowGroup; import db.entidades.Area; +import db.entidades.LinhaEstatistica; import db.entidades.Medida; import db.entidades.PlanoActuacao; import db.entidades.PostoTrabalho; import db.entidades.Risco; +import db.providers.PlanosDataProvider; import db.providers.RiscoLogic; import db.providers.UtilizadoresLogic; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import javax.faces.FacesException; import javax.faces.component.html.HtmlPanelGrid; +import utils.Global; /** *

Page bean that corresponds to a similarly named JSP page. This @@ -37,6 +43,10 @@ import javax.faces.component.html.HtmlPanelGrid; public class ViewPlano extends AbstractPageBean { // + private Table tableEstatistica = new Table(); + private TableRowGroup tableRowGroupEstatisticas = new TableRowGroup(); + protected boolean concluido = true; + /** *

Automatically managed component initialization. WARNING: * This method is automatically generated, so any user-specified code inserted @@ -44,6 +54,27 @@ public class ViewPlano extends AbstractPageBean { */ private void _init() throws Exception { } + + public Table getTableEstatistica() + { + return tableEstatistica; + } + + public void setTableEstatistica( Table tableEstatistica ) + { + this.tableEstatistica = tableEstatistica; + } + + public TableRowGroup getTableRowGroupEstatisticas() + { + return tableRowGroupEstatisticas; + } + + public void setTableRowGroupEstatisticas( TableRowGroup tableRowGroupEstatisticas ) + { + this.tableRowGroupEstatisticas = tableRowGroupEstatisticas; + } + private Button butVoltar = new Button(); public Button getButVoltar() { @@ -74,6 +105,8 @@ public class ViewPlano extends AbstractPageBean { PanelGroup pg; StaticText st; + + /** *

Construct a new Page bean instance.

*/ @@ -198,9 +231,21 @@ public class ViewPlano extends AbstractPageBean { st.setStyle("color: #FF0000; font-weight: bold; font-size: 13px;"); gridPlano.getChildren().add(st); } + concluido = p.getFase() != null && p.getFase().intValue() == Global.FASE_CONCLUIDO && !p.getConcluidoPorDesactivacao(); gridLayout.getChildren().add(gridPlano); showAreas(p.getAreas()); showValidacoes(gridPlano, p); + List linhasEstatistica = null; + try + { + linhasEstatistica = PlanosDataProvider.getInstance().getEstatisticaForPlanoId( p.getId() ); + } + catch( Exception ex ) + { + ex.printStackTrace(); + linhasEstatistica = new ArrayList(); + } + getSessionBean1().getEstatisticaPlanoDataProvider().setList( linhasEstatistica ); } private void showAreas(List areas) { @@ -960,5 +1005,17 @@ public class ViewPlano extends AbstractPageBean { public String butVoltar_action() { return "lista_planos"; } + + public boolean isConcluido() + { + return concluido; + } + + public void setConcluido( boolean concluido ) + { + this.concluido = concluido; + } + + } diff --git a/trunk/PlanosActuacao/src/java/tabledataproviders/EstatisticaPlanoDataProvider.java b/trunk/PlanosActuacao/src/java/tabledataproviders/EstatisticaPlanoDataProvider.java new file mode 100644 index 00000000..f0ccf6a8 --- /dev/null +++ b/trunk/PlanosActuacao/src/java/tabledataproviders/EstatisticaPlanoDataProvider.java @@ -0,0 +1,18 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package tabledataproviders; + +import com.sun.data.provider.impl.ObjectListDataProvider; + +/** + * + * @author lluis + */ +public class EstatisticaPlanoDataProvider extends ObjectListDataProvider { + public EstatisticaPlanoDataProvider(){ + + } +} diff --git a/trunk/PlanosActuacao/web/Estatistica.jsp b/trunk/PlanosActuacao/web/Estatistica.jsp new file mode 100644 index 00000000..8885773c --- /dev/null +++ b/trunk/PlanosActuacao/web/Estatistica.jsp @@ -0,0 +1,89 @@ + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
diff --git a/trunk/PlanosActuacao/web/Header.jspf b/trunk/PlanosActuacao/web/Header.jspf index 3e543a9c..4513f0b9 100644 --- a/trunk/PlanosActuacao/web/Header.jspf +++ b/trunk/PlanosActuacao/web/Header.jspf @@ -19,6 +19,9 @@ + + diff --git a/trunk/PlanosActuacao/web/ViewPlano.jsp b/trunk/PlanosActuacao/web/ViewPlano.jsp index 91bbfb22..ec80ff5e 100644 --- a/trunk/PlanosActuacao/web/ViewPlano.jsp +++ b/trunk/PlanosActuacao/web/ViewPlano.jsp @@ -63,34 +63,57 @@
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - -