Changes to Workspace exclude/include patterns are now reflected on the Projects.

git-svn-id: https://pmd.svn.sourceforge.net/svnroot/pmd/trunk@5812 51baf565-9d33-0410-a72c-fc3788e3496d
This commit is contained in:
Ryan Gustafson
2008-02-27 23:16:41 +00:00
parent 63bbc45c1d
commit a54b05b00a
4 changed files with 66 additions and 10 deletions

View File

@ -42,6 +42,7 @@ import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
@ -151,11 +152,7 @@ class PreferencesManagerImpl implements IPreferencesManager {
* @see net.sourceforge.pmd.runtime.preferences.IPreferencesManager#setRuleSet(net.sourceforge.pmd.RuleSet)
*/
public void setRuleSet(RuleSet newRuleSet) {
Set newRules = getNewRules(newRuleSet);
if (!newRules.isEmpty()) {
addNewRulesToConfiguredProjects(newRules);
}
updateConfiguredProjects(newRuleSet);
ruleSet = newRuleSet;
storeRuleSetInStateLocation(ruleSet);
}
@ -356,12 +353,13 @@ class PreferencesManagerImpl implements IPreferencesManager {
}
/**
* Add new rules to already configured projects
* Add new rules to already configured projects, and update the exclude/include patterns
*/
private void addNewRulesToConfiguredProjects(Set addedRules) {
log.debug("Add new rules to configured projects");
private void updateConfiguredProjects(RuleSet updatedRuleSet) {
log.debug("Updating configured projects");
RuleSet addedRuleSet = new RuleSet();
Iterator ruleIterator = addedRules.iterator();
Set newRules = getNewRules(updatedRuleSet);
Iterator ruleIterator = newRules.iterator();
while (ruleIterator.hasNext()) {
Rule rule = (Rule) ruleIterator.next();
addedRuleSet.addRule(rule);
@ -377,6 +375,9 @@ class PreferencesManagerImpl implements IPreferencesManager {
RuleSet projectRuleSet = properties.getProjectRuleSet();
if (projectRuleSet != null) {
projectRuleSet.addRuleSet(addedRuleSet);
projectRuleSet.setExcludePatterns(new ArrayList(updatedRuleSet.getExcludePatterns()));
projectRuleSet.setIncludePatterns(new ArrayList(updatedRuleSet.getIncludePatterns()));
properties.setProjectRuleSet(projectRuleSet);
properties.sync();
}
} catch (PropertiesException e) {

View File

@ -318,13 +318,16 @@ public class ProjectPropertiesManagerImpl implements IProjectPropertiesManager {
bean.setIncludeDerivedFiles(projectProperties.isIncludeDerivedFiles());
if (!projectProperties.isRuleSetStoredInProject()) {
final RuleSet ruleSet = projectProperties.getProjectRuleSet();
final List rules = new ArrayList();
final Iterator i = projectProperties.getProjectRuleSet().getRules().iterator();
final Iterator i = ruleSet.getRules().iterator();
while (i.hasNext()) {
final Rule rule = (Rule) i.next();
rules.add(new RuleSpecTO(rule.getName(), rule.getRuleSetName())); // NOPMD:AvoidInstantiatingObjectInLoop
}
bean.setRules((RuleSpecTO[]) rules.toArray(new RuleSpecTO[rules.size()]));
bean.setExcludePatterns((String[])ruleSet.getExcludePatterns().toArray(new String[ruleSet.getExcludePatterns().size()]));
bean.setIncludePatterns((String[])ruleSet.getIncludePatterns().toArray(new String[ruleSet.getIncludePatterns().size()]));
}
return bean;

View File

@ -63,6 +63,8 @@ package net.sourceforge.pmd.runtime.properties.impl;
*/
public class ProjectPropertiesTO {
private RuleSpecTO[] rules;
private String[] excludePatterns;
private String[] includePatterns;
private String workingSetName;
private boolean ruleSetStoredInProject;
private String ruleSetFile;
@ -86,6 +88,40 @@ public class ProjectPropertiesTO {
}
/**
* @return an array of String objects for exclude patterns
* for the current project.
*/
public String[] getExcludePatterns() {
return excludePatterns;
}
/**
* Set the exclude patterns for a project
* @param excludePatterns an array of String objects for exclude patterns
* for the current project.
*/
public void setExcludePatterns(String[] excludePatterns) {
this.excludePatterns = excludePatterns;
}
/**
* @return an array of String objects for include patterns
* for the current project.
*/
public String[] getIncludePatterns() {
return includePatterns;
}
/**
* Set the include patterns for a project
* @param includePatterns an array of String objects for include patterns
* for the current project.
*/
public void setIncludePatterns(String[] includePatterns) {
this.includePatterns = includePatterns;
}
/**
* @return ruleSetStoredInProject tells whether the project use a ruleset
* stored in the project or the global plugin ruleset.
*/

View File

@ -27,6 +27,22 @@
<bind-xml name="ruleSetFile" node="element"/>
</field>
<field name="ExcludePatterns"
type="java.lang.String"
collection="array"
get-method="getExcludePatterns"
set-method="setExcludePatterns">
<bind-xml name="excludePattern" location="excludePatterns" node="element"/>
</field>
<field name="IncludePatterns"
type="java.lang.String"
collection="array"
get-method="getIncludePatterns"
set-method="setIncludePatterns">
<bind-xml name="includePattern" location="includePatterns" node="element"/>
</field>
<field name="Rules"
type="net.sourceforge.pmd.runtime.properties.impl.RuleSpecTO"
collection="array"