git-svn-id: https://svn.coded.pt/svn/SIPRP@1823 bb69d46d-e84e-40c8-a05a-06db0d633741

lxbfYeaa
Frederico Palma 12 years ago
parent 9cea093698
commit 9f9508298b

@ -0,0 +1,140 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package phaselistener;
import com.evolute.module.updater.Updater;
import com.evolute.properties.EvoAbstractPropertiesLoader;
import com.evolute.utils.date.DateUtils;
import com.evolute.utils.error.ErrorLogger;
import com.evolute.utils.timer.TimedEvent;
import com.evolute.utils.timer.Timer;
import db.DBConstants.DB;
import db.providers.EvoBaseProvider;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import shst.companydataloaders.SIPRPPropertiesLoader;
import updates.PAUpdatesListProvider;
import utils.PlanosActuacaoLogger;
/**
*
* @author dneves
*/
public class PAContextListener implements ServletContextListener
{
private static final int IMPORT_INTERVAL = 300;
private long startedTime = 0L;
private TimedEvent importEvent = null;
@Override
public void contextInitialized( ServletContextEvent sce )
{
startedTime = System.currentTimeMillis();
System.out.println( "\n\ncontextInitialized : " + startedTime );
try
{
System.out.println( "\nInitializing PA logger ..." );
PlanosActuacaoLogger.init();
}
catch ( Throwable e )
{
e.printStackTrace( System.err );
}
try
{
System.out.println( "\n\tReading app.properties ..." );
EvoAbstractPropertiesLoader.forceEncryptedPropertiesFile = false;
SIPRPPropertiesLoader props = SIPRPPropertiesLoader.getInstance();
props.load();
}
catch ( Exception e )
{
// ErrorLogger.logException( e );
System.out.println( "\n\n<---- ERROR ! " + e.getMessage() );
}
try
{
System.out.println( "\nInitializing db ..." );
EvoBaseProvider.getInstance();
}
catch ( Exception e )
{
ErrorLogger.logException( e );
}
try
{
System.out.println( "\nExecuting db updates ..." );
Updater.setDBUserForUpdate( EvoBaseProvider.getInstance().getUrl(), EvoBaseProvider.getInstance().getUsername(), EvoBaseProvider.getInstance().getPassword() );
Updater.getInstance().executeUpdates( false, PAUpdatesListProvider.getInstance().getUpdates() );
}
catch ( Exception e )
{
ErrorLogger.logException( e );
}
// System.out.println( "\nScheduling Import Event ... " );
// importEvent = new TimedEvent()
// {
// @Override
// public void executeAction() throws Exception
// {
// try
// {
// PlanosActuacao planos = new PlanosActuacao();
// }
// catch ( Exception e )
// {
// ErrorLogger.logException( e );
// }
// Timer.resetEvent( this );
// }
// };
// Timer.scheduleEvent( importEvent, IMPORT_INTERVAL );
// System.out.println( "\tExecuting Import each " + ( IMPORT_INTERVAL / 60 ) + " minutes." );
}
@Override
public void contextDestroyed( ServletContextEvent sce )
{
System.out.println( "\ncontextDestroyed() : " );
if ( importEvent != null )
{
System.out.println( "\tStopping import timer ..." );
Timer.abortEvent( importEvent );
}
try
{
System.out.println( "\nClosing provider connections" );
EvoBaseProvider.getInstance().getProvider( DB.SIPRP ).close();
EvoBaseProvider.getInstance().getProvider( DB.SIPRP_LOCAL ).close();
EvoBaseProvider.getInstance().getDbManager( DB.SIPRP_LOCAL ).close();
EvoBaseProvider.getInstance().getDbManager( DB.SIPRP ).close();
}
catch ( Exception e )
{
ErrorLogger.logException( e );
}
long endTime = System.currentTimeMillis();
SimpleDateFormat D_F = new SimpleDateFormat( "dd-MM-yyyy HH:mm:ss" );
Date startDate = new Date( startedTime );
Date endDate = new Date( endTime );
String timePassed = DateUtils.getTimePassed( startedTime, endTime );
System.out.println( "\trunning for: " + D_F.format( startDate ) + " -> " + D_F.format( endDate ) + " = " + ( (endTime - startedTime) / 1000 ) + " s ; " + timePassed );
}
}

@ -0,0 +1,275 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package phaselistener;
import com.evolute.utils.error.ErrorLogger;
import db.entidades.Utilizador;
import db.providers.UtilizadoresDataProvider;
import java.text.SimpleDateFormat;
import java.util.Date;
import utils.Global;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import javax.faces.component.UIViewRoot;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import planosactuacao.SessionBean1;
import utils.JSFHTTPUtils;
import utils.JSFUtils;
import utils.Logos;
/**
*
* @author lluis
*/
public class PAMainPhaseListener implements PhaseListener
{
private static final SimpleDateFormat DT_F = new SimpleDateFormat( "yyyy-MM-dd - HH:mm:ss.S", new Locale( "pt", "PT" ) );
private boolean firstEntry = true;
@Override
public void afterPhase( PhaseEvent pe )
{
if ( pe.getPhaseId() == PhaseId.RENDER_RESPONSE )
{
FacesContext fc = pe.getFacesContext();
String view = fc.getViewRoot().getViewId();
System.out.println( "\nafterPhase . RENDER RESPONSE VIEW : " + view );
}
}
@Override
public void beforePhase(PhaseEvent event)
{
if ( event.getPhaseId() == PhaseId.RENDER_RESPONSE )
{
System.out.println( DT_F.format( new Date() ) );
FacesContext fc = event.getFacesContext();
UIViewRoot view = fc.getViewRoot();
String viewID = view.getViewId();
ExternalContext ec = fc.getExternalContext();
try
{
SessionBean1 session = JSFUtils.getSessionBean( fc );
String referer = JSFHTTPUtils.getReferer( fc );
HttpServletRequest req = ( HttpServletRequest ) ec.getRequest();
if ( referer != null && referer.contains( "/AnaliseAcidentesTrabalho/" ) )
{
HttpSession reqSession = ( HttpSession ) ec.getSession( false );
ServletContext paContext = reqSession.getServletContext();
ServletContext aatContext = paContext.getContext( "/AnaliseAcidentesTrabalho" );
String sessionID = req.getParameter( "sessionID" );
Map< String, Object > paData = new HashMap< String, Object >();
paData.put( "session", reqSession );
paContext.setAttribute( sessionID, paData );
Map< String, Object > mapData = ( Map< String, Object > ) aatContext.getAttribute( sessionID );
Integer userID = ( Integer ) mapData.get( "userID" );
if ( userID != null )
{
Utilizador currentUser = UtilizadoresDataProvider.getInstance().getUtilizador( userID );
session.setCurrentUser( currentUser );
session.setLoggedIn( true );
session.setAatSessionID( sessionID );
setupPages( fc, session, viewID );
}
else
{
gotoLogin( fc, viewID );
}
}
else
{
if ( session.isLoggedIn() && session.getCurrentUser() != null )
{
setupPages( fc, session, viewID );
}
else
{
gotoLogin( fc, viewID );
}
}
}
catch ( Exception e )
{
gotoLogin( fc, viewID );
}
}
}
// public void beforePhase( PhaseEvent pe )
// {
// if ( pe.getPhaseId() == PhaseId.RENDER_RESPONSE )
// {
// System.out.println( "beforePhase() : " );
//
// FacesContext fc = pe.getFacesContext();
// SessionBean1 session = JSFUtils.getSessionBean( fc );
// String referer = JSFHTTPUtils.getReferer( pe.getFacesContext() );
// System.out.println( "\tReferer : " + referer );
//
// UIViewRoot view = fc.getViewRoot();
// System.out.println( "\tView : " + view );
// String viewID = view.getViewId();
// System.out.println( "\t\tView ID :" + viewID );
//
//
// if ( referer != null && referer.contains( "/AnaliseAcidentesTrabalho/" ) )
// {
//
// ExternalContext ec = fc.getExternalContext();
// if ( ec != null )
// {
// HttpSession reqSession = ( HttpSession ) ec.getSession( false );
// System.out.println( "\treqSession : " + reqSession );
//
// ServletContext thisContext = reqSession.getServletContext();
// System.out.println( "\tthisContext : " + thisContext );
//
// ServletContext otherContext = thisContext.getContext( "/AnaliseAcidentesTrabalho" );
// System.out.println( "\totherContext : " + otherContext );
//
// String sessionID = ( String ) otherContext.getAttribute( "sessionID" );
// Map< String, Object > mapData = ( Map< String, Object > ) otherContext.getAttribute( sessionID );
// Integer userID = ( Integer ) mapData.get( "userID" );
//
// System.out.println( "\n\tsessionID : " + sessionID );
// System.out.println( "\tuserID : " + userID );
//
// if ( userID != null )
// {
// try
// {
// Utilizador currentUser = UtilizadoresDataProvider.getInstance().getUtilizador( userID );
// session.setCurrentUser( currentUser );
//
// setupPages( fc, session, viewID );
// }
// catch ( Exception e )
// {
// ErrorLogger.logException( e );
// gotoLogin( fc, viewID );
// }
// }
// else
// {
// gotoLogin( fc, viewID );
// }
// }
// }
// else
// {
//
// HttpServletRequest req = ( HttpServletRequest ) fc.getExternalContext().getRequest();
// boolean sessionValid = req.isRequestedSessionIdValid();
// System.out.println( "\tSessionValid : " + sessionValid );
//
// boolean loggedIn = session.isLoggedIn();
// System.out.println( "\tLogged In : " + loggedIn );
//
// if ( sessionValid && loggedIn )
// {
// System.out.println( "\t---> session IS valid && user IS logged in." );
//
// setupPages( fc, session, viewID );
// }
// else
// {
// gotoLogin( fc, viewID );
// }
// }
// }
// }
@Override
public PhaseId getPhaseId()
{
return PhaseId.ANY_PHASE;
}
private void gotoLogin( FacesContext fc, String viewID )
{
if ( viewID.compareTo( "/Login.jsp" ) != 0 )
{
try
{
String url = Global.ANALISE_ACIDENTES_URL + "Login.jsp";
JSFUtils.redirect( fc, url );
}
catch ( Exception e )
{
ErrorLogger.logException( e );
System.out.println( "\n\t\t\tERROR REDIRECTING TO LOGIN !" );
}
}
}
private void setupPages( FacesContext fc, SessionBean1 session, String viewID )
{
//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" ) || viewID.matches( "/Estatistica.jsp" ) )
{
session.setDisableMenu( false );
session.setDisableMenuPlanos( false );
if ( viewID.matches( "/ViewPlano.jsp" ) )
{
session.setDisableMenuUtilizadores( userType != Global.DIRECTOR_SIPRP );
session.setDisableMenuDadosUtilizador( false );
session.setRenderTopMenuImages( false );
session.setRenderSubHeader( true );
}
else if ( viewID.matches( "/EditarPlano.jsp" ) )
{
session.setDisableMenuPlanos( false );
session.setRenderTopMenuImages( false );
session.setRenderSubHeader( true );
}
else if( viewID.matches( "/Estatistica.jsp" ) )
{
session.setDisableMenuPlanos( false );
session.setRenderTopMenuImages( false );
session.setDisableMenuEstatisticas( true );
}
}
else
{
session.setDisableMenu(false);
if ( viewID.matches( "/ListaPlanos.jsp" ) )
{
if ( userType == Global.RH || userType == Global.GESTOR )
{
session.setDisableMenuUtilizadores( true );
}
session.setDisableMenuPlanos( true );
}
}
//insert logos
Integer empresaId = currentUser != null ? currentUser.getEmpresa_id() : null;
Logos logos = new Logos();
String logourl = logos.getLogo( fc, empresaId );
session.setLogoEmpresaUrl( logourl );
}
}

@ -0,0 +1,33 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package phaselistener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
*
* @author dneves
*/
public class PASessionListener implements HttpSessionListener
{
@Override
public void sessionCreated( HttpSessionEvent se )
{
HttpSession session = se.getSession();
System.out.println( "PlanosActuacao : new Session Created : " + session.getId() );
}
@Override
public void sessionDestroyed( HttpSessionEvent se )
{
HttpSession session = se.getSession();
System.out.println( "PlanosActuacao : session destroyed : " + session.getId() );
}
}
Loading…
Cancel
Save