[jboss-svn-commits] JBL Code SVN: r19134 - in labs/jbossrules/trunk: drools-compiler/src/test/java/org/drools/brms/modeldriven/dt and 8 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Mar 20 01:21:04 EDT 2008


Author: michael.neale at jboss.com
Date: 2008-03-20 01:21:04 -0400 (Thu, 20 Mar 2008)
New Revision: 19134

Added:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/GuidedDTXMLPersistence.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/GuidedDTXMLPersistenceTest.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/GuidedDTContentHandler.java
Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/GuidedDTDRLPersistence.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/modeldriven/dt/GuidedDecisionTableTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/GuidedDTDRLPersistenceTest.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/AssetFormats.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/GuidedDecisionTableWidget.java
   labs/jbossrules/trunk/drools-jbrms/src/main/resources/contenthandler.properties
   labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/common/AssetFormatsTest.java
   labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java
   labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/contenthandler/ContentHandlerTest.java
Log:
JBRULES-1494 Decision table for the web

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/GuidedDTDRLPersistence.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/GuidedDTDRLPersistence.java	2008-03-20 04:53:41 UTC (rev 19133)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/GuidedDTDRLPersistence.java	2008-03-20 05:21:04 UTC (rev 19134)
@@ -29,6 +29,9 @@
  */
 public class GuidedDTDRLPersistence {
 
+	public static GuidedDTDRLPersistence getInstance() {
+		return new GuidedDTDRLPersistence();
+	}
 
 	public String marshal(GuidedDecisionTable dt) {
 
@@ -133,6 +136,8 @@
 					patterns.add(fp);
 				}
 
+
+
 				//now add the constraint from this cell
 				switch (c.constraintValueType) {
 					case ISingleFieldConstraint.TYPE_LITERAL:

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/GuidedDTXMLPersistence.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/GuidedDTXMLPersistence.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/GuidedDTXMLPersistence.java	2008-03-20 05:21:04 UTC (rev 19134)
@@ -0,0 +1,44 @@
+package org.drools.brms.server.util;
+
+import org.drools.brms.client.modeldriven.dt.ActionInsertFactCol;
+import org.drools.brms.client.modeldriven.dt.ActionRetractFactCol;
+import org.drools.brms.client.modeldriven.dt.ActionSetFieldCol;
+import org.drools.brms.client.modeldriven.dt.AttributeCol;
+import org.drools.brms.client.modeldriven.dt.ConditionCol;
+import org.drools.brms.client.modeldriven.dt.GuidedDecisionTable;
+
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.DomDriver;
+
+public class GuidedDTXMLPersistence {
+
+    private XStream                     xt;
+    private static GuidedDTXMLPersistence INSTANCE = new GuidedDTXMLPersistence();
+
+    private GuidedDTXMLPersistence() {
+    	xt = new XStream(new DomDriver());
+    	xt.alias("decision-table", GuidedDecisionTable.class);
+    	xt.alias("attribute-column", AttributeCol.class);
+    	xt.alias("condition-column", ConditionCol.class);
+    	xt.alias("set-field-col", ActionSetFieldCol.class);
+    	xt.alias("retract-fact-column", ActionRetractFactCol.class);
+    	xt.alias("insert-fact-column", ActionInsertFactCol.class);
+    }
+
+    public static GuidedDTXMLPersistence getInstance() {
+    	return INSTANCE;
+    }
+
+    public String marshal(GuidedDecisionTable dt) {
+    	return xt.toXML(dt);
+    }
+
+    public GuidedDecisionTable unmarshal(String xml) {
+    	if (xml == null || xml.trim().equals("")) {
+    		return new GuidedDecisionTable();
+    	}
+    	return (GuidedDecisionTable) xt.fromXML(xml);
+    }
+
+
+}


Property changes on: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/GuidedDTXMLPersistence.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/modeldriven/dt/GuidedDecisionTableTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/modeldriven/dt/GuidedDecisionTableTest.java	2008-03-20 04:53:41 UTC (rev 19133)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/modeldriven/dt/GuidedDecisionTableTest.java	2008-03-20 05:21:04 UTC (rev 19134)
@@ -268,5 +268,51 @@
 
 	}
 
+	public void testNoConstraintLists() {
+		GuidedDecisionTable dt = new GuidedDecisionTable();
 
+		//add cols for LHS
+		ConditionCol c1 = new ConditionCol();
+		c1.boundName = "c1";
+		c1.factType = "Driver";
+		c1.constraintValueType = ISingleFieldConstraint.TYPE_LITERAL;
+		dt.conditionCols.add(c1);
+
+		ConditionCol c2 = new ConditionCol();
+		c2.boundName = "c2";
+		c2.factType = "Driver";
+		c2.constraintValueType = ISingleFieldConstraint.TYPE_LITERAL;
+		c2.valueList = "a,b,c";
+		dt.conditionCols.add(c2);
+
+
+		SuggestionCompletionEngine sce = new SuggestionCompletionEngine();
+		sce.dataEnumLists.put("Driver.name", new String[] {"bob", "michael"});
+
+		assertEquals(0, dt.getValueList(c1, sce).length);
+		assertEquals(3, dt.getValueList(c2, sce).length);
+
+
+	}
+
+	public void testNoConstraintsNumeric() {
+		GuidedDecisionTable dt = new GuidedDecisionTable();
+
+		//add cols for LHS
+		ConditionCol c1 = new ConditionCol();
+		c1.boundName = "c1";
+		c1.factType = "Driver";
+		c1.constraintValueType = ISingleFieldConstraint.TYPE_LITERAL;
+		dt.conditionCols.add(c1);
+
+		SuggestionCompletionEngine sce = new SuggestionCompletionEngine();
+		sce.fieldTypes = new HashMap();
+		sce.fieldTypes.put("Driver.age", SuggestionCompletionEngine.TYPE_NUMERIC);
+		sce.fieldTypes.put("Driver.name", SuggestionCompletionEngine.TYPE_STRING);
+
+		assertFalse(dt.isNumeric(c1, sce));
+
+	}
+
+
 }

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/GuidedDTDRLPersistenceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/GuidedDTDRLPersistenceTest.java	2008-03-20 04:53:41 UTC (rev 19133)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/GuidedDTDRLPersistenceTest.java	2008-03-20 05:21:04 UTC (rev 19134)
@@ -92,7 +92,6 @@
 		set2.type = SuggestionCompletionEngine.TYPE_STRING;
 		dt.actionCols.add(set2);
 
-
 		dt.data = new String[][] {
 				new String[] {"1", "desc", "42", "33", "michael", "age * 0.2", "age > 7", "6.60", "true", "gooVal1", "gooVal2"},
 				new String[] {"2", "desc", "", "39", "bob", "age * 0.3", "age > 7", "6.60", "", "gooVal1", "gooVal2"}
@@ -100,12 +99,10 @@
 
 
 
+		GuidedDTDRLPersistence p = GuidedDTDRLPersistence.getInstance();
+		String drl = p.marshal(dt);
 
 
-		GuidedDTDRLPersistence p = new GuidedDTDRLPersistence();
-		String drl = p.marshal(dt);
-		System.err.println(drl);
-
 		assertTrue(drl.indexOf("from row number") > -1);
 		assertTrue(drl.indexOf("rating == ( age * 0.2 )") > 0);
 		assertTrue(drl.indexOf("f2 : Driver( eval( age > 7 ))") > 0);
@@ -312,6 +309,39 @@
 
 	}
 
+	public void testNoConstraints() {
+		GuidedDecisionTable dt = new GuidedDecisionTable();
+		ConditionCol c = new ConditionCol();
+		c.boundName = "x";
+		c.factType = "Context";
+		c.constraintValueType = ISingleFieldConstraint.TYPE_LITERAL;
+		dt.conditionCols.add(c);
+		ActionSetFieldCol asf = new ActionSetFieldCol();
+		asf.boundName = "x";
+		asf.factField = "age";
+		asf.type = "String";
+		dt.actionCols.add(asf);
 
+		String[][] data = new String[][] {
+			new String[] {"1", "desc", "y", "old"}
+		};
+		dt.data = data;
 
+		String drl = GuidedDTDRLPersistence.getInstance().marshal(dt);
+
+		assertTrue(drl.indexOf("Context( )") > -1);
+		assertTrue(drl.indexOf("x.setAge") > drl.indexOf("Context( )"));
+
+
+		dt.data = new String[][] {
+				new String[] {"1", "desc", "", "old"}
+			};
+		drl = GuidedDTDRLPersistence.getInstance().marshal(dt);
+		assertEquals(-1, drl.indexOf("Context( )"));
+
+
+	}
+
+
+
 }

Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/GuidedDTXMLPersistenceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/GuidedDTXMLPersistenceTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/GuidedDTXMLPersistenceTest.java	2008-03-20 05:21:04 UTC (rev 19134)
@@ -0,0 +1,41 @@
+package org.drools.brms.server.util;
+
+import org.drools.brms.client.modeldriven.dt.ActionInsertFactCol;
+import org.drools.brms.client.modeldriven.dt.ActionSetFieldCol;
+import org.drools.brms.client.modeldriven.dt.AttributeCol;
+import org.drools.brms.client.modeldriven.dt.ConditionCol;
+import org.drools.brms.client.modeldriven.dt.GuidedDecisionTable;
+
+import junit.framework.TestCase;
+
+public class GuidedDTXMLPersistenceTest extends TestCase {
+
+	public void testRoundTrip() {
+		GuidedDecisionTable dt = new GuidedDecisionTable();
+		dt.actionCols.add(new ActionInsertFactCol());
+		dt.actionCols.add(new ActionSetFieldCol());
+		dt.attributeCols.add(new AttributeCol());
+		dt.conditionCols.add(new ConditionCol());
+		dt.data = new String[][] {
+				new String[] {"hola"}
+		};
+		dt.tableName = "blah";
+		dt.descriptionWidth = 42;
+
+		String xml = GuidedDTXMLPersistence.getInstance().marshal(dt);
+		assertNotNull(xml);
+		assertEquals(-1, xml.indexOf("ActionSetField"));
+		assertEquals(-1, xml.indexOf("ConditionCol"));
+		assertEquals(-1, xml.indexOf("GuidedDecisionTable"));
+
+		GuidedDecisionTable dt_ = GuidedDTXMLPersistence.getInstance().unmarshal(xml);
+		assertNotNull(dt_);
+		assertEquals(42, dt_.descriptionWidth);
+		assertEquals("blah", dt_.tableName);
+		assertEquals(1, dt_.attributeCols.size());
+		assertEquals(2, dt_.actionCols.size());
+		assertEquals(1, dt_.conditionCols.size());
+
+	}
+
+}


Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/GuidedDTXMLPersistenceTest.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/AssetFormats.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/AssetFormats.java	2008-03-20 04:53:41 UTC (rev 19133)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/AssetFormats.java	2008-03-20 05:21:04 UTC (rev 19134)
@@ -55,6 +55,8 @@
     /** Use a decision table.*/
     public static final String DECISION_SPREADSHEET_XLS = "xls";
 
+    public static final String DECISION_TABLE_GUIDED = "gdst";
+
     /** Use a ruleflow.*/
     public static final String RULE_FLOW_RF = "rf";
 
@@ -67,7 +69,7 @@
     /**
      * The following group the assets together for lists, helpers etc...
      */
-    public static final String[] BUSINESS_RULE_FORMATS = new String[] {AssetFormats.BUSINESS_RULE, AssetFormats.DSL_TEMPLATE_RULE, AssetFormats.DECISION_SPREADSHEET_XLS};
+    public static final String[] BUSINESS_RULE_FORMATS = new String[] {AssetFormats.BUSINESS_RULE, AssetFormats.DSL_TEMPLATE_RULE, AssetFormats.DECISION_SPREADSHEET_XLS, AssetFormats.DECISION_TABLE_GUIDED};
 
 
     /**

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/GuidedDecisionTableWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/GuidedDecisionTableWidget.java	2008-03-20 04:53:41 UTC (rev 19133)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/GuidedDecisionTableWidget.java	2008-03-20 05:21:04 UTC (rev 19134)
@@ -89,6 +89,7 @@
 
     	this.dt = (GuidedDecisionTable) asset.content;
     	this.packageName = asset.metaData.packageName;
+    	this.dt.tableName = asset.metaData.name;
 
 
         layout = new VerticalPanel();

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/GuidedDTContentHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/GuidedDTContentHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/GuidedDTContentHandler.java	2008-03-20 05:21:04 UTC (rev 19134)
@@ -0,0 +1,83 @@
+package org.drools.brms.server.contenthandler;
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+import java.io.IOException;
+import java.io.StringReader;
+
+import org.drools.brms.client.modeldriven.brl.RuleModel;
+import org.drools.brms.client.modeldriven.dt.GuidedDecisionTable;
+import org.drools.brms.client.rpc.RuleAsset;
+import org.drools.brms.server.builder.BRMSPackageBuilder;
+import org.drools.brms.server.builder.ContentPackageAssembler;
+import org.drools.brms.server.util.BRDRLPersistence;
+import org.drools.brms.server.util.BRXMLPersistence;
+import org.drools.brms.server.util.GuidedDTDRLPersistence;
+import org.drools.brms.server.util.GuidedDTXMLPersistence;
+import org.drools.compiler.DroolsParserException;
+import org.drools.repository.AssetItem;
+import org.drools.repository.PackageItem;
+
+import com.google.gwt.user.client.rpc.SerializableException;
+
+/**
+ * For guided decision tables.
+ *
+ * @author Michael Neale
+ */
+public class GuidedDTContentHandler extends ContentHandler implements IRuleAsset {
+
+	public void retrieveAssetContent(RuleAsset asset, PackageItem pkg,
+			AssetItem item) throws SerializableException {
+		GuidedDecisionTable model = GuidedDTXMLPersistence.getInstance().unmarshal(
+				item.getContent());
+
+		asset.content = model;
+
+	}
+
+	public void storeAssetContent(RuleAsset asset, AssetItem repoAsset)
+			throws SerializableException {
+		GuidedDecisionTable data = (GuidedDecisionTable) asset.content;
+		if (data.tableName == null) {
+			data.tableName = repoAsset.getName();
+		}
+		repoAsset.updateContent(GuidedDTXMLPersistence.getInstance().marshal(data));
+	}
+
+	public void compile(BRMSPackageBuilder builder, AssetItem asset,
+			ContentPackageAssembler.ErrorLogger logger)
+			throws DroolsParserException, IOException {
+		builder
+				.addPackageFromDrl(new StringReader(
+						getSourceDRL(asset, builder)));
+	}
+
+	public void assembleDRL(BRMSPackageBuilder builder, AssetItem asset,
+			StringBuffer buf) {
+		String drl = getSourceDRL(asset, builder);
+		buf.append(drl);
+	}
+
+	private String getSourceDRL(AssetItem asset, BRMSPackageBuilder builder) {
+		GuidedDecisionTable model = GuidedDTXMLPersistence.getInstance().unmarshal(asset.getContent());
+        model.tableName = asset.getName();
+		String drl = GuidedDTDRLPersistence.getInstance().marshal(model);
+		return drl;
+	}
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/GuidedDTContentHandler.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/resources/contenthandler.properties
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/resources/contenthandler.properties	2008-03-20 04:53:41 UTC (rev 19133)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/resources/contenthandler.properties	2008-03-20 05:21:04 UTC (rev 19134)
@@ -21,4 +21,6 @@
 # Content Handler for Enumeration
 enumeration=org.drools.brms.server.contenthandler.EnumerationContentHandler
 # Content handler for scenario (its just text, not part of build)
-scenario=org.drools.brms.server.contenthandler.ScenarioContentHandler
\ No newline at end of file
+scenario=org.drools.brms.server.contenthandler.ScenarioContentHandler
+# for guided decision tables
+gdst=org.drools.brms.server.contenthandler.GuidedDTContentHandler
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/common/AssetFormatsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/common/AssetFormatsTest.java	2008-03-20 04:53:41 UTC (rev 19133)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/common/AssetFormatsTest.java	2008-03-20 05:21:04 UTC (rev 19134)
@@ -31,6 +31,8 @@
                     fmt.equals( AssetFormats.DECISION_SPREADSHEET_XLS )
                     ||
                     fmt.equals( AssetFormats.DSL_TEMPLATE_RULE )
+                    ||
+                    fmt.equals( AssetFormats.DECISION_TABLE_GUIDED )
             ) ) {
                 fail("Incorrect grouping of business rules.");
             }
@@ -44,6 +46,7 @@
     public void testPackageDependencies() {
         assertFalse(AssetFormats.isPackageDependency(AssetFormats.BUSINESS_RULE));
         assertFalse(AssetFormats.isPackageDependency(AssetFormats.DRL));
+        assertFalse(AssetFormats.isPackageDependency(AssetFormats.DECISION_TABLE_GUIDED));
         assertFalse(AssetFormats.isPackageDependency(AssetFormats.TEST_SCENARIO));
         assertTrue(AssetFormats.isPackageDependency(AssetFormats.DSL));
         assertTrue(AssetFormats.isPackageDependency(AssetFormats.MODEL));

Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java	2008-03-20 04:53:41 UTC (rev 19133)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java	2008-03-20 05:21:04 UTC (rev 19134)
@@ -16,36 +16,75 @@
  * limitations under the License.
  */
 
-import com.google.gwt.user.client.rpc.IsSerializable;
-import com.google.gwt.user.client.rpc.SerializableException;
+import java.io.ByteArrayInputStream;
+import java.io.ObjectInput;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+
 import junit.framework.TestCase;
 
-import org.apache.commons.io.IOUtils;
 import org.drools.Person;
 import org.drools.RuleBase;
 import org.drools.StatelessSession;
 import org.drools.brms.client.common.AssetFormats;
 import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
-import org.drools.brms.client.modeldriven.brl.*;
-import org.drools.brms.client.modeldriven.testing.*;
-import org.drools.brms.client.rpc.*;
+import org.drools.brms.client.modeldriven.brl.ActionFieldValue;
+import org.drools.brms.client.modeldriven.brl.ActionSetField;
+import org.drools.brms.client.modeldriven.brl.FactPattern;
+import org.drools.brms.client.modeldriven.brl.ISingleFieldConstraint;
+import org.drools.brms.client.modeldriven.brl.RuleModel;
+import org.drools.brms.client.modeldriven.brl.SingleFieldConstraint;
+import org.drools.brms.client.modeldriven.dt.ActionSetFieldCol;
+import org.drools.brms.client.modeldriven.dt.ConditionCol;
+import org.drools.brms.client.modeldriven.dt.GuidedDecisionTable;
+import org.drools.brms.client.modeldriven.testing.ExecutionTrace;
+import org.drools.brms.client.modeldriven.testing.FactData;
+import org.drools.brms.client.modeldriven.testing.FieldData;
+import org.drools.brms.client.modeldriven.testing.Scenario;
+import org.drools.brms.client.modeldriven.testing.VerifyFact;
+import org.drools.brms.client.modeldriven.testing.VerifyField;
+import org.drools.brms.client.modeldriven.testing.VerifyRuleFired;
+import org.drools.brms.client.rpc.AnalysisReport;
+import org.drools.brms.client.rpc.BuilderResult;
+import org.drools.brms.client.rpc.BulkTestRunResult;
+import org.drools.brms.client.rpc.DetailedSerializableException;
+import org.drools.brms.client.rpc.PackageConfigData;
+import org.drools.brms.client.rpc.RepositoryService;
+import org.drools.brms.client.rpc.RuleAsset;
+import org.drools.brms.client.rpc.RuleContentText;
+import org.drools.brms.client.rpc.ScenarioResultSummary;
+import org.drools.brms.client.rpc.ScenarioRunResult;
+import org.drools.brms.client.rpc.SnapshotInfo;
+import org.drools.brms.client.rpc.TableConfig;
+import org.drools.brms.client.rpc.TableDataResult;
+import org.drools.brms.client.rpc.TableDataRow;
+import org.drools.brms.client.rpc.ValidatedResponse;
 import org.drools.brms.server.util.BRXMLPersistence;
+import org.drools.brms.server.util.GuidedDTXMLPersistence;
 import org.drools.brms.server.util.IO;
 import org.drools.brms.server.util.ScenarioXMLPersistence;
 import org.drools.brms.server.util.TableDisplayHandler;
 import org.drools.brms.server.util.TestEnvironmentSessionHelper;
 import org.drools.common.DroolsObjectInputStream;
-import org.drools.repository.*;
+import org.drools.repository.AssetItem;
+import org.drools.repository.CategoryItem;
+import org.drools.repository.PackageItem;
+import org.drools.repository.RulesRepository;
+import org.drools.repository.RulesRepositoryException;
+import org.drools.repository.StateItem;
 import org.drools.rule.Package;
 import org.drools.util.BinaryRuleBaseLoader;
 
-import java.io.ByteArrayInputStream;
-import java.io.InputStreamReader;
-import java.io.ObjectInputStream;
-import java.io.StringReader;
-import java.io.ObjectInput;
-import java.util.*;
+import com.google.gwt.user.client.rpc.IsSerializable;
+import com.google.gwt.user.client.rpc.SerializableException;
 
+/**
+ * This is really a collection of integration tests.
+ * @author Michael Neale
+ */
 public class ServiceImplementationTest extends TestCase {
 
 	public void testCategory() throws Exception {
@@ -1762,6 +1801,77 @@
 	}
 
 
+	public void testGuidedDTExecute() throws Exception {
+		ServiceImplementation impl = getService();
+		RulesRepository repo = impl.repository;
+		impl.createCategory("/", "decisiontables", "");
+
+		PackageItem pkg = repo.createPackage("testGuidedDTCompile", "");
+		pkg.updateHeader("import org.drools.Person");
+		AssetItem rule1 = pkg.addAsset("rule_1", "");
+		rule1.updateFormat(AssetFormats.DRL);
+		rule1.updateContent("rule 'rule1' \n when \np : Person() \n then \np.setAge(42); \n end");
+		rule1.checkin("");
+		repo.save();
+
+
+		GuidedDecisionTable dt = new GuidedDecisionTable();
+		ConditionCol col = new ConditionCol();
+		col.boundName = "p";
+		col.constraintValueType = ISingleFieldConstraint.TYPE_LITERAL;
+		col.factField = "hair";
+		col.factType = "Person";
+		col.operator = "==";
+		dt.conditionCols.add(col);
+
+		ActionSetFieldCol ac = new ActionSetFieldCol();
+		ac.boundName = "p";
+		ac.factField = "likes";
+		ac.type = SuggestionCompletionEngine.TYPE_STRING;
+		dt.actionCols.add(ac);
+
+		dt.data = new String[][] {
+			new String[] {"1", "descrip", "pink", "cheese"}
+		};
+
+		String uid = impl.createNewRule("decTable", "", "decisiontables", pkg.getName(), AssetFormats.DECISION_TABLE_GUIDED);
+		RuleAsset ass = impl.loadRuleAsset(uid);
+		ass.content = dt;
+		impl.checkinVersion(ass);
+
+		BuilderResult[] results = impl.buildPackage(pkg.getUUID(), null, true);
+		assertNull(results);
+
+		pkg = repo.loadPackage("testGuidedDTCompile");
+		byte[] binPackage = pkg.getCompiledPackageBytes();
+
+		assertNotNull(binPackage);
+
+		ByteArrayInputStream bin = new ByteArrayInputStream(binPackage);
+		ObjectInput in = new DroolsObjectInputStream(bin);
+		Package binPkg = (Package) in.readObject();
+
+		assertEquals(2, binPkg.getRules().length);
+
+		assertNotNull(binPkg);
+		assertTrue(binPkg.isValid());
+
+		Person p = new Person();
+
+
+		p.setHair("pink");
+
+		BinaryRuleBaseLoader loader = new BinaryRuleBaseLoader();
+		loader.addPackage(new ByteArrayInputStream(binPackage));
+		RuleBase rb = loader.getRuleBase();
+
+		StatelessSession sess = rb.newStatelessSession();
+		sess.execute(p);
+		assertEquals(42, p.getAge());
+		assertEquals("cheese", p.getLikes());
+	}
+
+
 	private ServiceImplementation getService() throws Exception {
 		ServiceImplementation impl = new ServiceImplementation();
 

Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/contenthandler/ContentHandlerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/contenthandler/ContentHandlerTest.java	2008-03-20 04:53:41 UTC (rev 19133)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/contenthandler/ContentHandlerTest.java	2008-03-20 05:21:04 UTC (rev 19134)
@@ -35,7 +35,9 @@
         assertTrue(ContentHandler.getHandler( AssetFormats.BUSINESS_RULE ) instanceof BRLContentHandler);
         assertTrue(ContentHandler.getHandler( AssetFormats.DECISION_SPREADSHEET_XLS ) instanceof DecisionTableXLSHandler);
         assertTrue(ContentHandler.getHandler( AssetFormats.ENUMERATION ) instanceof EnumerationContentHandler);
+        assertTrue(ContentHandler.getHandler( AssetFormats.DECISION_TABLE_GUIDED ) instanceof GuidedDTContentHandler);
 
+
         try {
             ContentHandler.getHandler( "XXX" );
             fail("should have thrown an exception");
@@ -49,6 +51,7 @@
         assertTrue(ContentHandler.getHandler( AssetFormats.DSL_TEMPLATE_RULE ).isRuleAsset());
         assertTrue(ContentHandler.getHandler( AssetFormats.BUSINESS_RULE ).isRuleAsset());
         assertTrue(ContentHandler.getHandler( AssetFormats.DECISION_SPREADSHEET_XLS ).isRuleAsset());
+        assertTrue(ContentHandler.getHandler( AssetFormats.DECISION_TABLE_GUIDED ).isRuleAsset());
 
         assertFalse(ContentHandler.getHandler( AssetFormats.DSL ).isRuleAsset());
         assertFalse(ContentHandler.getHandler( AssetFormats.MODEL ).isRuleAsset());




More information about the jboss-svn-commits mailing list