/**
* 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/>.
*/
package org.squale.squaleweb.applicationlayer.action;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.squale.jraf.commons.exception.JrafEnterpriseException;
import org.squale.jraf.helper.AccessDelegateHelper;
import org.squale.jraf.spi.accessdelegate.IApplicationComponent;
import org.squale.squalecommon.datatransfertobject.component.AuditDTO;
import org.squale.squalecommon.datatransfertobject.component.ComponentDTO;
import org.squale.squalecommon.datatransfertobject.component.UserDTO;
import org.squale.squaleweb.applicationlayer.action.accessRights.BaseDispatchAction;
import org.squale.squaleweb.applicationlayer.formbean.LogonBean;
import org.squale.squaleweb.applicationlayer.formbean.component.ApplicationForm;
import org.squale.squaleweb.applicationlayer.formbean.component.ProjectForm;
import org.squale.squaleweb.transformer.ApplicationTransformer;
import org.squale.squaleweb.transformer.LogonBeanTransformer;
import org.squale.squaleweb.transformer.ProjectTransformer;
import org.squale.squaleweb.transformer.UserTransformer;
import org.squale.welcom.struts.bean.WActionForm;
import org.squale.welcom.struts.transformer.WTransformerException;
import org.squale.welcom.struts.transformer.WTransformerFactory;
import org.squale.welcom.struts.util.WConstants;
/**
* Utilitaire pour les actions
*/
public class ActionUtils
{
/**
* Mise � jour du user en session Le user actuellement en session voit ses informations mises � jour apr�s appel des
* couches m�tier
*
* @param pRequest requ�te
* @throws JrafEnterpriseException si erreur
* @throws WTransformerException si erreur
*/
public static void refreshUser( HttpServletRequest pRequest )
throws JrafEnterpriseException, WTransformerException
{
// On recharge les profils de l'utilisateur
// On v�rifie en base que le nom est disponible
LogonBean sessionUser = (LogonBean) pRequest.getSession().getAttribute( WConstants.USER_KEY );
UserDTO user = new UserDTO();
user.setID( sessionUser.getId() );
// Appel couche m�tier
IApplicationComponent ac2 = AccessDelegateHelper.getInstance( "Login" );
Object[] paramIn2 = { user, Boolean.valueOf( sessionUser.isAdmin() ) };
user = (UserDTO) ac2.execute( "verifyUser", paramIn2 );
// Placement dans la session des informations mises � jour
if ( null != user )
{
boolean isAdmin = sessionUser.isAdmin();
sessionUser = new LogonBean();
WActionForm userForm = WTransformerFactory.objToForm( UserTransformer.class, user );
WTransformerFactory.formToObj( LogonBeanTransformer.class, userForm, new Object[] { sessionUser,
Boolean.valueOf( isAdmin ) } );
pRequest.getSession().setAttribute( WConstants.USER_KEY, sessionUser );
}
}
/**
* Retourne l'application recherch�e et stock�e dans la liste.
*
* @param pId l'id de l'application.
* @param pApplications la liste des applications.
* @return le nom de l'application.
*/
public static ApplicationForm getComponent( long pId, final Collection pApplications )
{
ApplicationForm application = null;
if ( null != pApplications )
{
// Parcours de chaque application
Iterator it = pApplications.iterator();
while ( it.hasNext() && null == application )
{
application = (ApplicationForm) it.next();
// Le test se fait sur l'id de l'application
if ( application.getId() != pId )
{
application = null;
}
}
}
return application;
}
/**
* Permet la r�cup�ration des audits en session de la requ�te param�tre.
*
* @param pRequest la requ�te HTTP.
* @return une liste des audits, ou null si il n'y en a pas.
* @throws WTransformerException si un pb de transformation apparait.
*/
public static List getCurrentAuditsAsDTO( final HttpServletRequest pRequest )
throws WTransformerException
{
List audits = null;
AuditDTO currentAudit = (AuditDTO) pRequest.getSession().getAttribute( BaseDispatchAction.CURRENT_AUDIT_DTO );
AuditDTO previousAudit = (AuditDTO) pRequest.getSession().getAttribute( BaseDispatchAction.PREVIOUS_AUDIT_DTO );
// On ajoute les audits que si ils ne sont pas nuls car sinon on a une erreur de taille
// car ajouter un �l�ment nul incr�m�nte la taille
if ( currentAudit != null )
{
audits = new ArrayList( 0 );
audits.add( currentAudit );
// De plus on ajoute (fort logiquement) le previous que si le courant existe
if ( previousAudit != null )
{
audits.add( previousAudit );
}
}
return audits;
}
/**
* @param pRequest la requ�te
* @return l'application courante en tant que form
* @throws WTransformerException si un pb de transformation apparait.
*/
public static ApplicationForm getCurrentApplication( final HttpServletRequest pRequest )
throws WTransformerException
{
ApplicationForm application = null;
ComponentDTO appli = (ComponentDTO) pRequest.getSession().getAttribute( BaseDispatchAction.APPLI_DTO );
application =
(ApplicationForm) WTransformerFactory.objToForm( ApplicationTransformer.class, new Object[] { appli } );
return application;
}
/**
* @param pRequest la requ�te HTTP.
* @return le projet, ou null.
* @throws WTransformerException si un pb de transformation apparait.
*/
public static ProjectForm getCurrentProject( final HttpServletRequest pRequest )
throws WTransformerException
{
ProjectForm result = null;
ComponentDTO project = (ComponentDTO) pRequest.getSession().getAttribute( BaseDispatchAction.PROJECT_DTO );
if ( project != null )
{
result = (ProjectForm) WTransformerFactory.objToForm( ProjectTransformer.class, new Object[] { project } );
}
return result;
}
}