/**
* 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.squalecommon.datatransfertobject.transform.component.parameters;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
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.ListParameterBO;
import org.squale.squalecommon.enterpriselayer.businessobject.component.parameters.MapParameterBO;
import org.squale.squalecommon.enterpriselayer.businessobject.component.parameters.StringParameterBO;
/**
* Transforme dto <-> bo pour un MapParameter
*/
public class MapParameterTransform
{
/**
* @param pMapParameterDTO le DTO � transformer en BO
* @return le BO
*/
public static MapParameterBO dto2Bo( MapParameterDTO pMapParameterDTO )
{
MapParameterBO result = new MapParameterBO();
result.setId( pMapParameterDTO.getId() );
// On r�cup�re les param�tres associ�s
Map paramsDTO = pMapParameterDTO.getParameters();
// On va remplir la map avec des objets transform�s en BO.
Map paramsBO = new HashMap();
// On va parcourir toute la map et transformer tous ses �l�ments. Il faut
// donc r�cup�rer l'ensemble des cl�s pour pouvoir ensuite r�cup�rer les �l�ments
// associ�s.
java.util.Set keys = paramsDTO.keySet();
for ( Iterator it = keys.iterator(); it.hasNext(); )
{
String currentKey = (String) it.next();
// si l'�l�ment courant est une map, on rappelle r�cursivement la m�thode
// pour transformer aussi tous ses �l�ments.
if ( paramsDTO.get( currentKey ) instanceof MapParameterDTO )
{
paramsBO.put( currentKey, MapParameterTransform.dto2Bo( (MapParameterDTO) paramsDTO.get( currentKey ) ) );
}
else
{
// Si il s'agit d'une liste, on va appeler la m�thode qui transforme cette objet
// ainsi que tous ses �l�ments en BO.
if ( paramsDTO.get( currentKey ) instanceof ListParameterDTO )
{
paramsBO.put( currentKey,
ListParameterTransform.dto2Bo( (ListParameterDTO) paramsDTO.get( currentKey ) ) );
}
else
{
if ( paramsDTO.get( currentKey ) instanceof StringParameterDTO )
{
paramsBO.put(
currentKey,
StringParameterTransform.dto2Bo( (StringParameterDTO) paramsDTO.get( currentKey ) ) );
}
}
}
}
result.setParameters( paramsBO );
return result;
}
/**
* @param pMapParameterBO le BO � transformer en DTO
* @return le DTO
*/
public static MapParameterDTO bo2Dto( MapParameterBO pMapParameterBO )
{
MapParameterDTO result = new MapParameterDTO();
result.setId( pMapParameterBO.getId() );
// On r�cup�re les param�tres associ�s
Map paramsBO = pMapParameterBO.getParameters();
// On va remplir la map avec des objets transform�s en DTO.
Map paramsDTO = new HashMap();
// On va parcourir toute la map et transformer tous ses �l�ments. Il faut
// donc r�cup�rer l'ensemble des cl�s pour pouvoir ensuite r�cup�rer les �l�ments
// associ�s.
java.util.Set keys = paramsBO.keySet();
for ( Iterator it = keys.iterator(); it.hasNext(); )
{
String currentKey = (String) it.next();
// si l'�l�ment courant est une map, on rappelle r�cursivement la m�thode
// pour transformer aussi tous ses �l�ments.
if ( paramsBO.get( currentKey ) instanceof MapParameterBO )
{
paramsDTO.put( currentKey, MapParameterTransform.bo2Dto( (MapParameterBO) paramsBO.get( currentKey ) ) );
}
else
{
// Si il s'agit d'une liste, on va appeler la m�thode qui transforme cette objet
// ainsi que tous ses �l�ments en DTO.
if ( paramsBO.get( currentKey ) instanceof ListParameterBO )
{
paramsDTO.put( currentKey,
ListParameterTransform.bo2Dto( (ListParameterBO) paramsBO.get( currentKey ) ) );
}
else
{
if ( paramsBO.get( currentKey ) instanceof StringParameterBO )
{
paramsDTO.put( currentKey,
StringParameterTransform.bo2Dto( (StringParameterBO) paramsBO.get( currentKey ) ) );
}
}
}
}
result.setParameters( paramsDTO );
return result;
}
}