/*
* ==========================================================================%%#
* EasyPmd
* ===========================================================================%%
* Copyright (C) 2009 - 2016 Gianluca Costa
* ===========================================================================%%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program 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 General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* ==========================================================================%##
*/
package info.gianlucacosta.easypmd.pmdscanner;
import net.sourceforge.pmd.RuleSet;
import net.sourceforge.pmd.RuleSetFactory;
import net.sourceforge.pmd.RuleSetNotFoundException;
import org.openide.util.lookup.ServiceProvider;
import java.util.*;
/**
* Default implementation of StandardRuleSetsCatalog
*/
@ServiceProvider(service = StandardRuleSetsCatalog.class)
public class DefaultStandardRuleSetsCatalog implements StandardRuleSetsCatalog {
private final List<RuleSetWrapper> wrappers = new ArrayList<>();
public DefaultStandardRuleSetsCatalog() {
RuleSetFactory ruleSetFactory = new RuleSetFactory();
try {
Iterator<RuleSet> ruleSetsIterator = ruleSetFactory.getRegisteredRuleSets();
while (ruleSetsIterator.hasNext()) {
RuleSet ruleSet = ruleSetsIterator.next();
wrappers.add(new RuleSetWrapper(ruleSet));
}
} catch (RuleSetNotFoundException ex) {
throw new RuntimeException("Error while initializing the list of PMD's standard rule sets", ex);
}
}
@Override
public Collection<RuleSetWrapper> getRuleSetWrappers() {
return Collections.unmodifiableCollection(wrappers);
}
@Override
public boolean containsFileName(String ruleSetFileName) {
for (RuleSetWrapper wrapper : wrappers) {
RuleSet ruleSet = wrapper.getRuleSet();
if (ruleSet.getFileName().equals(ruleSetFileName)) {
return true;
}
}
return false;
}
}