[jboss-svn-commits] JBL Code SVN: r14337 - in labs/jbossrules/trunk/drools-decisiontables/src: main/java/org/drools/decisiontable/parser and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Aug 17 18:44:15 EDT 2007
Author: fmeyer
Date: 2007-08-17 18:44:15 -0400 (Fri, 17 Aug 2007)
New Revision: 14337
Modified:
labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/model/Rule.java
labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/ActionType.java
labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/DefaultRuleSheetListener.java
labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/xls/ExcelParser.java
labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/model/RuleRenderTest.java
labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/parser/ActionTypeTest.java
Log:
JBRULES-1077: Refactored Decision tables to have ruleflow-group attribute column
Modified: labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/model/Rule.java
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/model/Rule.java 2007-08-17 20:18:41 UTC (rev 14336)
+++ labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/model/Rule.java 2007-08-17 22:44:15 UTC (rev 14337)
@@ -49,6 +49,8 @@
private String _activationGroup; // RIK: New variable to the Rule class (Set the
// activation-group parameter of the rule tag)
+ private String _ruleFlowGroup;
+
private String _agendaGroup; // SJW: New variable to the Rule class (Set the
// agenda-group parameter of the rule tag
@@ -111,6 +113,10 @@
out.writeLine( "\tduration " + this._duration );
}
+ if ( this._ruleFlowGroup != null ) {
+ out.writeLine( "\truleflow-group \"" + this._ruleFlowGroup + "\"" );
+ }
+
out.writeLine( "\twhen" );
renderDRL( this._lhs,
out );
@@ -232,6 +238,14 @@
this._activationGroup = value;
}
+ public void setRuleFlowGroup(final String value) {
+ this._ruleFlowGroup = value;
+ }
+
+ public String getRuleFlowGroup() {
+ return this._ruleFlowGroup;
+ }
+
public String getActivationGroup() {
return this._activationGroup;
}
Modified: labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/ActionType.java
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/ActionType.java 2007-08-17 20:18:41 UTC (rev 14336)
+++ labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/ActionType.java 2007-08-17 22:44:15 UTC (rev 14337)
@@ -56,6 +56,8 @@
// AGENDA-GROUP is used to set the agenda-group parameter of a rule tag
public static final int AGENDAGROUP = 8;
+ public static final int RULEFLOWGROUP = 9;
+
int type;
private SourceBuilder sourceBuilder = null;
@@ -90,6 +92,7 @@
final String value,
final int column,
final int row) {
+
if ( value.toUpperCase().startsWith( "U" ) || value.toUpperCase().equals( "NO-LOOP" ) ) // if the title cell
// value starts with
// "U" then put a
@@ -99,6 +102,10 @@
{
actionTypeMap.put( new Integer( column ),
new ActionType( ActionType.NOLOOP ) );
+ } else if ( value.toUpperCase().equals( "RULEFLOW-GROUP" ) || value.toUpperCase().startsWith( "R" ) ) {
+ actionTypeMap.put( new Integer( column ),
+ new ActionType( ActionType.RULEFLOWGROUP ) );
+
} else if ( value.toUpperCase().equals( "AGENDA-GROUP" ) ) // if the title cell
// value equals "AGENDA-GROUP"
// then put a
Modified: labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/DefaultRuleSheetListener.java
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/DefaultRuleSheetListener.java 2007-08-17 20:18:41 UTC (rev 14336)
+++ labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/DefaultRuleSheetListener.java 2007-08-17 22:44:15 UTC (rev 14337)
@@ -61,36 +61,36 @@
public class DefaultRuleSheetListener
implements
RuleSheetListener {
-
+
//keywords
- public static final String FUNCTIONS_TAG = "Functions";
- public static final String IMPORT_TAG = "Import";
- public static final String SEQUENTIAL_FLAG = "Sequential";
- public static final String VARIABLES_TAG = "Variables";
- public static final String RULE_TABLE_TAG = "RuleTable";
- public static final String RULESET_TAG = "RuleSet";
- private static final int ACTION_ROW = 1;
- private static final int OBJECT_TYPE_ROW = 2;
- private static final int CODE_ROW = 3;
- private static final int LABEL_ROW = 4;
+ public static final String FUNCTIONS_TAG = "Functions";
+ public static final String IMPORT_TAG = "Import";
+ public static final String SEQUENTIAL_FLAG = "Sequential";
+ public static final String VARIABLES_TAG = "Variables";
+ public static final String RULE_TABLE_TAG = "RuleTable";
+ public static final String RULESET_TAG = "RuleSet";
+ private static final int ACTION_ROW = 1;
+ private static final int OBJECT_TYPE_ROW = 2;
+ private static final int CODE_ROW = 3;
+ private static final int LABEL_ROW = 4;
//state machine variables for this parser
- private boolean _isInRuleTable = false;
- private int _ruleRow;
- private int _ruleStartColumn;
- private int _ruleStartRow;
- private Rule _currentRule;
- private String _currentRulePrefix;
- private boolean _currentSequentialFlag = false; // indicates that we are in sequential mode
+ private boolean _isInRuleTable = false;
+ private int _ruleRow;
+ private int _ruleStartColumn;
+ private int _ruleStartRow;
+ private Rule _currentRule;
+ private String _currentRulePrefix;
+ private boolean _currentSequentialFlag = false; // indicates that we are in sequential mode
//accumulated output
- private Map _actions;
- private final HashMap _cellComments = new HashMap();
- private final List _ruleList = new LinkedList();
-
+ private Map _actions;
+ private final HashMap _cellComments = new HashMap();
+ private final List _ruleList = new LinkedList();
+
//need to keep an ordered list of this to make conditions appear in the right order
- private List sourceBuilders = new ArrayList();
-
+ private List sourceBuilders = new ArrayList();
+
private final PropertiesSheetListener _propertiesListner = new PropertiesSheetListener();
private final org.drools.rule.Package defaultPackage;
@@ -98,11 +98,11 @@
public DefaultRuleSheetListener() {
this( null );
}
-
- public DefaultRuleSheetListener( final org.drools.rule.Package pkg ) {
+
+ public DefaultRuleSheetListener(final org.drools.rule.Package pkg) {
this.defaultPackage = pkg;
}
-
+
/* (non-Javadoc)
* @see org.drools.decisiontable.parser.RuleSheetListener#getProperties()
*/
@@ -120,7 +120,7 @@
final Package ruleset = buildRuleSet();
return ruleset;
}
-
+
/**
* Add a new rule to the current list of rules
* @param rule
@@ -132,7 +132,7 @@
private Package buildRuleSet() {
final String defaultPackageName = this.defaultPackage != null ? this.defaultPackage.getName() : "rule_table";
final String rulesetName = getProperties().getProperty( DefaultRuleSheetListener.RULESET_TAG,
- defaultPackageName );
+ defaultPackageName );
final Package ruleset = new Package( rulesetName );
for ( final Iterator it = this._ruleList.iterator(); it.hasNext(); ) {
ruleset.addRule( (Rule) it.next() );
@@ -180,8 +180,7 @@
*/
public void newRow(final int rowNumber,
final int columns) {
- if (_currentRule != null)
- flushRule();
+ if ( _currentRule != null ) flushRule();
// nothing to see here... these aren't the droids your looking for..
// move along...
}
@@ -190,15 +189,15 @@
* This makes sure that the rules have all their components added.
* As when there are merged/spanned cells, they may be left out.
*/
- private void flushRule() {
+ private void flushRule() {
for ( Iterator iter = sourceBuilders.iterator(); iter.hasNext(); ) {
SourceBuilder src = (SourceBuilder) iter.next();
- if (src.hasValues()) {
- if (src instanceof LhsBuilder) {
+ if ( src.hasValues() ) {
+ if ( src instanceof LhsBuilder ) {
Condition con = new Condition();
con.setSnippet( src.getResult() );
_currentRule.addCondition( con );
- } else if (src instanceof RhsBuilder ) {
+ } else if ( src instanceof RhsBuilder ) {
Consequence con = new Consequence();
con.setSnippet( src.getResult() );
_currentRule.addConsequence( con );
@@ -206,7 +205,7 @@
src.clearValues();
}
}
-
+
}
/*
@@ -216,19 +215,19 @@
*/
public void newCell(final int row,
final int column,
- final String value,
+ final String value,
int mergedColStart) {
if ( isCellValueEmpty( value ) ) {
return;
}
- if (_isInRuleTable && row == this._ruleStartRow) {
- return;
+ if ( _isInRuleTable && row == this._ruleStartRow ) {
+ return;
}
if ( this._isInRuleTable ) {
processRuleCell( row,
column,
- value,
- mergedColStart);
+ value,
+ mergedColStart );
} else {
processNonRuleCell( row,
column,
@@ -242,7 +241,9 @@
private void initRuleTable(final int row,
final int column,
final String value) {
- preInitRuleTable(row, column, value);
+ preInitRuleTable( row,
+ column,
+ value );
this._isInRuleTable = true;
this._actions = new HashMap();
this.sourceBuilders = new ArrayList();
@@ -258,7 +259,9 @@
this._currentRule = createNewRuleForRow( this._ruleRow );
this._ruleList.add( this._currentRule );
- postInitRuleTable(row, column, value);
+ postInitRuleTable( row,
+ column,
+ value );
}
@@ -293,7 +296,7 @@
if ( this._isInRuleTable ) {
this._currentSequentialFlag = false;
this._isInRuleTable = false;
-
+
}
}
@@ -306,8 +309,9 @@
value );
} else {
this._propertiesListner.newCell( row,
- column,
- value, SheetListener.NON_MERGED);
+ column,
+ value,
+ SheetListener.NON_MERGED );
}
}
@@ -341,11 +345,11 @@
row );
break;
case OBJECT_TYPE_ROW :
- objectTypeRow( row,
+ objectTypeRow( row,
column,
value,
- mergedColStart);
- break;
+ mergedColStart );
+ break;
case CODE_ROW :
codeRow( row,
column,
@@ -355,11 +359,11 @@
labelRow( row,
column,
value );
- break;
+ break;
default :
nextDataCell( row,
- column,
- value );
+ column,
+ value );
break;
}
}
@@ -373,57 +377,57 @@
* A future refactor may be to move away from an "event" based listener.
*/
private void objectTypeRow(final int row,
- final int column,
- final String value,
- final int mergedColStart) {
- if (value.indexOf( "$param" ) > -1 || value.indexOf( "$1" ) > -1) {
- throw new DecisionTableParseException("It looks like you have snippets in the row that is " +
- "meant for column declarations." +
- " Please insert an additional row before the snippets." +
- " Row number: " + (row + 1));
+ final int column,
+ final String value,
+ final int mergedColStart) {
+ if ( value.indexOf( "$param" ) > -1 || value.indexOf( "$1" ) > -1 ) {
+ throw new DecisionTableParseException( "It looks like you have snippets in the row that is " + "meant for column declarations." + " Please insert an additional row before the snippets." + " Row number: " + (row + 1) );
}
- ActionType action = getActionForColumn( row, column );
- if (mergedColStart == SheetListener.NON_MERGED) {
- if (action.type == ActionType.CONDITION) {
- SourceBuilder src = new LhsBuilder(value);
- action.setSourceBuilder(src);
- this.sourceBuilders.add(src);
-
- } else if (action.type == ActionType.ACTION) {
- SourceBuilder src = new RhsBuilder(value);
- action.setSourceBuilder(src);
- this.sourceBuilders.add(src);
+ ActionType action = getActionForColumn( row,
+ column );
+ if ( mergedColStart == SheetListener.NON_MERGED ) {
+ if ( action.type == ActionType.CONDITION ) {
+ SourceBuilder src = new LhsBuilder( value );
+ action.setSourceBuilder( src );
+ this.sourceBuilders.add( src );
+
+ } else if ( action.type == ActionType.ACTION ) {
+ SourceBuilder src = new RhsBuilder( value );
+ action.setSourceBuilder( src );
+ this.sourceBuilders.add( src );
}
} else {
- if (column == mergedColStart) {
- if (action.type == ActionType.CONDITION) {
- action.setSourceBuilder(new LhsBuilder(value));
+ if ( column == mergedColStart ) {
+ if ( action.type == ActionType.CONDITION ) {
+ action.setSourceBuilder( new LhsBuilder( value ) );
this.sourceBuilders.add( action.getSourceBuilder() );
- } else if (action.type == ActionType.ACTION) {
- action.setSourceBuilder(new RhsBuilder(value));
+ } else if ( action.type == ActionType.ACTION ) {
+ action.setSourceBuilder( new RhsBuilder( value ) );
this.sourceBuilders.add( action.getSourceBuilder() );
}
} else {
- ActionType startOfMergeAction = getActionForColumn( row, mergedColStart );
+ ActionType startOfMergeAction = getActionForColumn( row,
+ mergedColStart );
action.setSourceBuilder( startOfMergeAction.getSourceBuilder() );
}
-
+
}
}
-
+
private void codeRow(final int row,
final int column,
final String value) {
- final ActionType actionType = getActionForColumn( row, column );
- if (actionType.getSourceBuilder() == null) {
- if (actionType.type == ActionType.CONDITION) {
- actionType.setSourceBuilder( new LhsBuilder(null) );
+ final ActionType actionType = getActionForColumn( row,
+ column );
+ if ( actionType.getSourceBuilder() == null ) {
+ if ( actionType.type == ActionType.CONDITION ) {
+ actionType.setSourceBuilder( new LhsBuilder( null ) );
this.sourceBuilders.add( actionType.getSourceBuilder() );
- } else if (actionType.type == ActionType.ACTION) {
- actionType.setSourceBuilder( new RhsBuilder(null) );
+ } else if ( actionType.type == ActionType.ACTION ) {
+ actionType.setSourceBuilder( new RhsBuilder( null ) );
this.sourceBuilders.add( actionType.getSourceBuilder() );
- } else if (actionType.type == ActionType.PRIORITY) {
- actionType.setSourceBuilder( new LhsBuilder(null) );
+ } else if ( actionType.type == ActionType.PRIORITY ) {
+ actionType.setSourceBuilder( new LhsBuilder( null ) );
this.sourceBuilders.add( actionType.getSourceBuilder() );
}
}
@@ -431,21 +435,22 @@
throw new DecisionTableParseException( "Code description - row:" + (row + 1) + " cell number:" + (column + 1) + " - does not contain any code specification. It should !" );
}
- actionType.addTemplate(column, value);
+ actionType.addTemplate( column,
+ value );
}
private void labelRow(final int row,
final int column,
final String value) {
final ActionType actionType = getActionForColumn( row,
- column );
+ column );
if ( !value.trim().equals( "" ) && (actionType.type == ActionType.ACTION || actionType.type == ActionType.CONDITION) ) {
this._cellComments.put( new Integer( column ),
- value );
+ value );
} else {
this._cellComments.put( new Integer( column ),
- "From column: " + Rule.convertColNumToColName( column ) );
+ "From column: " + Rule.convertColNumToColName( column ) );
}
}
@@ -530,7 +535,10 @@
// from the cell
{
this._currentRule.setNoLoop( value );
- } else if ( actionType.type == ActionType.DURATION ) // if the actionType
+ } else if ( actionType.type == ActionType.RULEFLOWGROUP ) {
+ this._currentRule.setRuleFlowGroup( value );
+ }
+ else if ( actionType.type == ActionType.DURATION ) // if the actionType
// type is DURATION
// then creates a
// new duration tag
@@ -548,7 +556,6 @@
private Rule createNewRuleForRow(final int row) {
-
Integer salience = null;
if ( this._currentSequentialFlag ) {
salience = new Integer( Rule.calcSalience( row ) );
@@ -556,15 +563,14 @@
final int spreadsheetRow = row + 1;
final String name = this._currentRulePrefix + "_" + spreadsheetRow;
final Rule rule = new Rule( name,
- salience,
- spreadsheetRow );
+ salience,
+ spreadsheetRow );
rule.setComment( "From row number: " + (spreadsheetRow) );
return rule;
-
+
}
-
// 08 - 16 - 2005 RIK: This function creates a new DURATION
private void createDuration(final int column,
final String value,
@@ -576,7 +582,6 @@
this._currentRule.setDuration( dur );
}
-
private boolean isCellValueEmpty(final String value) {
return value == null || "".equals( value.trim() );
}
Modified: labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/xls/ExcelParser.java
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/xls/ExcelParser.java 2007-08-17 20:18:41 UTC (rev 14336)
+++ labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/xls/ExcelParser.java 2007-08-17 22:44:15 UTC (rev 14337)
@@ -41,15 +41,12 @@
*/
public class ExcelParser
implements
- DecisionTableParser
- {
+ DecisionTableParser {
- public static final String DEFAULT_RULESHEET_NAME = "Decision Tables";
- private Map _listners = new HashMap();
- private boolean _useFirstSheet;
+ public static final String DEFAULT_RULESHEET_NAME = "Decision Tables";
+ private Map _listners = new HashMap();
+ private boolean _useFirstSheet;
-
-
/**
* Define a map of sheet name to listner handlers.
*
@@ -59,119 +56,136 @@
public ExcelParser(final Map sheetListners) {
this._listners = sheetListners;
}
-
+
public ExcelParser(final List sheetListners) {
- this._listners.put(ExcelParser.DEFAULT_RULESHEET_NAME, sheetListners);
- this._useFirstSheet = true;
+ this._listners.put( ExcelParser.DEFAULT_RULESHEET_NAME,
+ sheetListners );
+ this._useFirstSheet = true;
}
public ExcelParser(final SheetListener listener) {
- List listeners = new ArrayList();
- listeners.add(listener);
+ List listeners = new ArrayList();
+ listeners.add( listener );
this._listners.put( ExcelParser.DEFAULT_RULESHEET_NAME,
- listeners );
+ listeners );
this._useFirstSheet = true;
}
- public void parseFile(InputStream inStream) {
- try {
- Workbook workbook = Workbook.getWorkbook(inStream);
-
- if (_useFirstSheet) {
- Sheet sheet = workbook.getSheet(0);
- processSheet(sheet, (List) _listners.get(DEFAULT_RULESHEET_NAME));
- } else {
- Set sheetNames = _listners.keySet();
- for (Iterator iter = sheetNames.iterator(); iter.hasNext();) {
- String sheetName = (String) iter.next();
- Sheet sheet = workbook.getSheet(sheetName);
- processSheet(sheet, (List)_listners.get(sheetName));
-
- }
- }
- } catch (BiffException e) {
+ public void parseFile(InputStream inStream) {
+ try {
+ Workbook workbook = Workbook.getWorkbook( inStream );
+
+ if ( _useFirstSheet ) {
+ Sheet sheet = workbook.getSheet( 0 );
+ processSheet( sheet,
+ (List) _listners.get( DEFAULT_RULESHEET_NAME ) );
+ } else {
+ Set sheetNames = _listners.keySet();
+ for ( Iterator iter = sheetNames.iterator(); iter.hasNext(); ) {
+ String sheetName = (String) iter.next();
+ Sheet sheet = workbook.getSheet( sheetName );
+ processSheet( sheet,
+ (List) _listners.get( sheetName ) );
+
+ }
+ }
+ } catch ( BiffException e ) {
throw new DecisionTableParseException( "An error occured opening the workbook. ",
- e );
-
- } catch (IOException e) {
+ e );
+
+ } catch ( IOException e ) {
throw new DecisionTableParseException( "Failed to open Excel stream, " + "please check that the content is xls97 format.",
- e );
- }
-
-
- }
+ e );
+ }
- private void processSheet(Sheet sheet, List listeners) {
- int maxRows = sheet.getRows();
-
- Range[] mergedRanges = sheet.getMergedCells();
+ }
-
- for(int i = 0; i < maxRows; i++) {
- Cell[] row = sheet.getRow(i);
- newRow(listeners, i, row.length);
- for (int cellNum = 0; cellNum < row.length; cellNum++) {
- Cell cell = row[cellNum];
-
- Range merged = getRangeIfMerged(cell, mergedRanges);
-
- if (merged != null) {
+ private void processSheet(Sheet sheet,
+ List listeners) {
+ int maxRows = sheet.getRows();
+
+ Range[] mergedRanges = sheet.getMergedCells();
+
+ for ( int i = 0; i < maxRows; i++ ) {
+ Cell[] row = sheet.getRow( i );
+ newRow( listeners,
+ i,
+ row.length );
+ for ( int cellNum = 0; cellNum < row.length; cellNum++ ) {
+ Cell cell = row[cellNum];
+
+ Range merged = getRangeIfMerged( cell,
+ mergedRanges );
+
+ if ( merged != null ) {
Cell topLeft = merged.getTopLeft();
- newCell(listeners, i, cellNum, topLeft.getContents(), topLeft.getColumn());
- } else {
- newCell(listeners, i, cellNum, cell.getContents(), SheetListener.NON_MERGED);
- }
- }
- }
- finishSheet(listeners);
- }
-
- Range getRangeIfMerged(Cell cell, Range[] mergedRanges) {
- for (int i = 0; i < mergedRanges.length; i++) {
- Range r = mergedRanges[i];
- Cell topLeft = r.getTopLeft();
- Cell bottomRight = r.getBottomRight();
- if (cell.getRow() >= topLeft.getRow()
- && cell.getRow() <= bottomRight.getRow()
- && cell.getColumn() >= topLeft.getColumn()
- && cell.getColumn() <= bottomRight.getColumn()
- ) {
- return r;
- }
- }
- return null;
- }
+ newCell( listeners,
+ i,
+ cellNum,
+ topLeft.getContents(),
+ topLeft.getColumn() );
+ } else {
+ newCell( listeners,
+ i,
+ cellNum,
+ cell.getContents(),
+ SheetListener.NON_MERGED );
+ }
+ }
+ }
+ finishSheet( listeners );
+ }
- static String removeTrailingZero(String stringVal) {
+ Range getRangeIfMerged(Cell cell,
+ Range[] mergedRanges) {
+ for ( int i = 0; i < mergedRanges.length; i++ ) {
+ Range r = mergedRanges[i];
+ Cell topLeft = r.getTopLeft();
+ Cell bottomRight = r.getBottomRight();
+ if ( cell.getRow() >= topLeft.getRow() && cell.getRow() <= bottomRight.getRow() && cell.getColumn() >= topLeft.getColumn() && cell.getColumn() <= bottomRight.getColumn() ) {
+ return r;
+ }
+ }
+ return null;
+ }
+
+ static String removeTrailingZero(String stringVal) {
if ( stringVal.endsWith( ".0" ) ) {
stringVal = stringVal.substring( 0,
stringVal.length() - 2 );
}
return stringVal;
}
-
- private void finishSheet(List listeners) {
- for (Iterator it = listeners.iterator(); it.hasNext();) {
- SheetListener listener = (SheetListener) it.next();
- listener.finishSheet();
- }
- }
- private void newRow(List listeners, int row, int cols) {
- for (Iterator it = listeners.iterator(); it.hasNext();) {
- SheetListener listener = (SheetListener) it.next();
- listener.newRow(row, cols);
- }
- }
- public void newCell(List listeners, int row,
- int column,
- String value,
- int mergedColStart) {
- for (Iterator it = listeners.iterator(); it.hasNext();) {
- SheetListener listener = (SheetListener) it.next();
- listener.newCell(row, column, value, mergedColStart);
- }
+
+ private void finishSheet(List listeners) {
+ for ( Iterator it = listeners.iterator(); it.hasNext(); ) {
+ SheetListener listener = (SheetListener) it.next();
+ listener.finishSheet();
+ }
}
+ private void newRow(List listeners,
+ int row,
+ int cols) {
+ for ( Iterator it = listeners.iterator(); it.hasNext(); ) {
+ SheetListener listener = (SheetListener) it.next();
+ listener.newRow( row,
+ cols );
+ }
+ }
+ public void newCell(List listeners,
+ int row,
+ int column,
+ String value,
+ int mergedColStart) {
+ for ( Iterator it = listeners.iterator(); it.hasNext(); ) {
+ SheetListener listener = (SheetListener) it.next();
+ listener.newCell( row,
+ column,
+ value,
+ mergedColStart );
+ }
+ }
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/model/RuleRenderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/model/RuleRenderTest.java 2007-08-17 20:18:41 UTC (rev 14336)
+++ labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/model/RuleRenderTest.java 2007-08-17 22:44:15 UTC (rev 14337)
@@ -64,15 +64,17 @@
rule.setActivationGroup( "foo" );
rule.setNoLoop( "true" );
+ rule.setRuleFlowGroup( "ruleflowgroup" );
DRLOutput out = new DRLOutput();
rule.renderDRL( out );
String result = out.toString();
+
+ assertTrue(result.indexOf( "ruleflow-group \"ruleflowgroup\"" ) > -1 );
assertTrue(result.indexOf( "no-loop true" ) > -1);
assertTrue(result.indexOf( "activation-group \"foo\"" ) > -1);
-
}
public void testSalienceCalculator() {
Modified: labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/parser/ActionTypeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/parser/ActionTypeTest.java 2007-08-17 20:18:41 UTC (rev 14336)
+++ labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/parser/ActionTypeTest.java 2007-08-17 22:44:15 UTC (rev 14337)
@@ -36,10 +36,11 @@
ActionType.addNewActionType( actionTypeMap, "NO-LOOP", 0, 1 );
type = (ActionType) actionTypeMap.get( new Integer(0) );
assertEquals(ActionType.NOLOOP, type.type);
-
-
-
+ actionTypeMap = new HashMap();
+ ActionType.addNewActionType( actionTypeMap, "RULEFLOW-GROUP", 0, 1 );
+ type = (ActionType) actionTypeMap.get( new Integer(0) );
+ assertEquals(ActionType.RULEFLOWGROUP, type.type);
}
}
More information about the jboss-svn-commits
mailing list