/**
* 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.rule;
import java.util.List;
import org.squale.squalecommon.datatransfertobject.rule.AbstractFormulaDTO;
import org.squale.squalecommon.datatransfertobject.rule.ConditionFormulaDTO;
import org.squale.squalecommon.datatransfertobject.rule.FormulaDTOVisitor;
import org.squale.squalecommon.datatransfertobject.rule.SimpleFormulaDTO;
import org.squale.squalecommon.enterpriselayer.businessobject.rule.AbstractFormulaBO;
import org.squale.squalecommon.enterpriselayer.businessobject.rule.ConditionFormulaBO;
import org.squale.squalecommon.enterpriselayer.businessobject.rule.FormulaVisitor;
import org.squale.squalecommon.enterpriselayer.businessobject.rule.SimpleFormulaBO;
/**
* Transformation d'une r�gle qualit�
*/
public class AbstractFormulaTransform
implements FormulaVisitor, FormulaDTOVisitor
{
/**
* Conversion d'une formule
*
* @param pFormula formule
* @return formule
*/
public static AbstractFormulaDTO bo2Dto( AbstractFormulaBO pFormula )
{
AbstractFormulaDTO result = (AbstractFormulaDTO) pFormula.accept( new AbstractFormulaTransform(), null );
result.setId( pFormula.getId() );
result.setType( pFormula.getType() );
return result;
}
/**
* (non-Javadoc)
*
* @see org.squale.squalecommon.enterpriselayer.businessobject.rule.FormulaVisitor#visit(org.squale.squalecommon.enterpriselayer.businessobject.rule.ConditionFormulaBO,
* java.lang.Object)
*/
public Object visit( ConditionFormulaBO pConditionFormula, Object pArgument )
{
ConditionFormulaDTO dto = new ConditionFormulaDTO();
setAttributes( pConditionFormula, dto );
dto.setMarkConditions( pConditionFormula.getMarkConditions() );
return dto;
}
/**
* (non-Javadoc)
*
* @see org.squale.squalecommon.enterpriselayer.businessobject.rule.FormulaVisitor#visit(org.squale.squalecommon.enterpriselayer.businessobject.rule.SimpleFormulaBO,
* java.lang.Object)
*/
public Object visit( SimpleFormulaBO pSimpleFormula, Object pArgument )
{
SimpleFormulaDTO dto = new SimpleFormulaDTO();
setAttributes( pSimpleFormula, dto );
dto.setFormula( pSimpleFormula.getFormula() );
return dto;
}
/**
* @param pFormulaBO formule
* @param pFormulaDTO formule
*/
private void setAttributes( AbstractFormulaBO pFormulaBO, AbstractFormulaDTO pFormulaDTO )
{
pFormulaDTO.setComponentLevel( pFormulaBO.getComponentLevel() );
pFormulaDTO.setTriggerCondition( pFormulaBO.getTriggerCondition() );
pFormulaDTO.setMeasureKinds( pFormulaBO.getMeasureKinds() );
}
/**
* @param pFormulaDTO la formule � transformer
* @return la formule sous forme BO
*/
public static AbstractFormulaBO dto2Bo( AbstractFormulaDTO pFormulaDTO )
{
AbstractFormulaBO result = (AbstractFormulaBO) pFormulaDTO.accept( new AbstractFormulaTransform() );
result.setId( pFormulaDTO.getId() );
return result;
}
/**
* @see org.squale.squalecommon.datatransfertobject.rule.FormulaDTOVisitor#visit(org.squale.squalecommon.datatransfertobject.rule.ConditionFormulaDTO)
*/
public Object visit( ConditionFormulaDTO pConditionFormula )
{
ConditionFormulaBO bo = new ConditionFormulaBO();
setAttributes( pConditionFormula, bo );
bo.setMarkConditions( (List) pConditionFormula.getMarkConditions() );
return bo;
}
/**
* @see org.squale.squalecommon.datatransfertobject.rule.FormulaDTOVisitor#visit(org.squale.squalecommon.datatransfertobject.rule.SimpleFormulaDTO)
*/
public Object visit( SimpleFormulaDTO pSimpleFormula )
{
SimpleFormulaBO bo = new SimpleFormulaBO();
setAttributes( pSimpleFormula, bo );
bo.setFormula( pSimpleFormula.getFormula() );
return bo;
}
/**
* @param pFormulaBO formule
* @param pFormulaDTO formule
*/
private void setAttributes( AbstractFormulaDTO pFormulaDTO, AbstractFormulaBO pFormulaBO )
{
pFormulaBO.setComponentLevel( pFormulaDTO.getComponentLevel() );
pFormulaBO.setTriggerCondition( pFormulaDTO.getTriggerCondition() );
pFormulaBO.setMeasureKinds( pFormulaDTO.getMeasureKinds() );
}
}