();
+ 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 @@