From a54b05b00a2d08657950d0734a60b546d91fb96f Mon Sep 17 00:00:00 2001 From: Ryan Gustafson Date: Wed, 27 Feb 2008 23:16:41 +0000 Subject: [PATCH] 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 --- .../impl/PreferencesManagerImpl.java | 19 +++++----- .../impl/ProjectPropertiesManagerImpl.java | 5 ++- .../properties/impl/ProjectPropertiesTO.java | 36 +++++++++++++++++++ .../pmd/runtime/properties/impl/mapping.xml | 16 +++++++++ 4 files changed, 66 insertions(+), 10 deletions(-) diff --git a/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/preferences/impl/PreferencesManagerImpl.java b/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/preferences/impl/PreferencesManagerImpl.java index 55c7e5a4a5..5b9237f6cb 100644 --- a/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/preferences/impl/PreferencesManagerImpl.java +++ b/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/preferences/impl/PreferencesManagerImpl.java @@ -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) { diff --git a/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/properties/impl/ProjectPropertiesManagerImpl.java b/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/properties/impl/ProjectPropertiesManagerImpl.java index 4f1e9c6377..612c7b3fa2 100644 --- a/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/properties/impl/ProjectPropertiesManagerImpl.java +++ b/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/properties/impl/ProjectPropertiesManagerImpl.java @@ -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; diff --git a/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/properties/impl/ProjectPropertiesTO.java b/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/properties/impl/ProjectPropertiesTO.java index 5d51aeec68..a9b7232cd6 100644 --- a/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/properties/impl/ProjectPropertiesTO.java +++ b/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/properties/impl/ProjectPropertiesTO.java @@ -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. */ diff --git a/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/properties/impl/mapping.xml b/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/properties/impl/mapping.xml index c1b9f47be6..f4b5240308 100644 --- a/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/properties/impl/mapping.xml +++ b/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/properties/impl/mapping.xml @@ -27,6 +27,22 @@ + + + + + + + +