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:
@ -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) {
|
||||
|
@ -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;
|
||||
|
@ -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.
|
||||
*/
|
||||
|
@ -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"
|
||||
|
Reference in New Issue
Block a user