/**
* 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.enterpriselayer.businessobject.rulechecking.checkstyle;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Vector;
import org.squale.squalecommon.enterpriselayer.businessobject.rulechecking.RuleSetBO;
/**
* Jeu de r�gles Checkstyle
*
* @hibernate.subclass discriminator-value="Checkstyle"
*/
public class CheckstyleRuleSetBO
extends RuleSetBO
{
/**
* Valeur sous forme de chaine de bytes
*/
private byte[] mValue;
/**
* Access method for the mFileName property.
*
* @return the current value of the FileName property
* @hibernate.property name="Value" column="FileContent"
* type="org.squale.jraf.provider.persistence.hibernate.BinaryBlobType" not-null="false"
* unique="false" update="true" insert="true"
*/
public byte[] getValue()
{
return mValue;
}
/**
* @param pValue sous forme de byte[]
*/
public void setValue( byte[] pValue )
{
mValue = pValue;
}
/**
* Verifie s'il existe des ambiguit�s au niveau des modules checkstyle
*
* @return le nom du module concern� si les ambigut� ne sont pas lev�es, sinon null.
*/
public Collection isAmbiguityModules()
{
Collection modulesName = new Vector();
CheckstyleRuleBO rule = null;
Collection CheckstyleRules = mRules.values();
Collection checkstyleModules = new Vector();
Iterator itRules = CheckstyleRules.iterator();
// pacours de chaque r�gle pour extraire leur momdules
while ( itRules.hasNext() )
{
rule = (CheckstyleRuleBO) itRules.next();
// ajout des modules dans la liste
checkstyleModules.addAll( rule.getModules() );
}
String key = null;
itRules = checkstyleModules.iterator();
CheckstyleModuleBO checkstyleModule = null;
Map moduleHashMap = new HashMap();
boolean status = false;
// parcours de l'ensemble des modules pour verifier leur unicit�
while ( itRules.hasNext() )
{
checkstyleModule = (CheckstyleModuleBO) itRules.next();
key = checkstyleModule.getName();
status = moduleHashMap.containsKey( key );
if ( !status )
{
moduleHashMap.put( key, checkstyleModule );
}
else
{
CheckstyleModuleBO temp = (CheckstyleModuleBO) moduleHashMap.get( key );
if ( !verifiedMessage( checkstyleModule.getMessage(), temp.getMessage() ) )
{
modulesName.add( checkstyleModule.getName() );
}
}
}
return modulesName;
}
/**
* verifie Si deux modules ont chacune un message et que les messages sont diff�rents
*
* @param pMessageUn le premier message
* @param pMessageDeux le deuxi�me message
* @return vrai si les deux messages sont �gaux
*/
private boolean verifiedMessage( String pMessageUn, String pMessageDeux )
{
boolean result = false;
if ( null != pMessageUn && null != pMessageDeux )
{
result = !pMessageUn.equals( pMessageDeux );
}
return result;
}
}