[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