[jboss-svn-commits] JBL Code SVN: r8036 - in labs/jbossrules/trunk/drools-jbrms/src: main/java/org/drools/brms/client main/java/org/drools/brms/client/modeldriven/model main/java/org/drools/brms/client/modeldriven/ui main/java/org/drools/brms/public test/java/org/drools/brms/client/modeldriven

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Dec 1 16:06:28 EST 2006


Author: michael.neale at jboss.com
Date: 2006-12-01 16:06:18 -0500 (Fri, 01 Dec 2006)
New Revision: 8036

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/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/main/java/org/drools/brms/public/JBRMS.css
   labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/RuleModelTest.java
Log:
added some validation

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 19:40:35 UTC (rev 8035)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Packages.java	2006-12-01 21:06:18 UTC (rev 8036)
@@ -96,9 +96,9 @@
         p1.constraints[1].operator = "==";
         p1.constraints[1].value = "Bob";
         p1.constraints[1].fieldBinding = "n";
-        p1.constraints[1].connectives = new ConnectiveConstraint[2];
-        p1.constraints[1].connectives[0] = new ConnectiveConstraint("|=", "Michael");
-        p1.constraints[1].connectives[1] = new ConnectiveConstraint("|=", "Mark");
+//        p1.constraints[1].connectives = new ConnectiveConstraint[2];
+//        p1.constraints[1].connectives[0] = new ConnectiveConstraint("|=", "Michael");
+//        p1.constraints[1].connectives[1] = new ConnectiveConstraint("|=", "Mark");
 
         
         p2.factType = "Vehicle";

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 19:40:35 UTC (rev 8035)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/RuleModel.java	2006-12-01 21:06:18 UTC (rev 8036)
@@ -45,5 +45,67 @@
         return list;
         
     }
+
+    /**
+     * 
+     * @param idx Remove this index from the LHS.
+     * @param Returns false if it was NOT allowed to remove this item (ie 
+     * it is used on the RHS).
+     */
+    public boolean removeLhsItem(int idx) {
+        
+        IPattern[] newList = new IPattern[lhs.length - 1];
+        int newIdx = 0;
+        for ( int i = 0; i < lhs.length; i++ ) {
+            
+            if (i != idx) {
+                newList[newIdx] = lhs[i];
+                newIdx++;
+            } else {
+                if (lhs[i] instanceof FactPattern) {
+                    FactPattern p = (FactPattern) lhs[i];
+                    if (p.boundName != null && isBoundFactUsed( p.boundName )) {
+                        return false;
+                    }
+                }
+                
+            }
+            
+        }
+        this.lhs = newList;
+        return true;
+    }
+
+    /**
+     * 
+     * @param binding The name of the LHS fact binding.
+     * @return Returns true if the specified binding is used on the RHS.
+     */
+    public boolean isBoundFactUsed(String binding) {
+        if (rhs == null) return false;
+        for ( int i = 0; i < rhs.length; i++ ) {
+            if (rhs[i] instanceof ActionSetField) {
+                ActionSetField set = (ActionSetField) rhs[i];
+                if (set.variable.equals( binding )) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
     
+    public void removeRhsItem(int idx) {
+        IAction[] newList = new IAction[rhs.length - 1];
+        int newIdx = 0;
+        for ( int i = 0; i < rhs.length; i++ ) {
+            
+            if (i != idx) {
+                newList[newIdx] = rhs[i];
+                newIdx++;
+            }
+            
+        }
+        this.rhs = newList;
+    }
+    
 }

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 19:40:35 UTC (rev 8035)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java	2006-12-01 21:06:18 UTC (rev 8036)
@@ -1,5 +1,6 @@
 package org.drools.brms.client.modeldriven.ui;
 
+import org.drools.brms.client.common.ErrorPopup;
 import org.drools.brms.client.common.FormStylePopup;
 import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
 import org.drools.brms.client.modeldriven.model.ActionAssertFact;
@@ -15,6 +16,7 @@
 import com.google.gwt.user.client.ui.ClickListener;
 import com.google.gwt.user.client.ui.Composite;
 import com.google.gwt.user.client.ui.FlexTable;
+import com.google.gwt.user.client.ui.HorizontalPanel;
 import com.google.gwt.user.client.ui.Image;
 import com.google.gwt.user.client.ui.Label;
 import com.google.gwt.user.client.ui.ListBox;
@@ -69,20 +71,40 @@
     /**
      * Do the widgets for the RHS.
      */
-    private Widget renderRhs(RuleModel model) {
+    private Widget renderRhs(final RuleModel model) {
         VerticalPanel vert = new VerticalPanel();
         
         for ( int i = 0; i < model.rhs.length; i++ ) {
             IAction action = model.rhs[i];
+            
+            Widget w = null;            
             if (action instanceof ActionSetField) {                
-                vert.add( new ActionSetFieldWidget(this.model, (ActionSetField) action, completions ) ); 
+                w =  new ActionSetFieldWidget(this.model, (ActionSetField) action, completions ) ; 
             } else if (action instanceof ActionAssertFact) {
-                vert.add( new ActionAssertFactWidget((ActionAssertFact) action, completions ));
+                w = new ActionAssertFactWidget((ActionAssertFact) action, completions );
             } else if (action instanceof ActionRetractFact) {
-                vert.add(new ActionRetractFactWidget((ActionRetractFact) action));
+                w = new ActionRetractFactWidget((ActionRetractFact) action);
             }
+            
+            HorizontalPanel horiz = new HorizontalPanel();
+            
+            Image remove = new Image("images/delete_obj.gif");
+            final int idx = i;
+            remove.addClickListener( new ClickListener() {
+                public void onClick(Widget w) {
+                    model.removeRhsItem(idx);
+                    doLayout();
+                }
+            } );
+            horiz.add( w );
+            horiz.add( remove );
+            
+            vert.add( horiz );
+            
         }
         
+        
+        
         return vert;
     }
 
@@ -131,19 +153,39 @@
         doLayout();
     }
 
-    private Widget renderLhs(RuleModel model) {
+    private Widget renderLhs(final RuleModel model) {
         VerticalPanel vert = new VerticalPanel();
+        
         for ( int i = 0; i < model.lhs.length; i++ ) {
             IPattern pattern = model.lhs[i];
-            if (pattern instanceof FactPattern) {                
-                vert.add( new FactPatternWidget(pattern, completions) );
+            Widget w;
+            if (pattern instanceof FactPattern) {  
+                
+                w =  new FactPatternWidget(pattern, completions) ;
             } else if (pattern instanceof CompositeFactPattern) {
-                vert.add( new CompositeFactPatternWidget((CompositeFactPattern) pattern, completions) );
+                w = new CompositeFactPatternWidget((CompositeFactPattern) pattern, completions) ;
             } else {
                 throw new RuntimeException("I don't know what type of pattern that is.");
             }
-            //TODO: add stuff for removing pattern here.
             
+            HorizontalPanel horiz = new HorizontalPanel();
+            
+            Image remove = new Image("images/delete_obj.gif");
+            final int idx = i;
+            remove.addClickListener( new ClickListener() {
+                public void onClick(Widget w) {
+                    if (model.removeLhsItem(idx)) {
+                        doLayout();
+                    } else {
+                        ErrorPopup.showMessage( "Can't remove that item as it is used in the action part of the rule." );
+                    }
+                }
+            } );
+            horiz.add( w );
+            horiz.add( remove );
+
+
+            vert.add( horiz );
         }
         
         return vert;

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css	2006-12-01 19:40:35 UTC (rev 8035)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css	2006-12-01 21:06:18 UTC (rev 8036)
@@ -114,15 +114,18 @@
 }
 
 .model-builder-Background {
-  background-color: white;
+  background-color: #FDFCDC;
   border: 1px solid #87B3FF;
 }
 
 .model-builderInner-Background {
-  background-color: #FDFCDC;
-  border: 1px solid #87B3FF;
+  background-color: white;
+  //border: 1px solid #87B3FF;
+	border-top: 1px solid black;
+	border-bottom: 1px solid black;
 }
 
+
 .gwt-TabBar {
   background-color: #B8B8B8;
   font-size: smaller;

Modified: 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 19:40:35 UTC (rev 8035)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/RuleModelTest.java	2006-12-01 21:06:18 UTC (rev 8036)
@@ -2,7 +2,10 @@
 
 import java.util.List;
 
+import org.drools.brms.client.modeldriven.model.ActionRetractFact;
+import org.drools.brms.client.modeldriven.model.ActionSetField;
 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;
 
@@ -34,7 +37,17 @@
         assertEquals(x, model.getBoundFact( "x" ));
         
         
+        model.rhs = new IAction[1];
+        ActionSetField set = new ActionSetField();
+        set.variable = "x";
+        model.rhs[0] = set;
         
+        assertTrue(model.isBoundFactUsed( "x" ));
+        assertFalse(model.isBoundFactUsed( "y" ));
+        
+        assertEquals(3, model.lhs.length);
+        assertFalse(model.removeLhsItem( 0 ));
+        assertEquals(3, model.lhs.length);
     }
     
     public void testBindingList() {
@@ -63,4 +76,50 @@
         
     }
     
+    public void testRemoveItemLhs() {
+        RuleModel model = new RuleModel();
+        
+        model.lhs = new IPattern[3];
+        FactPattern x = new FactPattern("Car");
+        model.lhs[0] = x;
+        x.boundName = "x";
+        
+        FactPattern y = new FactPattern("Car");
+        model.lhs[1] = y;
+        y.boundName = "y";
+        
+        FactPattern other = new FactPattern("House");
+        model.lhs[2] = other;
+        
+        assertEquals(3, model.lhs.length);
+        assertEquals(x, model.lhs[0]);
+        
+        model.removeLhsItem( 0 );
+        
+        assertEquals(2, model.lhs.length);
+        assertEquals(y, model.lhs[0]);
+        
+    }
+    
+    public void testRemoveItemRhs() {
+        RuleModel model = new RuleModel();
+        
+        model.rhs = new IAction[3];
+        ActionRetractFact r0 = new ActionRetractFact("x");
+        ActionRetractFact r1 = new ActionRetractFact("y");
+        ActionRetractFact r2 = new ActionRetractFact("z");
+        
+        model.rhs[0] = r0;
+        model.rhs[1] = r1;
+        model.rhs[2] = r2;
+        
+        model.removeRhsItem(1);
+        
+        assertEquals(2, model.rhs.length);
+        assertEquals(r0, model.rhs[0]);
+        assertEquals(r2, model.rhs[1]);
+        
+    }
+    
+    
 }




More information about the jboss-svn-commits mailing list