/** * 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.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Iterator; import org.squale.squalecommon.enterpriselayer.businessobject.rule.CriteriumRuleBO; import org.squale.squalecommon.enterpriselayer.businessobject.rule.FactorRuleBO; import org.squale.squalecommon.enterpriselayer.businessobject.rule.PracticeRuleBO; import org.squale.squalecommon.enterpriselayer.businessobject.rule.PracticeRuleBO.MeasureExtractor; import org.squale.squalecommon.enterpriselayer.businessobject.rule.QualityRuleBOVisitor; /** * Visiteur d'obtention des mesures filles d'une r�gle qualit� Les mesures filles d'une r�gle qualit� d�pendent du type * de mesure utilis�e */ public class RuleMetricsTransform implements QualityRuleBOVisitor { /** Extracteur de mesure */ private MeasureExtractor mMeasureExtractor; /** * Constructeur * * @param pMeasureExtractor extracteur de mesure */ public RuleMetricsTransform( MeasureExtractor pMeasureExtractor ) { mMeasureExtractor = pMeasureExtractor; } /** * (non-Javadoc) * * @see org.squale.squalecommon.enterpriselayer.businessobject.rule.QualityRuleBOVisitor#visit(org.squale.squalecommon.enterpriselayer.businessobject.rule.FactorRuleBO, * java.lang.Object) */ public Object visit( FactorRuleBO pFactorRule, Object pArgument ) { Collection treClasses = new ArrayList(); // liste classes BO Iterator iterator = pFactorRule.getCriteria().keySet().iterator(); // On convertit chaque critere while ( iterator.hasNext() ) { treClasses.add( CriteriumRuleTransform.bo2Dto( (CriteriumRuleBO) iterator.next() ) ); } return treClasses; } /** * (non-Javadoc) * * @see org.squale.squalecommon.enterpriselayer.businessobject.rule.QualityRuleBOVisitor#visit(org.squale.squalecommon.enterpriselayer.businessobject.rule.CriteriumRuleBO, * java.lang.Object) */ public Object visit( CriteriumRuleBO pCriteriumRule, Object pArgument ) { Collection treClasses = new ArrayList(); // liste classes BO Iterator iterator = pCriteriumRule.getPractices().keySet().iterator(); // On convertit chaque pratique while ( iterator.hasNext() ) { treClasses.add( PracticeRuleTransform.bo2Dto( (PracticeRuleBO) iterator.next() ) ); } return treClasses; } /** * (non-Javadoc) * * @see org.squale.squalecommon.enterpriselayer.businessobject.rule.QualityRuleBOVisitor#visit(org.squale.squalecommon.enterpriselayer.businessobject.rule.PracticeRuleBO, * java.lang.Object) */ public Object visit( PracticeRuleBO pPracticeRule, Object pArgument ) { String[] usedMeasures; if ( pPracticeRule.getFormula() != null ) { usedMeasures = mMeasureExtractor.getUsedMeasures( pPracticeRule.getFormula() ); } else { usedMeasures = new String[0]; } return Arrays.asList( usedMeasures ); } }