/** * Copyright (C) 2008-2010, Squale Project - http://www.squale.org * * This file is part of Squale. * * Squale is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 3 of the * License, or any later version. * * Squale is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Squale. If not, see <http://www.gnu.org/licenses/>. */ /* * Cr�� le 1 ao�t 05 * * Pour changer le mod�le de ce fichier g�n�r�, allez � : * Fen�tre>Pr�f�rences>Java>G�n�ration de code>Code et commentaires */ package org.squale.welcom.struts.action; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.validator.GenericValidator; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.squale.welcom.outils.Util; import org.squale.welcom.outils.jdbc.WJdbc; import org.squale.welcom.outils.jdbc.WMJdbc; import org.squale.welcom.struts.bean.WILogonBean; import org.squale.welcom.struts.util.WConstants; /** * @author M327837 Classe permattant la gestion du jdbc */ public abstract class JAction extends MAction { /** logger */ private static Log log = LogFactory.getLog( JAction.class ); /** Est-ce que l'on verifie le timout */ protected boolean disabledTimeOut = false; /** * � Recupere le WILogonBean * * @param request : le request * @return WILogonBean */ public WILogonBean getWILogonBean( final HttpServletRequest request ) { if ( request.getSession().getAttribute( WConstants.USER_KEY ) instanceof WILogonBean ) { return (WILogonBean) request.getSession().getAttribute( WConstants.USER_KEY ); } else { return null; } } /** * @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping, * org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, * javax.servlet.http.HttpServletResponse) */ public ActionForward execute( final ActionMapping mapping, final ActionForm form, final HttpServletRequest request, final HttpServletResponse response ) throws Exception { WJdbc jdbc = null; ActionForward af = null; String userName = ""; try { if ( !isDisabledTimeOut() ) { WActionUtil.checkSessionTimeout( request ); } final WILogonBean logonBean = getWILogonBean( request ); if ( logonBean != null ) { userName = logonBean.getUserName(); } // Appele le traitement af = wExecute( mapping, form, request, response ); // Teste si l'on utilise l'avec jdbc embarqu� if ( af == null ) { final String useMode = ( (String) servlet.getServletContext().getAttribute( WConstants.WELCOM_USE_MODE ) ); // Initialise la connection jdbc if ( Util.isEquals( useMode, WConstants.MODE_JDBC ) ) { jdbc = new WJdbc( userName ); } else { // appel de la fonction pour connaitre quel JDBC a utiliser String jdbcName = dispatchJdbcName( mapping.getParameter() ); if ( jdbcName == null ) { jdbcName = dispatchJdbcName( request, mapping.getParameter() ); } jdbc = new WMJdbc( userName, jdbcName ); } if ( !jdbc.isClosed() ) { af = wExecute( mapping, form, request, response, jdbc ); } } } catch ( final Exception e ) { if ( !( e instanceof TimeOutException ) ) { log.error( e, e ); } String theMessage = null; try { theMessage = getResources( request ).getMessage( getLocale( request ), e.getMessage() ); } catch ( final Exception e2 ) { throw e; } if ( !GenericValidator.isBlankOrNull( theMessage ) ) { throw new Exception( theMessage ); } else { throw e; } } finally { // Fermeture de tout ce qui a �t� ouvert en connection JDBC if ( jdbc != null ) { jdbc.close(); } jdbc = null; } return af; } /** * Fonction permettant de definir le quel jdbc on desire utiliser en retournant le nom definit dans le struts-config * * @param functionName : Nom de la fonction qui va etre appel� * @return : le nom du dataSource a Utiliser */ public String dispatchJdbcName( final String functionName ) { return null; } /** * Fonction permettant de definir le quel jdbc on desire utiliser en retournant le nom definit dans le struts-config * * @param request : Request pour identifi� quelle methode a appeler * @param functionName : Nom de la fonction qui va etre appel� * @return : le nom du dataSource a Utiliser */ public String dispatchJdbcName( final HttpServletRequest request, final String functionName ) { return null; } /** * Fonction sans JDBC embarqu� * * @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping, * org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, * javax.servlet.http.HttpServletResponse) */ public ActionForward wExecute( final ActionMapping mapping, final ActionForm form, final HttpServletRequest request, final HttpServletResponse response ) throws Exception { return null; } /** * Fonction avec JDBC embarqu� * * @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping, * org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, * javax.servlet.http.HttpServletResponse) */ public ActionForward wExecute( final ActionMapping mapping, final ActionForm form, final HttpServletRequest request, final HttpServletResponse response, final WJdbc jdbc ) throws Exception { return null; } /** * @return si le timeout est activ� */ public boolean isDisabledTimeOut() { return disabledTimeOut; } /** * @param b si le timeout est activ� */ public void setDisabledTimeOut( final boolean b ) { disabledTimeOut = b; } }