/**
* 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.transformer.component.parameters;
import java.util.ArrayList;
import java.util.List;
import org.squale.squalecommon.datatransfertobject.component.parameters.ListParameterDTO;
import org.squale.squalecommon.datatransfertobject.component.parameters.MapParameterDTO;
import org.squale.squalecommon.datatransfertobject.component.parameters.StringParameterDTO;
import org.squale.squalecommon.enterpriselayer.businessobject.component.parameters.ParametersConstants;
import org.squale.squaleweb.applicationlayer.formbean.component.parameters.GeneralParametersForm;
import org.squale.welcom.struts.bean.WActionForm;
import org.squale.welcom.struts.transformer.WITransformer;
import org.squale.welcom.struts.transformer.WTransformerException;
/**
* Transformation des param�tres g�n�raux
*/
public class GeneralParametersTransformer
implements WITransformer
{
/**
* @see org.squale.welcom.struts.transformer.WITransformer#objToForm(java.lang.Object[]) {@inheritDoc}
*/
public WActionForm objToForm( Object[] pObject )
throws WTransformerException
{
GeneralParametersForm generalForm = new GeneralParametersForm();
objToForm( pObject, generalForm );
return generalForm;
}
/**
* @see org.squale.welcom.struts.transformer.WITransformer#objToForm(java.lang.Object[],
* org.squale.welcom.struts.bean.WActionForm) {@inheritDoc}
*/
public void objToForm( Object[] pObject, WActionForm pForm )
throws WTransformerException
{
MapParameterDTO params = (MapParameterDTO) pObject[0];
String profile = (String) pObject[1];
GeneralParametersForm generalForm = (GeneralParametersForm) pForm;
// On remplit le form
// sources
ListParameterDTO sourcesDTO = (ListParameterDTO) params.getParameters().get( ParametersConstants.SOURCES );
if ( sourcesDTO != null )
{
generalForm.setSources( convertList( sourcesDTO ) );
}
// excludedPatterns
ListParameterDTO excludedList =
(ListParameterDTO) params.getParameters().get( ParametersConstants.EXCLUDED_PATTERNS );
if ( excludedList != null )
{
generalForm.setExcludePatterns( getPatternsTab( excludedList ) );
}
// includedPatterns
ListParameterDTO includedList =
(ListParameterDTO) params.getParameters().get( ParametersConstants.INCLUDED_PATTERNS );
if ( includedList != null )
{
generalForm.setIncludePatterns( getPatternsTab( includedList ) );
}
// FIXME (line from AF code base) this test is ugly: should find another way to decide wether to set this parameter...
if ( profile.matches( ".*(j2ee|jee|web).*" ) )
{
generalForm.setJspSourcesRequired( true );
// sources JSP
ListParameterDTO jspsDTO = (ListParameterDTO) params.getParameters().get( ParametersConstants.JSP );
if ( jspsDTO != null )
{
generalForm.setJspSources( convertList( jspsDTO ) );
}
}
}
/**
* Conversion d'une liste de sources
*
* @param pSourcesList liste de sources
* @return liste des sources
*/
private String[] convertList( ListParameterDTO pSourcesList )
{
List sourcesParam = pSourcesList.getParameters();
String[] sources = new String[sourcesParam.size()];
for ( int i = 0; i < sourcesParam.size(); i++ )
{
StringParameterDTO source = (StringParameterDTO) sourcesParam.get( i );
sources[i] = source.getValue().trim();
}
return sources;
}
/**
* @param pPatterns la liste des patterns
* @return les patterns sous forme de tableau de String
*/
private String[] getPatternsTab( ListParameterDTO pPatterns )
{
List params = pPatterns.getParameters();
String[] patterns = new String[params.size()];
// Conversion des patterns
for ( int i = 0; i < params.size(); i++ )
{
StringParameterDTO currClass = (StringParameterDTO) params.get( i );
patterns[i] = currClass.getValue();
}
return patterns;
}
/**
* @see org.squale.welcom.struts.transformer.WITransformer#formToObj(org.squale.welcom.struts.bean.WActionForm)
* {@inheritDoc}
*/
public Object[] formToObj( WActionForm pForm )
throws WTransformerException
{
Object[] obj = { new MapParameterDTO() };
formToObj( pForm, obj );
return obj;
}
/**
* @see org.squale.welcom.struts.transformer.WITransformer#formToObj(org.squale.welcom.struts.bean.WActionForm,
* java.lang.Object[]) {@inheritDoc}
*/
public void formToObj( WActionForm pForm, Object[] pObject )
throws WTransformerException
{
MapParameterDTO params = (MapParameterDTO) pObject[0];
GeneralParametersForm generalForm = (GeneralParametersForm) pForm;
// Insertion des param�tres dans la map
// sources:
ListParameterDTO sources = new ListParameterDTO();
fillSourcesList( sources, generalForm.getSources() );
params.getParameters().put( ParametersConstants.SOURCES, sources );
// excludedPatterns si non vide:
setPatternsList( ParametersConstants.EXCLUDED_PATTERNS, params, generalForm.getExcludePatterns() );
// includedPatterns si non vide:
setPatternsList( ParametersConstants.INCLUDED_PATTERNS, params, generalForm.getIncludePatterns() );
// sources JSP
if ( generalForm.isJspSourcesRequired() )
{
ListParameterDTO jsps = new ListParameterDTO();
fillSourcesList( jsps, generalForm.getJspSources() );
params.getParameters().put( ParametersConstants.JSP, jsps );
}
}
/**
* Remplissage d'une liste de sources
*
* @param pSourcesList liste � remplir
* @param pSourcesTab source � y ins�rer
*/
private void fillSourcesList( ListParameterDTO pSourcesList, String[] pSourcesTab )
{
ArrayList sourcesList = new ArrayList();
for ( int i = 0; i < pSourcesTab.length; i++ )
{
StringParameterDTO strParamSource = new StringParameterDTO();
strParamSource.setValue( pSourcesTab[i] );
sourcesList.add( strParamSource );
}
pSourcesList.setParameters( sourcesList );
}
/**
* @param pConstant la constante du param�tre � modifier
* @param pParams les param�tres
* @param pPatternsTab les patterns sous forme d'un tableau de String
*/
private void setPatternsList( String pConstant, MapParameterDTO pParams, String[] pPatternsTab )
{
if ( pPatternsTab.length == 0 )
{
// On supprime ce param�tre
pParams.getParameters().remove( pConstant );
}
else
{
ListParameterDTO patterns = new ListParameterDTO();
ArrayList paramsList = new ArrayList();
for ( int i = 0; i < pPatternsTab.length; i++ )
{
StringParameterDTO strParam = new StringParameterDTO();
strParam.setValue( pPatternsTab[i] );
paramsList.add( strParam );
}
patterns.setParameters( paramsList );
pParams.getParameters().put( pConstant, patterns );
}
}
}