/** * 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.results; import java.util.ArrayList; import java.util.Iterator; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; import org.squale.jraf.helper.AccessDelegateHelper; import org.squale.jraf.spi.accessdelegate.IApplicationComponent; import org.squale.squalecommon.datatransfertobject.result.SqualeReferenceDTO; import org.squale.squaleweb.applicationlayer.action.accessRights.AdminAction; import org.squale.squaleweb.applicationlayer.formbean.reference.ReferenceForm; import org.squale.squaleweb.applicationlayer.formbean.reference.ReferenceGridForm; import org.squale.squaleweb.applicationlayer.formbean.reference.ReferenceListForm; import org.squale.squaleweb.applicationlayer.formbean.reference.SetOfReferencesListForm; import org.squale.squaleweb.transformer.ReferenceTransformer; import org.squale.welcom.struts.transformer.WTransformerFactory; /** * Actions sur le r�f�rentiel Les actions sur le r�f�rentiel permettent de consulter les facteurs et les m�triques de * certaines applications mises en r�f�rence */ public class ReferenceAction extends AdminAction { /** * Ajout ou retrait de projets du r�f�rentiel Les projets s�lectionn�s sont ajout�s ou retir�s du r�f�rentiel, puis * les donn�es affich�es sont mise � jour * * @param pMapping le mapping. * @param pForm le formulaire � lire. * @param pRequest la requ�te HTTP. * @param pResponse la r�ponse de la servlet. * @return l'action � r�aliser. */ public ActionForward updateReferentiel( ActionMapping pMapping, ActionForm pForm, HttpServletRequest pRequest, HttpServletResponse pResponse ) { // Initialisation ActionMessages errors = new ActionMessages(); ActionForward forward = null; ArrayList listOfReferences = new ArrayList(); try { // On construit la liste des applications � ajouter/supprimer SetOfReferencesListForm referenceListForm = (SetOfReferencesListForm) pForm; // Parcours des references grille par grille for ( int i = 0; i < referenceListForm.getList().size(); i++ ) { Iterator refsIt = ( (ReferenceListForm) ( (ReferenceGridForm) referenceListForm.getList().get( i ) ).getReferenceListForm() ).getList().iterator(); // Parcours de chaque reference dans une grille while ( refsIt.hasNext() ) { ReferenceForm refForm = (ReferenceForm) refsIt.next(); // Ajout des r�f�rences s�lectionn�es if ( refForm.isSelected() ) { SqualeReferenceDTO refDTO = (SqualeReferenceDTO) WTransformerFactory.formToObj( ReferenceTransformer.class, refForm )[0]; listOfReferences.add( refDTO ); } } } Object[] args = { listOfReferences }; IApplicationComponent ac = AccessDelegateHelper.getInstance( "Validation" ); Integer result = (Integer) ac.execute( "updateReferentiel", args ); // On construit le message de confirmation ActionMessage message = new ActionMessage( "reference.updated", "", "" ); errors.add( ActionMessages.GLOBAL_MESSAGE, message ); // Mise � jour des donn�es affich�es // le forward renvoie vers l'action qui liste forward = pMapping.findForward( "success" ); // Sauvegarde des messages pour la confirmation dans la r�ponse saveMessages( pRequest, errors ); } catch ( Exception e ) { // Traitement factoris� des exceptions et transfert vers la page d'erreur handleException( e, errors, pRequest ); saveMessages( pRequest, errors ); forward = pMapping.findForward( "total_failure" ); } return ( forward ); } }