[jboss-svn-commits] JBL Code SVN: r8016 - in labs/jbossrules/trunk/drools-jbrms/src: main/java/org/drools/brms/client main/java/org/drools/brms/client/modeldriven main/java/org/drools/brms/client/modeldriven/model main/java/org/drools/brms/client/modeldriven/ui test/java/org/drools/brms/client/modeldriven
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Dec 1 07:33:12 EST 2006
Author: michael.neale at jboss.com
Date: 2006-12-01 07:33:00 -0500 (Fri, 01 Dec 2006)
New Revision: 8016
Added:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionFieldValue.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionSetFieldWidget.java
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/RuleModelTest.java
Modified:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Packages.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/SuggestionCompletionEngine.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionAssertFact.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionSetField.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/RuleModel.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/SuggestionCompletionTest.java
Log:
more changes
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Packages.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Packages.java 2006-12-01 11:56:55 UTC (rev 8015)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Packages.java 2006-12-01 12:33:00 UTC (rev 8016)
@@ -1,10 +1,13 @@
package org.drools.brms.client;
import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
+import org.drools.brms.client.modeldriven.model.ActionFieldValue;
+import org.drools.brms.client.modeldriven.model.ActionSetField;
import org.drools.brms.client.modeldriven.model.CompositeFactPattern;
import org.drools.brms.client.modeldriven.model.ConnectiveConstraint;
import org.drools.brms.client.modeldriven.model.Constraint;
import org.drools.brms.client.modeldriven.model.FactPattern;
+import org.drools.brms.client.modeldriven.model.IAction;
import org.drools.brms.client.modeldriven.model.IPattern;
import org.drools.brms.client.modeldriven.model.RuleModel;
import org.drools.brms.client.modeldriven.ui.CompositeFactPatternWidget;
@@ -60,6 +63,7 @@
com.addConnectiveOperators( "Vehicle", "make", new String[] {"|="});
+
return com;
}
@@ -112,6 +116,15 @@
p3.patterns[0] = i1;
+ ActionSetField set = new ActionSetField();
+ set.variable = "car1";
+ set.fieldValues = new ActionFieldValue[1];
+ set.fieldValues[0] = new ActionFieldValue();
+ set.fieldValues[0].field = "type";
+
+ model.rhs = new IAction[1];
+ model.rhs[0] = set;
+
return model;
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/SuggestionCompletionEngine.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/SuggestionCompletionEngine.java 2006-12-01 11:56:55 UTC (rev 8015)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/SuggestionCompletionEngine.java 2006-12-01 12:33:00 UTC (rev 8016)
@@ -1,9 +1,7 @@
package org.drools.brms.client.modeldriven;
-import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
-import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -19,32 +17,31 @@
private Map factToFields = new HashMap();
private Map factFieldToOperator = new HashMap();
private Map factFieldToConnectiveOperator = new HashMap();
- private Map boundFacts = new HashMap();
- private List boundFields = new ArrayList();
private Map globals = new HashMap();
/**
* For bulk loading up the data (from a previous rule save)
*
* @param factToFields A map of "FactType" (key - String) to String[] (value)
- * @param factFieldToOperator A map of "<FactType>.<field>" (key - String) to String[] operators
- * @param factFieldToConnectiveOperator A map of "<FactType>.<field>" (key -String) to String[] operators
+ * @param factFieldToOperator A map of "FactType.field" (key - String) to String[] operators
+ * @param factFieldToConnectiveOperator A map of "FactType.field" (key -String) to String[] operators
* that are valid CONNECTIVE operators.
*
* @param globals A map of global variable name to its fields (String[]).
-
+ *
*/
public void load(
Map factToFields,
Map factFieldToOperator,
Map factFieldToConnectiveOperator,
- Map globals
+ Map globals,
+ Map boundFacts
) {
this.factToFields = factToFields;
this.factFieldToOperator = factFieldToOperator;
this.factFieldToConnectiveOperator = factFieldToConnectiveOperator;
this.globals = globals;
-
+
}
public SuggestionCompletionEngine() {
@@ -93,8 +90,7 @@
return toStringArray( this.factToFields.keySet() );
}
- public String[] getFieldCompletions(String factType) {
-
+ public String[] getFieldCompletions(String factType) {
return (String[]) this.factToFields.get( factType );
}
@@ -102,18 +98,9 @@
String fieldName) {
return (String[]) this.factFieldToOperator.get( factType + "." + fieldName );
}
-
-
-
- /**
- * This adds a bound field which may be used later on (fields values cannot be set this way).
- */
- public void addBoundField(String fieldName) {
- this.boundFields.add(fieldName);
- }
- public String[] getBoundFacts() {
- return toStringArray( boundFacts.keySet() );
+ public boolean isGlobalVariable(String variable) {
+ return globals.containsKey( variable );
}
private String[] toStringArray(Set set) {
@@ -127,32 +114,6 @@
}
- private String[] toStringArray(List list) {
- String[] result = new String[list.size()];
- for(int i = 0; i < list.size(); i ++) {
- result[i] = (String) list.get( i );
- }
- return result;
- }
-
-
- public String[] getBoundFields() {
- return toStringArray( boundFields );
- }
-
-
- public void addBoundFact(String varName,
- String factType) {
- this.boundFacts.put(varName, factType);
- }
-
-
- public String[] getFieldCompletionsForBoundFact(String varName) {
- String factType = (String) this.boundFacts.get( varName );
- return this.getFieldCompletions( factType );
- }
-
-
public String[] getFieldCompletionsForGlobalVariable(String varName) {
return (String[]) this.globals.get( varName );
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionAssertFact.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionAssertFact.java 2006-12-01 11:56:55 UTC (rev 8015)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionAssertFact.java 2006-12-01 12:33:00 UTC (rev 8016)
@@ -7,6 +7,6 @@
public String factType;
/** tuples of field = value */
- public String[][] fieldValues;
+ public ActionFieldValue[] fieldValues;
}
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionFieldValue.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionFieldValue.java 2006-12-01 11:56:55 UTC (rev 8015)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionFieldValue.java 2006-12-01 12:33:00 UTC (rev 8016)
@@ -0,0 +1,17 @@
+package org.drools.brms.client.modeldriven.model;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * Holds field/values for "action" parts of the rule.
+ *
+ * @author Michael Neale
+ */
+public class ActionFieldValue
+ implements
+ IsSerializable {
+
+ public String field;
+ public String value;
+
+}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionSetField.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionSetField.java 2006-12-01 11:56:55 UTC (rev 8015)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionSetField.java 2006-12-01 12:33:00 UTC (rev 8016)
@@ -8,8 +8,8 @@
public class ActionSetField implements IAction {
public String variable;
- public String field;
- public String value;
+ public ActionFieldValue[] fieldValues;
public boolean modify;
+
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/RuleModel.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/RuleModel.java 2006-12-01 11:56:55 UTC (rev 8015)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/RuleModel.java 2006-12-01 12:33:00 UTC (rev 8016)
@@ -1,9 +1,30 @@
package org.drools.brms.client.modeldriven.model;
-public class RuleModel {
+import com.google.gwt.user.client.rpc.IsSerializable;
+public class RuleModel implements IsSerializable {
+
public IPattern[] lhs;
- public ActionSetField[] rhs;
+ public IAction[] rhs;
+ /**
+ * This will return the fact pattern that a variable is bound to.
+ *
+ * @param var The bound fact variable (NOT bound field).
+ * @return null or the FactPattern found.
+ */
+ public FactPattern getBoundFact(String var) {
+ if (lhs == null ) return null;
+ for ( int i = 0; i < lhs.length; i++ ) {
+
+ if (lhs[i] instanceof FactPattern) {
+ FactPattern p = (FactPattern) lhs[i];
+ if (p.boundName != null && var.equals( p.boundName)) {
+ return p;
+ }
+ }
+ }
+ return null;
+ }
}
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionSetFieldWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionSetFieldWidget.java 2006-12-01 11:56:55 UTC (rev 8015)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionSetFieldWidget.java 2006-12-01 12:33:00 UTC (rev 8016)
@@ -0,0 +1,109 @@
+package org.drools.brms.client.modeldriven.ui;
+
+import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
+import org.drools.brms.client.modeldriven.model.ActionFieldValue;
+import org.drools.brms.client.modeldriven.model.ActionSetField;
+import org.drools.brms.client.modeldriven.model.FactPattern;
+import org.drools.brms.client.modeldriven.model.RuleModel;
+
+import com.google.gwt.user.client.ui.ChangeListener;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.FlexTable;
+import com.google.gwt.user.client.ui.Grid;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.ListBox;
+import com.google.gwt.user.client.ui.TextBox;
+import com.google.gwt.user.client.ui.Widget;
+
+/**
+ * This widget is for setting fields on a bound fact or global variable.
+ *
+ * @author Michael Neale
+ */
+public class ActionSetFieldWidget extends Composite {
+
+ final private ActionSetField model;
+ final private SuggestionCompletionEngine completions;
+ final private FlexTable layout;
+ private boolean isBoundFact = false;
+ final private String[] fieldCompletions;
+
+
+ public ActionSetFieldWidget(RuleModel rule, ActionSetField set, SuggestionCompletionEngine com) {
+ this.model = set;
+ this.completions = com;
+ this.layout = new FlexTable();
+ layout.setStyleName( "model-builderInner-Background" );
+ if (completions.isGlobalVariable( set.variable )) {
+ this.fieldCompletions = completions.getFieldCompletionsForGlobalVariable( set.variable );
+ } else {
+ FactPattern pattern = rule.getBoundFact( set.variable );
+ this.fieldCompletions = completions.getFieldCompletions( pattern.factType );
+ this.isBoundFact = true;
+ }
+
+ doLayout();
+
+ initWidget( this.layout );
+ }
+
+
+ private void doLayout() {
+ layout.clear();
+ layout.setWidget( 0, 0, getSetterLabel() );
+
+ FlexTable inner = new FlexTable();
+
+
+ for ( int i = 0; i < model.fieldValues.length; i++ ) {
+ ActionFieldValue val = model.fieldValues[i];
+
+ inner.setWidget( i, 0, fieldSelector(val) );
+ inner.setWidget( i, 1, valueEditor(val) );
+ }
+
+ layout.setWidget( 0, 1, inner );
+
+
+ }
+
+
+ private Label getSetterLabel() {
+ return new Label("Set " + model.variable);
+ }
+
+
+ private Widget valueEditor(final ActionFieldValue val) {
+ final TextBox box = new TextBox();
+ box.setText( val.value );
+ box.addChangeListener( new ChangeListener() {
+ public void onChange(Widget w) {
+ val.value = box.getText();
+ }
+ });
+ return box;
+ }
+
+
+ private Widget fieldSelector(final ActionFieldValue val) {
+
+ final ListBox box = new ListBox();
+ for ( int i = 0; i < this.fieldCompletions.length; i++ ) {
+ box.addItem( this.fieldCompletions[i] );
+ if (this.fieldCompletions[i].equals( val.field )) {
+ box.setSelectedIndex( i );
+ }
+
+ }
+
+ box.addChangeListener( new ChangeListener() {
+ public void onChange(Widget w) {
+ val.field = box.getItemText( box.getSelectedIndex() );
+ }
+ });
+
+ return box;
+
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java 2006-12-01 11:56:55 UTC (rev 8015)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java 2006-12-01 12:33:00 UTC (rev 8016)
@@ -2,8 +2,10 @@
import org.drools.brms.client.common.FormStylePopup;
import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
+import org.drools.brms.client.modeldriven.model.ActionSetField;
import org.drools.brms.client.modeldriven.model.CompositeFactPattern;
import org.drools.brms.client.modeldriven.model.FactPattern;
+import org.drools.brms.client.modeldriven.model.IAction;
import org.drools.brms.client.modeldriven.model.IPattern;
import org.drools.brms.client.modeldriven.model.RuleModel;
@@ -45,9 +47,6 @@
private void doLayout() {
layout.clear();
-
-
-
Image addPattern = new Image( "images/new_item.gif" );
addPattern.addClickListener( new ClickListener() {
public void onClick(Widget w) {
@@ -62,10 +61,26 @@
layout.setWidget( 1, 1, renderLhs(this.model) );
layout.setWidget( 2, 0, new Label("THEN") );
- layout.setWidget( 3, 1, new Label("<Rhs here>") );
+ layout.setWidget( 3, 1, renderRhs(this.model) );
}
/**
+ * Do the widgets for the RHS.
+ */
+ private Widget renderRhs(RuleModel model) {
+ VerticalPanel vert = new VerticalPanel();
+
+ for ( int i = 0; i < model.rhs.length; i++ ) {
+ IAction action = model.rhs[i];
+ if (action instanceof ActionSetField) {
+ vert.add( new ActionSetFieldWidget(this.model, (ActionSetField) action, completions ) );
+ }
+ }
+
+ return vert;
+ }
+
+ /**
* Pops up the fact selector.
*/
protected void showFactTypeSelector(final Widget w) {
Added: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/RuleModelTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/RuleModelTest.java 2006-12-01 11:56:55 UTC (rev 8015)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/RuleModelTest.java 2006-12-01 12:33:00 UTC (rev 8016)
@@ -0,0 +1,38 @@
+package org.drools.brms.client.modeldriven;
+
+import org.drools.brms.client.modeldriven.model.FactPattern;
+import org.drools.brms.client.modeldriven.model.IPattern;
+import org.drools.brms.client.modeldriven.model.RuleModel;
+
+import junit.framework.TestCase;
+
+public class RuleModelTest extends TestCase {
+
+ public void testBoundFactFinder() {
+ RuleModel model = new RuleModel();
+
+ assertNull(model.getBoundFact( "x" ));
+ model.lhs = new IPattern[3];
+
+ FactPattern x = new FactPattern("Car");
+ model.lhs[0] = x;
+ x.boundName = "x";
+
+ assertNotNull(model.getBoundFact( "x" ));
+ assertEquals(x, model.getBoundFact( "x" ));
+
+ FactPattern y = new FactPattern("Car");
+ model.lhs[1] = y;
+ y.boundName = "y";
+
+ FactPattern other = new FactPattern("House");
+ model.lhs[2] = other;
+
+ assertEquals(y, model.getBoundFact( "y" ));
+ assertEquals(x, model.getBoundFact( "x" ));
+
+
+
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/SuggestionCompletionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/SuggestionCompletionTest.java 2006-12-01 11:56:55 UTC (rev 8015)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/SuggestionCompletionTest.java 2006-12-01 12:33:00 UTC (rev 8016)
@@ -26,7 +26,11 @@
}},
new HashMap() {{
put("foo", new String[] {"bar", "baz"});
+ }},
+ new HashMap() {{
+ put("x", "Person");
}}
+
);
String[] c =com.getConditionalElements();
@@ -74,13 +78,8 @@
assertEquals("bar", c[0]);
assertEquals("baz", c[1]);
- com.addBoundFact( "myFact", "Person" );
+
- c = com.getFieldCompletionsForBoundFact( "myFact" );
- assertEquals(2, c.length);
- assertEquals("age", c[0]);
- assertEquals("name", c[1]);
-
}
public void testAdd() {
@@ -107,25 +106,20 @@
}
- public void testBoundVariables() {
+
+
+ public void testGlobalAndFacts() {
SuggestionCompletionEngine com = new SuggestionCompletionEngine();
- com.addBoundFact( "foo", "Person" );
- com.addBoundFact( "bar", "Vehicle" );
- assertEquals(0, com.getBoundFields().length);
- assertEquals(2, com.getBoundFacts().length);
+
+ com.addGlobal( "y", new String[] {"a"} );
- com.addBoundField( "x" );
- assertEquals(1, com.getBoundFields().length);
+ assertFalse(com.isGlobalVariable( "x" ));
- assertEquals( "foo", com.getBoundFacts()[0]);
- assertEquals( "bar", com.getBoundFacts()[1]);
-
- assertEquals( "x", com.getBoundFields()[0]);
-
-
-
+ assertTrue(com.isGlobalVariable( "y" ));
}
+
+
}
More information about the jboss-svn-commits
mailing list