[jboss-svn-commits] JBL Code SVN: r14669 - labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/editors/completion.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Aug 27 17:18:00 EDT 2007


Author: pombredanne
Date: 2007-08-27 17:18:00 -0400 (Mon, 27 Aug 2007)
New Revision: 14669

Modified:
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/editors/completion/RuleCompletionProcessor.java
Log:
JBRULES-1134: Do not add duplicate mvel completion prposals for variables, based on a crude comparison of the tokenized display string.

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/editors/completion/RuleCompletionProcessor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/editors/completion/RuleCompletionProcessor.java	2007-08-27 20:05:15 UTC (rev 14668)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/editors/completion/RuleCompletionProcessor.java	2007-08-27 21:18:00 UTC (rev 14669)
@@ -35,6 +35,7 @@
 import org.drools.util.asm.ClassFieldInspector;
 import org.eclipse.jface.text.IDocument;
 import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.jface.text.contentassist.ICompletionProposal;
 import org.eclipse.swt.graphics.Image;
 import org.mvel.CompiledExpression;
 import org.mvel.ExpressionCompiler;
@@ -1050,14 +1051,13 @@
         final ParserContext initialContext = new ParserContext();
         final ParserContext parserContext = new ParserContext( dialect.getImports(),
                                                                null,
-                                                               drlInfo.getPackageName() + "." + currentRule.getRuleName());
+                                                               drlInfo.getPackageName() + "." + currentRule.getRuleName() );
 
         for ( Iterator it = dialect.getPackgeImports().values().iterator(); it.hasNext(); ) {
-            String packageImport = ( String ) it.next();
+            String packageImport = (String) it.next();
             parserContext.addPackageImport( packageImport );
         }
 
-
         try {
 
             initialContext.setStrictTypeEnforcement( dialect.isStrictMode() );
@@ -1098,6 +1098,12 @@
         for ( Iterator iter = inputs.entrySet().iterator(); iter.hasNext(); ) {
             Map.Entry entry = (Map.Entry) iter.next();
             String prop = (String) entry.getKey();
+
+            //JBRULES-1134 do not add completions if they already exist
+            if (containsProposal( proposals, prop )) {
+                continue ;
+            }
+
             Class type = (Class) entry.getValue();
             String display = prop + " - " + type.getName().replace( '$',
                                                                     '.' );
@@ -1111,6 +1117,34 @@
         }
     }
 
+    /**
+     * Attempt to compare proposals of different types based on the tokenized display string
+     * @param proposals
+     * @param newProposal
+     * @return true if the collection contains a prposal which matches the new Proposal.
+     * The match is based on the first token based on a space split
+     */
+    boolean containsProposal(final Collection proposals, String newProposal) {
+        for ( Iterator iter = proposals.iterator(); iter.hasNext(); ) {
+            ICompletionProposal prop = (ICompletionProposal) iter.next();
+            String displayString = prop.getDisplayString();
+            String[] existings = displayString.split( " " );
+            if (existings.length == 0) {
+                continue;
+            }
+
+            String[] newProposals = newProposal.split( " " );
+            if (newProposals.length == 0) {
+                continue;
+            }
+
+            if (existings[0].equals( newProposals[0] )) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     private void addRuleParameters(Map result,
                                    List descrs) {
         if ( descrs == null ) {




More information about the jboss-svn-commits mailing list