[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