/**
* 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.formbean.creation;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionMapping;
import org.squale.squalecommon.datatransfertobject.component.parameters.MapParameterDTO;
import org.squale.squalecommon.datatransfertobject.config.TaskDTO;
import org.squale.squalecommon.enterpriselayer.businessobject.component.ProjectBO;
import org.squale.squaleweb.applicationlayer.formbean.ActionIdFormSelectable;
/**
* Form bean for a Struts application.
*
* @version 1.0
* @author
*/
public class CreateProjectForm
extends ActionIdFormSelectable
{
/**
* Les param�tres du projet
*/
private MapParameterDTO mParameters;
/** Grille qualit� */
private String mQualityGrid;
/**
* Profil de l'application (Java, CPP, ...)
*/
private String mProfile;
/**
* Type de r�cup�ration des sources de l'application
*/
private String mSourceManagement;
/**
* Liste des t�ches configurables et standards
*/
private List mStandardTasks;
/**
* Liste des t�ches configurables et dont la configuration est avanc�e
*/
private List mAdvancedTasks;
/**
* Liste des noms des beans associ�s aux param�tres du projet.
*/
private Set mTaskForms;
/**
* Le statut du projet
*/
private int mStatus;
/**
* Constructeur
*/
public CreateProjectForm()
{
setProjectId( "-1" );
mParameters = new MapParameterDTO();
mQualityGrid = "";
mProfile = "";
mSourceManagement = "";
mStandardTasks = new ArrayList();
mAdvancedTasks = new ArrayList();
mTaskForms = new TreeSet();
mStatus = ProjectBO.ACTIVATED;
}
/**
* Reset du formulaire
*/
public void reset()
{
setProjectId( "-1" );
setProjectName( "" );
mParameters = new MapParameterDTO();
mQualityGrid = "";
mProfile = "";
mSourceManagement = "";
mStandardTasks = new ArrayList();
mAdvancedTasks = new ArrayList();
mTaskForms = new TreeSet();
mStatus = ProjectBO.ACTIVATED;
}
/**
* Access method for the mProfile property.
*
* @return the current value of the mProfile property
*/
public String getProfile()
{
return mProfile;
}
/**
* Sets the value of the mProfile property.
*
* @param pProfile the new value of the mProfile property
*/
public void setProfile( String pProfile )
{
mProfile = pProfile;
}
/**
* @return grille qualit�
*/
public String getQualityGrid()
{
return mQualityGrid;
}
/**
* @param pString grille qualit�
*/
public void setQualityGrid( String pString )
{
mQualityGrid = pString;
}
/**
* @return le r�cup�rateur de sources
*/
public String getSourceManagement()
{
return mSourceManagement;
}
/**
* @param pSourceManagement le r�cup�rateur de sources
*/
public void setSourceManagement( String pSourceManagement )
{
mSourceManagement = pSourceManagement;
}
/**
* @return la liste des t�ches de configuration standard
*/
public List getStandardTasks()
{
return mStandardTasks;
}
/**
* @param pTasks la liste des t�ches de configuration standard
*/
public void setStandardTasks( List pTasks )
{
mStandardTasks = pTasks;
}
/**
* @return la liste des t�ches de configuration avanc�e
*/
public List getAdvancedTasks()
{
return mAdvancedTasks;
}
/**
* @param pTasks la liste des t�ches de configuration avanc�e
*/
public void setAdvancedTasks( List pTasks )
{
mAdvancedTasks = pTasks;
}
/**
* Dispatche les t�ches dans les bonnes listes
*
* @param pTasks les t�ches configurables
*/
public void setTasks( Collection pTasks )
{
// On reset les listes
mStandardTasks.clear();
mAdvancedTasks.clear();
TaskDTO task = null;
for ( Iterator it = pTasks.iterator(); it.hasNext(); )
{
task = (TaskDTO) it.next();
//task.setAbstractGenericInherited();
if ( task.isStandard() )
{
mStandardTasks.add( task );
}
else
{
mAdvancedTasks.add( task );
}
}
}
/**
* @return les param�tres
*/
public MapParameterDTO getParameters()
{
return mParameters;
}
/**
* @param pParameters les nouveaux param�tres
*/
public void setParameters( MapParameterDTO pParameters )
{
mParameters = pParameters;
}
/**
* @return les nom des beans des t�ches configur�es
*/
public Set getTaskForms()
{
return mTaskForms;
}
/**
* @param pTaskForms la liste des nom des beans des t�ches configur�es
*/
public void setTaskForms( Set pTaskForms )
{
mTaskForms = pTaskForms;
}
/**
* Obtention d'une t�che par son nom
*
* @param pTaskName nom de la t�che
* @return t�che correspondante
*/
public TaskDTO getConfigurableTask( String pTaskName )
{
ArrayList configurableTasks = new ArrayList( mStandardTasks );
configurableTasks.addAll( mAdvancedTasks );
TaskDTO result = null;
for ( Iterator it = configurableTasks.iterator(); it.hasNext() && ( result == null ); )
{
TaskDTO task = (TaskDTO) it.next();
if ( task.getName().equals( pTaskName ) )
{
result = task;
}
}
return result;
}
/**
* @return le statut
*/
public int getStatus()
{
return mStatus;
}
/**
* @param pStatus le statut
*/
public void setStatus( int pStatus )
{
mStatus = pStatus;
}
/**
* M�thode de validation pour v�rifier que le nom mis � l'application ne contient pas de caract�rs sp�ciaux. La
* liste des caract�res sp�ciaux est d�fini par le pattern situ� dans la classe m�re
*
* @param pMapping le mapping hibernate
* @param pRequest la requete
*/
public void wValidate( ActionMapping pMapping, HttpServletRequest pRequest )
{
// Le nom du projet
if ( getProjectName().length() == 0 )
{
addError( "projectName", new ActionError( "error.field.required" ) );
}
else if ( !isAValidName( getProjectName() ) )
{
addError( "projectName", new ActionError( "error.name.containsInvalidCharacter" ) );
}
// Le r�cup�rateur de source
if ( getSourceManagement().length() == 0 )
{
addError( "sourceManagement", new ActionError( "error.field.required" ) );
}
// Le profil
if ( getProfile().length() == 0 )
{
addError( "profile", new ActionError( "error.field.required" ) );
}
// La grille qualit�
if ( getQualityGrid().length() == 0 )
{
addError( "qualityGrid", new ActionError( "error.field.required" ) );
}
}
}