[jboss-svn-commits] JBL Code SVN: r11725 - 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 May 7 19:08:58 EDT 2007


Author: KrisVerlaenen
Date: 2007-05-07 19:08:58 -0400 (Mon, 07 May 2007)
New Revision: 11725

Modified:
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/editors/completion/LocationDeterminator.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/editors/completion/RuleCompletionProcessor.java
Log:
JBRULES-840: Add "in" and "not in" operators
 - Added support in IDE code completion for in and not in
JBRULES-577: Please add "contained by" syntax for constraints
 - Added support in IDE code completion for memberOf and not memberOf

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/editors/completion/LocationDeterminator.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/editors/completion/LocationDeterminator.java	2007-05-07 23:08:54 UTC (rev 11724)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/editors/completion/LocationDeterminator.java	2007-05-07 23:08:58 UTC (rev 11725)
@@ -26,15 +26,19 @@
 public class LocationDeterminator {
 
     static final Pattern PATTERN_PATTERN_START = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*[^\\s<>!=:]*", Pattern.DOTALL);
-    static final Pattern PATTERN_PATTERN_OPERATOR = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*([^\\s<>!=:]+)\\s+", Pattern.DOTALL);
-    static final Pattern PATTERN_PATTERN_CONTAINS_ARGUMENT = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*([^\\s<>!=:]+)\\s+contains\\s+[^\\s<>!=:]*", Pattern.DOTALL);
-    static final Pattern PATTERN_PATTERN_MATCHES_ARGUMENT = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*([^\\s<>!=:]+)\\s+matches\\s+[^\\s<>!=:]*", Pattern.DOTALL);
-    static final Pattern PATTERN_PATTERN_EXCLUDES_ARGUMENT = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*([^\\s<>!=:]+)\\s+excludes\\s+[^\\s<>!=:]*", Pattern.DOTALL);
-    static final Pattern PATTERN_PATTERN_COMPARATOR_ARGUMENT = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*([^\\s<>!=:]+)\\s*([<>=!]+)\\s*[^\\s<>!=:]*", Pattern.DOTALL);
-    static final Pattern PATTERN_PATTERN_CONTAINS_END = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*([^\\s<>!=:]+)\\s+contains\\s+[^\\s<>!=:,]+\\s+", Pattern.DOTALL);
-    static final Pattern PATTERN_PATTERN_MATCHES_END = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*([^\\s<>!=:]+)\\s+matches\\s+[^\\s<>!=:,]+\\s+", Pattern.DOTALL);
-    static final Pattern PATTERN_PATTERN_EXCLUDES_END = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*([^\\s<>!=:]+)\\s+excludes\\s+[^\\s<>!=:,]+\\s+", Pattern.DOTALL);
-    static final Pattern PATTERN_PATTERN_COMPARATOR_END = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*([^\\s<>!=:]+)\\s*([<>=!]+)\\s*[^\\s<>!=:,]+\\s+", Pattern.DOTALL);
+    static final Pattern PATTERN_PATTERN_OPERATOR = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*([^\\s<>!=:\\(\\)]+)\\s+", Pattern.DOTALL);
+    static final Pattern PATTERN_PATTERN_CONTAINS_ARGUMENT = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*([^\\s<>!=:\\(\\)]+)\\s+contains\\s+[^\\s<>!=:]*", Pattern.DOTALL);
+    static final Pattern PATTERN_PATTERN_MATCHES_ARGUMENT = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*([^\\s<>!=:\\(\\)]+)\\s+matches\\s+[^\\s<>!=:]*", Pattern.DOTALL);
+    static final Pattern PATTERN_PATTERN_EXCLUDES_ARGUMENT = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*([^\\s<>!=:\\(\\)]+)\\s+excludes\\s+[^\\s<>!=:]*", Pattern.DOTALL);
+    static final Pattern PATTERN_PATTERN_IN_ARGUMENT = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*([^\\s<>!=:\\(\\)]+)\\s+(not\\s+)?in\\s+[^\\s<>!=:]*", Pattern.DOTALL);
+    static final Pattern PATTERN_PATTERN_MEMBER_OF_ARGUMENT = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*([^\\s<>!=:\\(\\)]+)\\s+(not\\s+)?memberOf\\s+[^\\s<>!=:]*", Pattern.DOTALL);
+    static final Pattern PATTERN_PATTERN_COMPARATOR_ARGUMENT = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*([^\\s<>!=:\\(\\)]+)\\s*([<>=!]+)\\s*[^\\s<>!=:]*", Pattern.DOTALL);
+    static final Pattern PATTERN_PATTERN_CONTAINS_END = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*([^\\s<>!=:\\(\\)]+)\\s+contains\\s+[^\\s<>!=:,]+\\s+", Pattern.DOTALL);
+    static final Pattern PATTERN_PATTERN_MATCHES_END = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*([^\\s<>!=:\\(\\)]+)\\s+matches\\s+[^\\s<>!=:,]+\\s+", Pattern.DOTALL);
+    static final Pattern PATTERN_PATTERN_EXCLUDES_END = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*([^\\s<>!=:\\(\\)]+)\\s+excludes\\s+[^\\s<>!=:,]+\\s+", Pattern.DOTALL);
+    static final Pattern PATTERN_PATTERN_IN_END = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*([^\\s<>!=:\\(\\)]+)\\s+(not\\s+)?in\\s+\\([^\\)]+\\)\\s*", Pattern.DOTALL);
+    static final Pattern PATTERN_PATTERN_MEMBER_OF_END = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*([^\\s<>!=:\\(\\)]+)\\s+(not\\s+)?memberOf\\s+[^\\s<>!=:,]+\\s+", Pattern.DOTALL);
+    static final Pattern PATTERN_PATTERN_COMPARATOR_END = Pattern.compile(".*[(,](\\s*(\\S*)\\s*:)?\\s*([^\\s<>!=:\\(\\)]+)\\s*([<>=!]+)\\s*[^\\s<>!=:,]+\\s+", Pattern.DOTALL);
 
     static final Pattern PATTERN_PATTERN = Pattern.compile("((\\S+)\\s*:\\s*)?(\\S+)\\s*(\\(.*)", Pattern.DOTALL);
     static final Pattern EXISTS_PATTERN = Pattern.compile(".*\\s+exists\\s*\\(?\\s*((\\S*)\\s*:)?\\s*\\S*", Pattern.DOTALL);
@@ -243,11 +247,12 @@
 							}
 							int connectiveLocation = patternContents.lastIndexOf(connective);
 							patternContents = "( " + lastFieldDescr.getFieldName() + " " + patternContents.substring(connectiveLocation + 1);
-						} else {
-							Location location = new Location(LOCATION_LHS_INSIDE_CONDITION_END);
-							location.setProperty(LOCATION_PROPERTY_CLASS_NAME, patternDescr.getObjectType());
-							return location;
 						}
+//						else {
+//							Location location = new Location(LOCATION_LHS_INSIDE_CONDITION_END);
+//							location.setProperty(LOCATION_PROPERTY_CLASS_NAME, patternDescr.getObjectType());
+//							return location;
+//						}
 					}
 				}
 			}
@@ -482,6 +487,22 @@
 			location.setProperty(LOCATION_PROPERTY_OPERATOR, "excludes");
 			return location;
         }
+        matcher = PATTERN_PATTERN_IN_ARGUMENT.matcher(patternContents);
+        if (matcher.matches()) {
+			Location location = new Location(LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+			location.setProperty(LOCATION_PROPERTY_CLASS_NAME, className);
+			location.setProperty(LOCATION_PROPERTY_PROPERTY_NAME, matcher.group(3));
+			location.setProperty(LOCATION_PROPERTY_OPERATOR, "in");
+			return location;
+        }
+        matcher = PATTERN_PATTERN_MEMBER_OF_ARGUMENT.matcher(patternContents);
+        if (matcher.matches()) {
+			Location location = new Location(LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+			location.setProperty(LOCATION_PROPERTY_CLASS_NAME, className);
+			location.setProperty(LOCATION_PROPERTY_PROPERTY_NAME, matcher.group(3));
+			location.setProperty(LOCATION_PROPERTY_OPERATOR, "memberOf");
+			return location;
+        }
         matcher = PATTERN_PATTERN_MATCHES_ARGUMENT.matcher(patternContents);
         if (matcher.matches()) {
 			Location location = new Location(LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
@@ -508,6 +529,18 @@
 			location.setProperty(LOCATION_PROPERTY_CLASS_NAME, className);
 			return location;
         }
+        matcher = PATTERN_PATTERN_IN_END.matcher(patternContents);
+        if (matcher.matches()) {
+			Location location = new Location(LOCATION_LHS_INSIDE_CONDITION_END);
+			location.setProperty(LOCATION_PROPERTY_CLASS_NAME, className);
+			return location;
+        }
+        matcher = PATTERN_PATTERN_MEMBER_OF_END.matcher(patternContents);
+        if (matcher.matches()) {
+			Location location = new Location(LOCATION_LHS_INSIDE_CONDITION_END);
+			location.setProperty(LOCATION_PROPERTY_CLASS_NAME, className);
+			return location;
+        }
         matcher = PATTERN_PATTERN_COMPARATOR_END.matcher(patternContents);
         if (matcher.matches()) {
 			Location location = new Location(LOCATION_LHS_INSIDE_CONDITION_END);
@@ -520,7 +553,7 @@
 			location.setProperty(LOCATION_PROPERTY_CLASS_NAME, className);
 			return location;
         }
-		Location location = new Location(LOCATION_LHS_INSIDE_CONDITION_START);
+		Location location = new Location(LOCATION_LHS_INSIDE_CONDITION_END);
 		location.setProperty(LOCATION_PROPERTY_CLASS_NAME, className);
 		return location;
 	}

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-05-07 23:08:54 UTC (rev 11724)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/editors/completion/RuleCompletionProcessor.java	2007-05-07 23:08:58 UTC (rev 11725)
@@ -220,6 +220,14 @@
 					DROOLS_ICON));
 			list.add(new RuleCompletionProposal(prefix.length(), "->",
 					"-> (  )", 5, DROOLS_ICON));
+			list.add(new RuleCompletionProposal(prefix.length(), "memberOf",
+					"memberOf ", DROOLS_ICON));
+			list.add(new RuleCompletionProposal(prefix.length(), "not memberOf",
+					"not memberOf ", DROOLS_ICON));
+			list.add(new RuleCompletionProposal(prefix.length(), "in",
+					"in (  )", 5, DROOLS_ICON));
+			list.add(new RuleCompletionProposal(prefix.length(), "not in",
+					"not in (  )", 9, DROOLS_ICON));
 
 			if (isComparable(type)) {
 				list.add(new RuleCompletionProposal(prefix.length(), "<",
@@ -251,11 +259,21 @@
 			String operator = (String) location
 					.getProperty(LocationDeterminator.LOCATION_PROPERTY_OPERATOR);
 			type = getPropertyClass(className, property);
+			
+			if ("in".equals(operator)) {
+				list.add(new RuleCompletionProposal(prefix.length(), "()",
+					"(  )", 2, DROOLS_ICON));
+				break;
+			}
 
 			if ("contains".equals(operator) || "excludes".equals(operator)) {
 				type = "java.lang.Object";
 			}
 
+			if ("memberOf".equals(operator)) {
+				type = "java.util.Collection";
+			}
+
 			boolean isObject = false;
 			if ("java.lang.Object".equals(type)) {
 				isObject = true;




More information about the jboss-svn-commits mailing list