[jboss-svn-commits] JBL Code SVN: r11555 - in labs/jbossrules/trunk/drools-decisiontables/src: test/java/org/drools/decisiontable and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue May 1 09:34:29 EDT 2007


Author: stevearoonie
Date: 2007-05-01 09:34:29 -0400 (Tue, 01 May 2007)
New Revision: 11555

Modified:
   labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/Cell.java
   labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/DefaultTemplateRuleBase.java
   labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/ExternalSheetListener.java
   labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/Row.java
   labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/RuleTemplate.java
   labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/ExternalSpreadsheetCompilerIntegrationTest.java
   labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/parser/DefaultGeneratorTest.java
   labs/jbossrules/trunk/drools-decisiontables/src/test/resources/templates/test_template2.drl
Log:
Fix template decision tables to work with MVEL

Modified: labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/Cell.java
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/Cell.java	2007-05-01 13:06:39 UTC (rev 11554)
+++ labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/Cell.java	2007-05-01 13:34:29 UTC (rev 11555)
@@ -33,11 +33,14 @@
 	public Cell() {
 		
 	}
-	Cell(Row r, Column c, String v) {
+	Cell(Row r, Column c) {
 		row = r;
 		column = c;
-		value = c.getValue(v);
 	}
+	
+	public void setValue(String v) {
+		value = column.getValue(v);
+	}
 
 	public String toString() {
 		return "Cell[" + column + ": " + value + "]";

Modified: labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/DefaultTemplateRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/DefaultTemplateRuleBase.java	2007-05-01 13:06:39 UTC (rev 11554)
+++ labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/DefaultTemplateRuleBase.java	2007-05-01 13:34:29 UTC (rev 11555)
@@ -25,8 +25,6 @@
 import org.drools.RuleBase;
 import org.drools.RuleBaseFactory;
 import org.drools.StatefulSession;
-import org.drools.StatelessSession;
-import org.drools.WorkingMemory;
 import org.drools.compiler.PackageBuilder;
 import org.drools.decisiontable.model.Condition;
 import org.drools.decisiontable.model.Consequence;

Modified: labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/ExternalSheetListener.java
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/ExternalSheetListener.java	2007-05-01 13:06:39 UTC (rev 11554)
+++ labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/ExternalSheetListener.java	2007-05-01 13:34:29 UTC (rev 11555)
@@ -19,8 +19,6 @@
 import java.util.Properties;
 
 import org.drools.StatefulSession;
-import org.drools.StatelessSession;
-import org.drools.WorkingMemory;
 import org.drools.decisiontable.model.DRLOutput;
 
 /**
@@ -94,25 +92,28 @@
 		if (currentRow != null && column >= startCol && value != null
 				&& value.trim().length() > 0) {
 
+			int columnIndex = column - startCol;
 			// System.out.println("asserting cell " + row + ", " + column + ": "
 			// + value);
-			Column col = columns[column - startCol];
-			Cell cell = new Cell(currentRow, col, value);
-			currentRow.addCell(cell);
+			//Column col = columns[columnIndex];
+			//Cell cell = new Cell(currentRow, col, value);
+			//currentRow.addCell(cell);
+			Cell cell = currentRow.getCell(columnIndex);
+			cell.setValue(value);
 			session.assertObject(cell);
 
 		}
 	}
 
-	public void newRow(int rowNumber, int columns) {
+	public void newRow(int rowNumber, int columnCount) {
 		if (!tableFinished && rowNumber >= startRow) {
-			if (currentRow != null && currentRow.cells.isEmpty()) {
+			if (currentRow != null && currentRow.isEmpty()) {
 				currentRow = null;
 				tableFinished = true;
 			} else {
 				if (currentRow != null)
 					session.assertObject(currentRow);
-				currentRow = new Row(rowNumber);
+				currentRow = new Row(rowNumber, columns);
 			}
 		}
 	}

Modified: labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/Row.java
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/Row.java	2007-05-01 13:06:39 UTC (rev 11554)
+++ labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/Row.java	2007-05-01 13:34:29 UTC (rev 11555)
@@ -16,6 +16,7 @@
  * limitations under the License.
  */
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 /**
  * @author <a href="mailto:stevearoonie at gmail.com">Steven Williams</a>
@@ -30,18 +31,33 @@
     	
     }
     
-    Row(int r) {
+    Row(int r, Column[] columns) {
         rowNum = r;
+        for (int i = 0; i < columns.length; i++) {
+			cells.add(new Cell(this, columns[i]));
+		}
     }
     
     public int getRowNumber() {
         return rowNum;
     }
 
-    void addCell(Cell cell) {
-        cells.add( cell );
+    Cell getCell(int columnIndex)
+    {
+    	return (Cell) cells.get(columnIndex);
     }
     
+    boolean isEmpty() {
+    	for (Iterator it = cells.iterator(); it.hasNext();) {
+			Cell cell = (Cell) it.next();
+			if (cell.getValue() != null)
+			{
+				return false;
+			}
+		}
+    	return true;
+    }
+    
     public List getCells() {
     	return cells;
     }

Modified: labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/RuleTemplate.java
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/RuleTemplate.java	2007-05-01 13:06:39 UTC (rev 11554)
+++ labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/RuleTemplate.java	2007-05-01 13:34:29 UTC (rev 11555)
@@ -92,11 +92,10 @@
 	/*
 	 * Replace the optional columns in the rule contents with an if statement.
 	 * if (column is empty) do not show the line.
-	 * This is based on antlr StringTemplate and should be replaced with MVEL.
 	 */
 	private String replaceOptionals(String contents) {
 		try {
-			final Pattern pattern = Pattern.compile("\\$(.[^\\$]*)\\$");
+			final Pattern pattern = Pattern.compile("@\\{(.[^}]*)\\}");
 			final List columns = new ArrayList(getColumns());
 			columns.add("row.rowNumber");
 			final BufferedReader reader = new BufferedReader(new StringReader(
@@ -109,16 +108,16 @@
 				while (matcher.find()) {
 					final String c = matcher.group(1);
 					if (!columns.contains(c)) {
-						newLine.append("$if(").append(matcher.group(1)).append(
-								")$");
+						newLine.append("@if{").append(matcher.group(1)).append(
+								" != null} ");
 						optCols++;
 					}
 				}
 				newLine.append(line);
-				newLine.append(StringUtils.repeat("$endif$", optCols));
+				newLine.append(StringUtils.repeat(" @end{}", optCols));
 				newLine.append("\n");
 			}
-			// System.out.println("newLine: " + newLine);
+//			System.out.println("newLine: " + newLine);
 			return newLine.toString();
 
 		} catch (IOException e) {

Modified: labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/ExternalSpreadsheetCompilerIntegrationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/ExternalSpreadsheetCompilerIntegrationTest.java	2007-05-01 13:06:39 UTC (rev 11554)
+++ labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/ExternalSpreadsheetCompilerIntegrationTest.java	2007-05-01 13:34:29 UTC (rev 11555)
@@ -30,7 +30,6 @@
 import org.drools.compiler.DroolsError;
 import org.drools.compiler.PackageBuilder;
 import org.drools.decisiontable.parser.ExternalSheetListener;
-import org.drools.decisiontable.parser.DefaultTemplateContainer;
 import org.drools.rule.Package;
 /**
  * @author <a href="mailto:stevearoonie at gmail.com">Steven Williams</a> Some basic unit tests for converter utility.
@@ -39,7 +38,6 @@
  */
 public class ExternalSpreadsheetCompilerIntegrationTest extends TestCase
 {
-    
     public void testIntegration() throws Exception 
     {
         final ExternalSpreadsheetCompiler converter = new ExternalSpreadsheetCompiler();
@@ -76,8 +74,7 @@
         
     }
     
-    // @FIXME
-    public void FIXME_testPricing() throws Exception 
+    public void testPricing() throws Exception 
     {
         final ExternalSpreadsheetCompiler converter = new ExternalSpreadsheetCompiler();
         final List listeners = new ArrayList();

Modified: labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/parser/DefaultGeneratorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/parser/DefaultGeneratorTest.java	2007-05-01 13:06:39 UTC (rev 11554)
+++ labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/parser/DefaultGeneratorTest.java	2007-05-01 13:34:29 UTC (rev 11555)
@@ -38,9 +38,12 @@
 	}
 	
 	public void testAddColumns() {
-		Row r = new Row(1);
-		r.addCell(new Cell(r, new Column("col1"), "value1"));
-		r.addCell(new Cell(r, new Column("col2"), "value2"));
+		Column[] columns = {new Column("col1"), new Column("col2")};
+		Row r = new Row(1, columns);
+		r.getCell(0).setValue("value1");
+		r.getCell(1).setValue("value2");
+//		r.addCell(new Cell(r, new Column("col1"), "value1"));
+//		r.addCell(new Cell(r, new Column("col2"), "value2"));
 		g.generate("rt3", r);
 		String drl = g.getDrl();
 		assertEquals("1 value1 value2\n\n", drl);

Modified: labs/jbossrules/trunk/drools-decisiontables/src/test/resources/templates/test_template2.drl
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/test/resources/templates/test_template2.drl	2007-05-01 13:06:39 UTC (rev 11554)
+++ labs/jbossrules/trunk/drools-decisiontables/src/test/resources/templates/test_template2.drl	2007-05-01 13:34:29 UTC (rev 11555)
@@ -18,8 +18,8 @@
 rule "some stuff @{row.rowNumber}"
 	when
 		Foo(myObject.getColour().equals(@{colour}),
-		myObject.size () > @{minSize@},
-		myObject.size () < @{maxSize@})
+		myObject.size () > @{minSize},
+		myObject.size () < @{maxSize})
 	then
 		myObject.setIsValid(@{valida});
 		myObject.setIsValid(@{validb0}, @{validb1});




More information about the jboss-svn-commits mailing list