/**
* 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.component.parameters;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionMapping;
import org.squale.squalecommon.enterpriselayer.businessobject.component.parameters.ParametersConstants;
import org.squale.squaleweb.transformer.component.parameters.JCompilingConfTransformer;
import org.squale.squaleweb.util.SqualeWebActionUtils;
/**
*
*/
public class JCompilingForm
extends AbstractParameterForm
{
/** Nom du form */
public static final String NAME = "JCompilingForm";
/** Indique si le projet doit �tre compil� avec le plugin Eclipse */
private boolean mEclipseCompilation = true;
/**
* Version de java
*/
private String mDialect = "";
/**
* Chemin vers le bundle eclipse utilis� par le projet Ce chemin fait parti des bundles propos�s dans la liste
* d�roulante
*/
private String mBundlePathDefault = "";
/**
* Chemin vers le bundle eclipse utilis� par le projet
*/
private String mBundlePath = "";
/** Indique si la compilation a besoin du bundle eclipse */
private boolean mNeedBundle;
/**
* Contient la liste des r�gles de compilation ordonn�es
*/
private List mCompilationRules = new ArrayList( 0 );
/**
* Nom des r�pertoires � exclure de la compilation
*/
private String[] mExcludeDirectories = new String[0];
/**
* Variables eclipse
*/
private List mEclipseVars = new ArrayList( 0 );
/**
* Librairies eclipse
*/
private List mEclipseLibs = new ArrayList( 0 );
/**
* Advanced options for eclipse launcher
*/
private String mAdvancedOptions = "";
/**
* @return Nom des r�pertoires � exclure de la compilation
*/
public String[] getExcludeDirectories()
{
return mExcludeDirectories;
}
/**
* @param pExcludeDirectories Nom des r�pertoires � exclure de la compilation
*/
public void setExcludeDirectories( String[] pExcludeDirectories )
{
mExcludeDirectories = pExcludeDirectories;
}
/**
* @return la version de java
*/
public String getDialect()
{
return mDialect;
}
/**
* @param pDialect la version de java
*/
public void setDialect( String pDialect )
{
mDialect = pDialect;
}
/**
* @return la liste ordonn�e des r�gles de compilation
*/
public List getCompilationRules()
{
return mCompilationRules;
}
/**
* @param pCompilationRules la liste ordonn�e des r�gles de compilation
*/
public void setCompilationRules( List pCompilationRules )
{
mCompilationRules = pCompilationRules;
}
/**
* @return true si la compilation peut �tre faite avec Ant
*/
public boolean getAntRulesAvailable()
{
return mCompilationRules.size() == 0
|| ( (JavaCompilationForm) mCompilationRules.get( 0 ) ).getKindOfTask().compareTo( ParametersConstants.ANT ) == 0;
}
/**
* @return true si la compilation peut �tre faite avec WSAD
*/
public boolean getWsadRulesAvailable()
{
return mCompilationRules.size() == 0
|| ( (JavaCompilationForm) mCompilationRules.get( 0 ) ).getKindOfTask().compareTo( ParametersConstants.WSAD ) == 0;
}
/**
* @return true si la compilation peut �tre faite avec RSA
*/
public boolean getRsaRulesAvailable()
{
return mCompilationRules.size() == 0
|| ( (JavaCompilationForm) mCompilationRules.get( 0 ) ).getKindOfTask().compareTo( ParametersConstants.RSA ) == 0;
}
/**
* @see org.squale.squaleweb.applicationlayer.formbean.component.parameters.AbstractParameterForm#getTransformer()
* {@inheritDoc}
*/
public Class getTransformer()
{
return JCompilingConfTransformer.class;
}
/**
* @see org.squale.squaleweb.applicationlayer.formbean.component.parameters.AbstractParameterForm#getNameInSession()
* {@inheritDoc}
*/
public String getNameInSession()
{
return "jCompilingForm";
}
/**
* @see org.squale.squaleweb.applicationlayer.formbean.component.parameters.AbstractParameterForm#getParametersConstants()
* {@inheritDoc}
*/
public String[] getParametersConstants()
{
return new String[] { ParametersConstants.EXCLUDED_DIRS, ParametersConstants.DIALECT, ParametersConstants.ANT,
ParametersConstants.WSAD, ParametersConstants.RSA, ParametersConstants.BUNDLE_PATH,
ParametersConstants.ECLIPSE };
}
/**
* @see org.apache.struts.action.ActionForm#reset(org.apache.struts.action.ActionMapping,
* javax.servlet.http.HttpServletRequest) {@inheritDoc}
*/
public void reset( ActionMapping mapping, HttpServletRequest request )
{
setDialect( "" );
setExcludeDirectories( new String[0] );
setBundlePath( "" );
setNeedBundle( false );
setEclipseCompilation( true );
}
/**
* @see org.squale.squaleweb.applicationlayer.formbean.component.parameters.AbstractParameterForm#getTaskName()
* {@inheritDoc}
*/
public String getTaskName()
{
return "JCompilingTask";
}
/**
* @see org.squale.squaleweb.applicationlayer.formbean.component.parameters.AbstractParameterForm#validateConf(org.apache.struts.action.ActionMapping,
* javax.servlet.http.HttpServletRequest) {@inheritDoc}
*/
protected void validateConf( ActionMapping pMapping, HttpServletRequest pRequest )
{
String kindOfTask = (String) pRequest.getParameter( "kindOfTask" );
// On ne valide le formulaire que lorsque l'utilisateur valide la configuration enti�re
// On teste sur le param�tre "kindOfTask" car il indique si on ajoute une r�gle de compilation
// si il est vide, on valide le formulaire.
if ( kindOfTask.length() == 0 )
{
// Le dialect
if ( getDialect().length() == 0 )
{
addError( "dialect", new ActionError( "error.field.required" ) );
}
// Il doit y avoir au moins un chemin ant ou wsad de renseign�
if ( getCompilationRules().size() == 0 )
{
addError( "compilationRules", new ActionError( "error.field.required" ) );
}
}
// On nettoie les exclusions de compilation
setExcludeDirectories( SqualeWebActionUtils.cleanValues( getExcludeDirectories() ) );
}
/**
* @return le chemin vers le bundle eclispe
*/
public String getBundlePath()
{
// Retourne le bundle entr� par l'utilisateur
return ( getNeedBundle() ) ? mBundlePath : "";
}
/**
* @return le chemin vers le bundle eclispe
*/
public String getBundlePathPrior()
{
// Retourne la cha�ne si on a besoin d'un bundle particulier sinon le bundle s�lectionn� dans la liste
return ( getBundlePath().length() > 0 ) ? mBundlePath : mBundlePathDefault;
}
/**
* @param pBundlePath le chemin vers le bundle eclispe
*/
public void setBundlePath( String pBundlePath )
{
mBundlePath = pBundlePath.trim();
}
/**
* @return true si la compilation a besoin du bundle eclipse
*/
public boolean getNeedBundle()
{
return mNeedBundle;
}
/**
* @param pNeedBundle true si la compilation a besoin du bundle eclipse
*/
public void setNeedBundle( boolean pNeedBundle )
{
mNeedBundle = pNeedBundle;
}
/**
* @return le bundle par d�faut
*/
public String getBundlePathDefault()
{
return mBundlePathDefault;
}
/**
* @param pBundlePathDefault le bundle par d�faut
*/
public void setBundlePathDefault( String pBundlePathDefault )
{
mBundlePathDefault = pBundlePathDefault;
}
/**
* @return les librairies utilisateur eclipse
*/
public List getEclipseLibs()
{
return mEclipseLibs;
}
/**
* @return les variables eclipse
*/
public List getEclipseVars()
{
return mEclipseVars;
}
/**
* @param pLibs les variables eclipse
*/
public void setEclipseLibs( List pLibs )
{
mEclipseLibs = pLibs;
}
/**
* @param pVars les variables eclipse
*/
public void setEclipseVars( List pVars )
{
mEclipseVars = pVars;
}
/**
* Ajoute une variable
*
* @param name le nom de la variable
* @param lib la librairie associ�e � la variable
*/
public void addEclipseVar( String name, String lib )
{
mEclipseVars.add( new EclipseVarForm( name, lib ) );
}
/**
* @return le type de compilation
*/
public boolean getEclipseCompilation()
{
return mEclipseCompilation;
}
/**
* @param pEclipseCompilation le type de compilation
*/
public void setEclipseCompilation( boolean pEclipseCompilation )
{
mEclipseCompilation = pEclipseCompilation;
}
/**
* @return eclipse advanced options
*/
public String getAdvancedOptions()
{
return mAdvancedOptions;
}
/**
* @param pAdvancedOptions eclipse advanced options
*/
public void setAdvancedOptions( String pAdvancedOptions )
{
mAdvancedOptions = pAdvancedOptions;
}
/**
* This method return the kind of compilation already saved in base for the project
*
* @return the kind of compilation already saved
*/
public String getKindOfCompil()
{
String kind = ParametersConstants.NOT_DEFINED;
if ( mCompilationRules.size() > 0 )
{
kind = ( (JavaCompilationForm) mCompilationRules.get( 0 ) ).getKindOfTask();
}
return kind;
}
}