|
From: <mir...@us...> - 2007-04-26 10:48:07
|
Revision: 2369
http://svn.sourceforge.net/rubyeclipse/?rev=2369&view=rev
Author: mirkostocker
Date: 2007-04-26 03:47:41 -0700 (Thu, 26 Apr 2007)
Log Message:
-----------
show a warning if the name hasn't changed or is already used
Modified Paths:
--------------
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/ModuleNodeProvider.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamemodule/RenameModuleConditionChecker.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamemodule/RenameModuleConfig.java
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/ModuleNodeProvider.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/ModuleNodeProvider.java 2007-04-26 08:36:50 UTC (rev 2368)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/ModuleNodeProvider.java 2007-04-26 10:47:41 UTC (rev 2369)
@@ -38,6 +38,10 @@
import org.rubypeople.rdt.refactoring.nodewrapper.ModuleNodeWrapper;
public abstract class ModuleNodeProvider {
+
+ private interface IModuleAcceptor {
+ boolean accept(ModuleNodeWrapper wrapper);
+ }
public static ModuleNodeWrapper getSelectedModuleNode(Node root, int pos) {
@@ -48,14 +52,14 @@
return createModuleNodeWrapper(root, module);
}
- public static Collection<ModuleNodeWrapper> findOtherParts(IDocumentProvider doc, ModuleNodeWrapper module) {
+ private static Collection<ModuleNodeWrapper> findModules(IDocumentProvider doc, IModuleAcceptor acceptor) {
ArrayList<ModuleNodeWrapper> modules = new ArrayList<ModuleNodeWrapper>();
for (String file : doc.getFileNames()) {
for (Node node : NodeProvider.getSubNodes(doc.getRootNode(file), ModuleNode.class)) {
ModuleNode moduleNode = (ModuleNode) node;
ModuleNodeWrapper wrapper = createModuleNodeWrapper(doc.getRootNode(file), moduleNode);
- if(wrapper.getFullName().equals(module.getFullName())) {
+ if(acceptor.accept(wrapper)) {
modules.add(wrapper);
}
}
@@ -64,6 +68,22 @@
return modules;
}
+ public static Collection<ModuleNodeWrapper> findOtherParts(IDocumentProvider doc, final ModuleNodeWrapper module) {
+ return findModules(doc, new IModuleAcceptor(){
+
+ public boolean accept(ModuleNodeWrapper wrapper) {
+ return wrapper.getFullName().equals(module.getFullName());
+ }});
+ }
+
+ public static Collection<ModuleNodeWrapper> findAllModules(IDocumentProvider doc) {
+ return findModules(doc, new IModuleAcceptor(){
+
+ public boolean accept(ModuleNodeWrapper wrapper) {
+ return true;
+ }});
+ }
+
public static Collection<ConstNode> getAllModuleMethodDefinitions(Collection<ModuleNodeWrapper> modules) {
ArrayList<ConstNode> methods = new ArrayList<ConstNode>();
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamemodule/RenameModuleConditionChecker.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamemodule/RenameModuleConditionChecker.java 2007-04-26 08:36:50 UTC (rev 2368)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamemodule/RenameModuleConditionChecker.java 2007-04-26 10:47:41 UTC (rev 2369)
@@ -32,10 +32,12 @@
import java.util.Collection;
import java.util.HashSet;
+import org.jruby.ast.ClassNode;
import org.jruby.ast.Colon2Node;
import org.jruby.ast.ConstNode;
import org.jruby.ast.Node;
import org.jruby.ast.RootNode;
+import org.jruby.ast.SClassNode;
import org.rubypeople.rdt.refactoring.core.IRefactoringConfig;
import org.rubypeople.rdt.refactoring.core.ModuleNodeProvider;
import org.rubypeople.rdt.refactoring.core.NodeProvider;
@@ -62,6 +64,16 @@
}
@Override
+ protected void checkFinalConditions() {
+ if (config.getOriginalName().equals(config.getNewName())) {
+ addWarning("You did not change the name.");
+ }
+ if(config.getAllModuleNames().contains(config.getNewName())) {
+ addWarning("The name you chose is already in use.");
+ }
+ }
+
+ @Override
public void init(IRefactoringConfig configObj) {
config = (RenameModuleConfig) configObj;
@@ -70,14 +82,25 @@
return;
}
config.setSelectedModule(selectedModule);
+ config.setNewName(config.getOriginalName());
config.setModuleParts(ModuleNodeProvider.findOtherParts(config.getDocumentProvider(), config.getSelectedModule()));
config.setIncludes(new ModuleIncludeFinder(config.getDocumentProvider()).find(config.getOriginalFullName()));
config.setPossibleCalls(findPossibleCalls());
config.setSelectedCalls(config.getPossibleCalls());
+
+ config.setAllModuleNames(getAllModuleNames());
}
+ private Collection<String> getAllModuleNames() {
+ Collection<String> names = new ArrayList<String>();
+ for(ModuleNodeWrapper module : ModuleNodeProvider.findAllModules(config.getDocumentProvider())) {
+ names.add(module.getFullName());
+ }
+ return names;
+ }
+
private ArrayList<ModuleSpecifierWrapper> findPossibleCalls() {
ArrayList<ModuleSpecifierWrapper> calls = new ArrayList<ModuleSpecifierWrapper>();
@@ -86,7 +109,9 @@
for(String file : config.getDocumentProvider().getFileNames()) {
RootNode rootNode = config.getDocumentProvider().getRootNode(file);
for (final Node node : NodeProvider.getSubNodes(rootNode, ConstNode.class, Colon2Node.class)) {
- if(toSkip.contains(node)) {
+ if(toSkip.contains(node)
+ || NodeProvider.findParentNode(rootNode, node) instanceof ClassNode
+ || NodeProvider.findParentNode(rootNode, node) instanceof SClassNode) {
continue;
}
ModuleSpecifierWrapper module = ModuleSpecifierWrapper.create(node, NameHelper.getEncosingModulePrefix(rootNode, node));
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamemodule/RenameModuleConfig.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamemodule/RenameModuleConfig.java 2007-04-26 08:36:50 UTC (rev 2368)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamemodule/RenameModuleConfig.java 2007-04-26 10:47:41 UTC (rev 2369)
@@ -50,6 +50,7 @@
private Collection<? extends INodeWrapper> possibleCalls;
private Collection<? extends INodeWrapper> selectedCalls;
private Collection<ModuleSpecifierWrapper> includes;
+ private Collection<String> allModuleNames;
public RenameModuleConfig(IDocumentProvider doc, int carretPosition) {
this.doc = doc;
@@ -125,4 +126,12 @@
public Collection<ModuleSpecifierWrapper> getIncludes() {
return includes;
}
+
+ public Collection<String> getAllModuleNames() {
+ return allModuleNames;
+ }
+
+ public void setAllModuleNames(Collection<String> allModuleNames) {
+ this.allModuleNames = allModuleNames;
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|