/**
* 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.component.parameters;
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.squaleweb.applicationlayer.action.component.CreateProjectAction;
import org.squale.squaleweb.applicationlayer.formbean.component.parameters.EclipseUserLibForm;
import org.squale.squaleweb.applicationlayer.formbean.component.parameters.EclipseVarForm;
import org.squale.squaleweb.applicationlayer.formbean.component.parameters.JCompilingForm;
import org.squale.squaleweb.applicationlayer.formbean.component.parameters.JavaCompilationForm;
import org.squale.squaleweb.applicationlayer.formbean.creation.CreateProjectForm;
import org.squale.squaleweb.transformer.component.parameters.JCompilingConfTransformer;
import org.squale.welcom.struts.transformer.WTransformerFactory;
/**
* Configuration des param�tres de la t�che JCompiling
*/
public class CreateJCompilingParametersAction
extends CreateParametersAction
{
/**
* Ajoute des crit�res de compilation au projet Java
*
* @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 addProjectJavaCompiling( ActionMapping pMapping, ActionForm pForm,
HttpServletRequest pRequest, HttpServletResponse pResponse )
{
ActionMessages errors = new ActionMessages();
ActionForward forward = null;
try
{
forward = pMapping.findForward( "success_add" );
// Affectation au projet courant
CreateProjectForm project = (CreateProjectForm) pRequest.getSession().getAttribute( "createProjectForm" );
// R�cup�ration du bean pour les param�tres java:
JCompilingForm jCompilingForm = (JCompilingForm) pRequest.getSession().getAttribute( "jCompilingForm" );
// On ajoute la r�gle au formulaire
jCompilingForm.getCompilationRules().add( pForm );
// Transformation des param�tres donn�s dans le formulaire pour le projet
WTransformerFactory.formToObj( JCompilingConfTransformer.class, jCompilingForm, project.getParameters() );
// On sauvegarde le projet
new CreateProjectAction().saveProject( pMapping, project, pRequest, pResponse );
// On supprime le type de compilation des param�tres de la requ�te
// pRequest.getParameterMap().remove("kindOfTask");
}
catch ( Exception e )
{
handleException( e, errors, pRequest );
saveMessages( pRequest, errors );
// erreurs non pr�vues --> traitement sp�cifique
forward = pMapping.findForward( "total_failure" );
}
if ( !errors.isEmpty() )
{
// Affichage des erreurs sur la page initiale
saveMessages( pRequest, errors );
forward = pMapping.findForward( "failure" );
}
// On est pass� par un menu donc on r�initialise le traceur
resetTracker( pRequest );
return forward;
}
/**
* Retire une r�gle de compilation de la liste
*
* @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 removeCompilingRules( ActionMapping pMapping, ActionForm pForm, HttpServletRequest pRequest,
HttpServletResponse pResponse )
{
ActionMessages errors = new ActionMessages();
ActionForward forward = null;
try
{
// Affectation au projet courant
CreateProjectForm project = (CreateProjectForm) pRequest.getSession().getAttribute( "createProjectForm" );
// R�cup�ration du bean courant
JCompilingForm jCompilingForm = (JCompilingForm) pForm;
Iterator iter = jCompilingForm.getCompilationRules().iterator();
// Suppression des r�gles de compilation s�lectionn�es
// directement depuis l'it�rateur
boolean noSelection = true; // indique qu'aucune r�gle n'a �t� s�lectionn�e
while ( iter.hasNext() )
{
if ( ( (JavaCompilationForm) iter.next() ).isSelected() )
{
iter.remove();
noSelection = false;
}
}
// Si il n'y a pas eu de s�lection, on affiche un message
if ( noSelection )
{
ActionMessage message = new ActionMessage( "error.java.compiling.rule_selection" );
errors.add( "ruleSelection", message );
saveMessages( pRequest, errors );
}
// Transformation des param�tres donn�s dans le formulaire pour le projet
WTransformerFactory.formToObj( JCompilingConfTransformer.class, jCompilingForm, project.getParameters() );
// On sauvegarde le projet si il y reste au moins une r�gle
if ( jCompilingForm.getCompilationRules().size() > 0 )
{
new CreateProjectAction().saveProject( pMapping, project, pRequest, pResponse );
}
forward = pMapping.findForward( "success" );
}
catch ( Exception e )
{
// Traitement factoris� des exceptions
handleException( e, errors, pRequest );
saveMessages( pRequest, errors );
// Renvoi vers la page d'erreur
forward = pMapping.findForward( "total_failure" );
}
// On est pass� par un menu donc on r�initialise le traceur
resetTracker( pRequest );
return forward;
}
/**
* Ajoute une variable eclipse
*
* @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 addEclipseVar( ActionMapping pMapping, ActionForm pForm, HttpServletRequest pRequest,
HttpServletResponse pResponse )
{
ActionMessages errors = new ActionMessages();
ActionForward forward = null;
try
{
forward = pMapping.findForward( "success_add" );
// Affectation au projet courant
CreateProjectForm project = (CreateProjectForm) pRequest.getSession().getAttribute( "createProjectForm" );
// R�cup�ration du bean pour les param�tres java:
JCompilingForm jCompilingForm = (JCompilingForm) pRequest.getSession().getAttribute( "jCompilingForm" );
// On ajoute la r�gle au formulaire
jCompilingForm.getEclipseVars().add( pForm );
// Transformation des param�tres donn�s dans le formulaire pour le projet
WTransformerFactory.formToObj( JCompilingConfTransformer.class, jCompilingForm, project.getParameters() );
// On sauvegarde le projet
new CreateProjectAction().saveProject( pMapping, project, pRequest, pResponse );
// On supprime le type de compilation des param�tres de la requ�te
// pRequest.getParameterMap().remove( "kindOfTask" );
}
catch ( Exception e )
{
handleException( e, errors, pRequest );
saveMessages( pRequest, errors );
// erreurs non pr�vues --> traitement sp�cifique
forward = pMapping.findForward( "total_failure" );
}
if ( !errors.isEmpty() )
{
// Affichage des erreurs sur la page initiale
saveMessages( pRequest, errors );
forward = pMapping.findForward( "failure" );
}
// On est pass� par un menu donc on r�initialise le traceur
resetTracker( pRequest );
return forward;
}
/**
* Retire des variables eclipse
*
* @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 removeEclipseVars( ActionMapping pMapping, ActionForm pForm, HttpServletRequest pRequest,
HttpServletResponse pResponse )
{
ActionMessages errors = new ActionMessages();
ActionForward forward = null;
try
{
// Affectation au projet courant
CreateProjectForm project = (CreateProjectForm) pRequest.getSession().getAttribute( "createProjectForm" );
// R�cup�ration du bean courant
JCompilingForm jCompilingForm = (JCompilingForm) pForm;
Iterator iter = jCompilingForm.getEclipseVars().iterator();
// Suppression des variables s�lectionn�es
// directement depuis l'it�rateur
boolean noSelection = true; // indique qu'aucune variable n'a �t� s�lectionn�e
while ( iter.hasNext() )
{
if ( ( (EclipseVarForm) iter.next() ).isSelected() )
{
iter.remove();
noSelection = false;
}
}
// Si il n'y a pas eu de s�lection, on affiche un message
if ( noSelection )
{
ActionMessage message = new ActionMessage( "error.java.compiling.var_selection" );
errors.add( "ruleSelection", message );
saveMessages( pRequest, errors );
}
// Transformation des param�tres donn�s dans le formulaire pour le projet
WTransformerFactory.formToObj( JCompilingConfTransformer.class, jCompilingForm, project.getParameters() );
// On sauvegarde le projet
new CreateProjectAction().saveProject( pMapping, project, pRequest, pResponse );
forward = pMapping.findForward( "success" );
}
catch ( Exception e )
{
// Traitement factoris� des exceptions
handleException( e, errors, pRequest );
saveMessages( pRequest, errors );
// Renvoi vers la page d'erreur
forward = pMapping.findForward( "total_failure" );
}
// On est pass� par un menu donc on r�initialise le traceur
resetTracker( pRequest );
return forward;
}
/**
* Ajoute une libraire eclipse
*
* @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 addEclipseLib( ActionMapping pMapping, ActionForm pForm, HttpServletRequest pRequest,
HttpServletResponse pResponse )
{
ActionMessages errors = new ActionMessages();
ActionForward forward = null;
try
{
forward = pMapping.findForward( "success_add" );
// Affectation au projet courant
CreateProjectForm project = (CreateProjectForm) pRequest.getSession().getAttribute( "createProjectForm" );
// R�cup�ration du bean pour les param�tres java:
JCompilingForm jCompilingForm = (JCompilingForm) pRequest.getSession().getAttribute( "jCompilingForm" );
// On ajoute la r�gle au formulaire
jCompilingForm.getEclipseLibs().add( pForm );
// Transformation des param�tres donn�s dans le formulaire pour le projet
WTransformerFactory.formToObj( JCompilingConfTransformer.class, jCompilingForm, project.getParameters() );
// On sauvegarde le projet
new CreateProjectAction().saveProject( pMapping, project, pRequest, pResponse );
// On supprime le type de compilation des param�tres de la requ�te
// pRequest.getParameterMap().remove( "kindOfTask" );
}
catch ( Exception e )
{
handleException( e, errors, pRequest );
saveMessages( pRequest, errors );
// erreurs non pr�vues --> traitement sp�cifique
forward = pMapping.findForward( "total_failure" );
}
if ( !errors.isEmpty() )
{
// Affichage des erreurs sur la page initiale
saveMessages( pRequest, errors );
forward = pMapping.findForward( "failure" );
}
// On est pass� par un menu donc on r�initialise le traceur
resetTracker( pRequest );
return forward;
}
/**
* Retire des librairies eclipse
*
* @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 removeEclipseLibs( ActionMapping pMapping, ActionForm pForm, HttpServletRequest pRequest,
HttpServletResponse pResponse )
{
ActionMessages errors = new ActionMessages();
ActionForward forward = null;
try
{
// Affectation au projet courant
CreateProjectForm project = (CreateProjectForm) pRequest.getSession().getAttribute( "createProjectForm" );
// R�cup�ration du bean courant
JCompilingForm jCompilingForm = (JCompilingForm) pForm;
Iterator iter = jCompilingForm.getEclipseLibs().iterator();
// Suppression des variables s�lectionn�es
// directement depuis l'it�rateur
boolean noSelection = true; // indique qu'aucune variable n'a �t� s�lectionn�e
while ( iter.hasNext() )
{
if ( ( (EclipseUserLibForm) iter.next() ).isSelected() )
{
iter.remove();
noSelection = false;
}
}
// Si il n'y a pas eu de s�lection, on affiche un message
if ( noSelection )
{
ActionMessage message = new ActionMessage( "error.java.compiling.var_selection" );
errors.add( "ruleSelection", message );
saveMessages( pRequest, errors );
}
// Transformation des param�tres donn�s dans le formulaire pour le projet
WTransformerFactory.formToObj( JCompilingConfTransformer.class, jCompilingForm, project.getParameters() );
// On sauvegarde le projet
new CreateProjectAction().saveProject( pMapping, project, pRequest, pResponse );
forward = pMapping.findForward( "success" );
}
catch ( Exception e )
{
// Traitement factoris� des exceptions
handleException( e, errors, pRequest );
saveMessages( pRequest, errors );
// Renvoi vers la page d'erreur
forward = pMapping.findForward( "total_failure" );
}
// On est pass� par un menu donc on r�initialise le traceur
resetTracker( pRequest );
return forward;
}
}