[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