/*
* Copyright 2011 Red Hat, Inc. and/or its affiliates.
*
* 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.
*/
package org.drools.workbench.models.guided.dtable.backend;
import org.drools.workbench.models.datamodel.oracle.DataType;
import org.drools.workbench.models.guided.dtable.backend.util.GuidedDecisionTableUpgradeHelper1;
import org.junit.Test;
import org.drools.workbench.models.datamodel.oracle.DataType;
import org.drools.workbench.models.guided.dtable.shared.model.ActionInsertFactCol52;
import org.drools.workbench.models.guided.dtable.shared.model.ActionRetractFactCol52;
import org.drools.workbench.models.guided.dtable.shared.model.ActionSetFieldCol52;
import org.drools.workbench.models.guided.dtable.shared.model.DTCellValue52;
import org.drools.workbench.models.guided.dtable.shared.model.GuidedDecisionTable52;
import org.drools.workbench.models.guided.dtable.shared.model.legacy.ActionInsertFactCol;
import org.drools.workbench.models.guided.dtable.shared.model.legacy.ActionRetractFactCol;
import org.drools.workbench.models.guided.dtable.shared.model.legacy.ActionSetFieldCol;
import org.drools.workbench.models.guided.dtable.shared.model.legacy.AttributeCol;
import org.drools.workbench.models.guided.dtable.shared.model.legacy.ConditionCol;
import org.drools.workbench.models.guided.dtable.shared.model.legacy.GuidedDecisionTable;
import org.drools.workbench.models.guided.dtable.shared.model.legacy.MetadataCol;
import org.drools.workbench.models.datamodel.rule.BaseSingleFieldConstraint;
import java.util.List;
import static org.junit.Assert.*;
@SuppressWarnings("deprecation")
public class GuidedDTModelConversionTest {
private GuidedDecisionTableUpgradeHelper1 upgrader = new GuidedDecisionTableUpgradeHelper1();
@Test
public void testConversion() {
GuidedDecisionTable dt = new GuidedDecisionTable();
dt.tableName = "michael";
MetadataCol md = new MetadataCol();
md.attr = "legacy";
md.defaultValue = "yes";
dt.metadataCols.add( md );
AttributeCol attr = new AttributeCol();
attr.attr = "salience";
attr.defaultValue = "66";
dt.attributeCols.add( attr );
ConditionCol con = new ConditionCol();
con.boundName = "f1";
con.constraintValueType = BaseSingleFieldConstraint.TYPE_LITERAL;
con.factField = "age";
con.factType = "Driver";
con.header = "Driver f1 age";
con.operator = "==";
dt.conditionCols.add( con );
ConditionCol con2 = new ConditionCol();
con2.boundName = "f1";
con2.constraintValueType = BaseSingleFieldConstraint.TYPE_LITERAL;
con2.factField = "name";
con2.factType = "Driver";
con2.header = "Driver f1 name";
con2.operator = "==";
dt.conditionCols.add( con2 );
ConditionCol con3 = new ConditionCol();
con3.boundName = "f1";
con3.constraintValueType = BaseSingleFieldConstraint.TYPE_RET_VALUE;
con3.factField = "rating";
con3.factType = "Driver";
con3.header = "Driver rating";
con3.operator = "==";
dt.conditionCols.add( con3 );
ConditionCol con4 = new ConditionCol();
con4.boundName = "f2";
con4.constraintValueType = BaseSingleFieldConstraint.TYPE_PREDICATE;
con4.factType = "Driver";
con4.header = "Driver 2 pimp";
con4.factField = "(not needed)";
dt.conditionCols.add( con4 );
ActionInsertFactCol ins = new ActionInsertFactCol();
ins.boundName = "ins";
ins.factType = "Cheese";
ins.factField = "price";
ins.type = DataType.TYPE_NUMERIC_INTEGER;
dt.actionCols.add( ins );
ActionRetractFactCol ret = new ActionRetractFactCol();
ret.boundName = "ret1";
dt.actionCols.add( ret );
ActionSetFieldCol set = new ActionSetFieldCol();
set.boundName = "f1";
set.factField = "goo1";
set.type = DataType.TYPE_STRING;
dt.actionCols.add( set );
ActionSetFieldCol set2 = new ActionSetFieldCol();
set2.boundName = "f1";
set2.factField = "goo2";
set2.defaultValue = "whee";
set2.type = DataType.TYPE_STRING;
dt.actionCols.add( set2 );
dt.data = new String[][]{
new String[]{ "1", "desc", "metar1", "saliencer1", "c1r1", "c2r1", "c3r1", "c4r1", "a1r1", "a2r1", "a3r1", "a4r1" },
new String[]{ "2", "desc", "metar2", "saliencer2", "c1r2", "c2r2", "c3r2", "c4r2", "a1r2", "a2r2", "a3r2", "a4r2" }
};
String[][] expected = new String[][]{
new String[]{ "1", "desc", "metar1", "saliencer1", "c1r1", "c2r1", "c3r1", "c4r1", "a1r1", "ret1", "a3r1", "a4r1" },
new String[]{ "2", "desc", "metar2", "saliencer2", "c1r2", "c2r2", "c3r2", "c4r2", "a1r2", "ret1", "a3r2", "a4r2" }
};
GuidedDecisionTable52 tsdt = upgrader.upgrade( dt );
assertEquals( "michael",
tsdt.getTableName() );
assertEquals( GuidedDecisionTable52.TableFormat.EXTENDED_ENTRY,
tsdt.getTableFormat() );
assertEquals( 1,
tsdt.getMetadataCols().size() );
assertEquals( "legacy",
tsdt.getMetadataCols().get( 0 ).getMetadata() );
assertEquals( "yes",
tsdt.getMetadataCols().get( 0 ).getDefaultValue().getStringValue() );
assertEquals( 1,
tsdt.getAttributeCols().size() );
assertEquals( "salience",
tsdt.getAttributeCols().get( 0 ).getAttribute() );
assertEquals( "66",
tsdt.getAttributeCols().get( 0 ).getDefaultValue().getStringValue() );
assertEquals( 2,
tsdt.getConditions().size() );
assertEquals( "f1",
tsdt.getConditionPattern( "f1" ).getBoundName() );
assertEquals( "Driver",
tsdt.getConditionPattern( "f1" ).getFactType() );
assertEquals( "f2",
tsdt.getConditionPattern( "f2" ).getBoundName() );
assertEquals( "Driver",
tsdt.getConditionPattern( "f2" ).getFactType() );
assertEquals( 3,
tsdt.getConditionPattern( "f1" ).getChildColumns().size() );
assertEquals( 1,
tsdt.getConditionPattern( "f2" ).getChildColumns().size() );
assertEquals( BaseSingleFieldConstraint.TYPE_LITERAL,
tsdt.getConditionPattern( "f1" ).getChildColumns().get( 0 ).getConstraintValueType() );
assertEquals( "age",
tsdt.getConditionPattern( "f1" ).getChildColumns().get( 0 ).getFactField() );
assertEquals( "Driver",
tsdt.getPattern( tsdt.getConditionPattern( "f1" ).getChildColumns().get( 0 ) ).getFactType() );
assertEquals( "Driver f1 age",
tsdt.getConditionPattern( "f1" ).getChildColumns().get( 0 ).getHeader() );
assertEquals( "==",
tsdt.getConditionPattern( "f1" ).getChildColumns().get( 0 ).getOperator() );
assertEquals( BaseSingleFieldConstraint.TYPE_LITERAL,
tsdt.getConditionPattern( "f1" ).getChildColumns().get( 1 ).getConstraintValueType() );
assertEquals( "name",
tsdt.getConditionPattern( "f1" ).getChildColumns().get( 1 ).getFactField() );
assertEquals( "Driver",
tsdt.getPattern( tsdt.getConditionPattern( "f1" ).getChildColumns().get( 1 ) ).getFactType() );
assertEquals( "Driver f1 name",
tsdt.getConditionPattern( "f1" ).getChildColumns().get( 1 ).getHeader() );
assertEquals( "==",
tsdt.getConditionPattern( "f1" ).getChildColumns().get( 1 ).getOperator() );
assertEquals( BaseSingleFieldConstraint.TYPE_RET_VALUE,
tsdt.getConditionPattern( "f1" ).getChildColumns().get( 2 ).getConstraintValueType() );
assertEquals( "rating",
tsdt.getConditionPattern( "f1" ).getChildColumns().get( 2 ).getFactField() );
assertEquals( "Driver",
tsdt.getPattern( tsdt.getConditionPattern( "f1" ).getChildColumns().get( 2 ) ).getFactType() );
assertEquals( "Driver rating",
tsdt.getConditionPattern( "f1" ).getChildColumns().get( 2 ).getHeader() );
assertEquals( "==",
tsdt.getConditionPattern( "f1" ).getChildColumns().get( 2 ).getOperator() );
assertEquals( BaseSingleFieldConstraint.TYPE_PREDICATE,
tsdt.getConditionPattern( "f2" ).getChildColumns().get( 0 ).getConstraintValueType() );
assertEquals( "(not needed)",
tsdt.getConditionPattern( "f2" ).getChildColumns().get( 0 ).getFactField() );
assertEquals( "Driver",
tsdt.getPattern( tsdt.getConditionPattern( "f2" ).getChildColumns().get( 0 ) ).getFactType() );
assertEquals( "Driver 2 pimp",
tsdt.getConditionPattern( "f2" ).getChildColumns().get( 0 ).getHeader() );
assertEquals( 4,
tsdt.getActionCols().size() );
ActionInsertFactCol52 a1 = (ActionInsertFactCol52) tsdt.getActionCols().get( 0 );
assertEquals( "ins",
a1.getBoundName() );
assertEquals( "Cheese",
a1.getFactType() );
assertEquals( "price",
a1.getFactField() );
assertEquals( DataType.TYPE_NUMERIC_INTEGER,
a1.getType() );
ActionRetractFactCol52 a2 = (ActionRetractFactCol52) tsdt.getActionCols().get( 1 );
assertNotNull( a2 );
ActionSetFieldCol52 a3 = (ActionSetFieldCol52) tsdt.getActionCols().get( 2 );
assertEquals( "f1",
a3.getBoundName() );
assertEquals( "goo1",
a3.getFactField() );
assertEquals( DataType.TYPE_STRING,
a3.getType() );
ActionSetFieldCol52 a4 = (ActionSetFieldCol52) tsdt.getActionCols().get( 3 );
assertEquals( "f1",
a4.getBoundName() );
assertEquals( "goo2",
a4.getFactField() );
assertEquals( "whee",
a4.getDefaultValue().getStringValue() );
assertEquals( DataType.TYPE_STRING,
a4.getType() );
assertEquals( 2,
tsdt.getData().size() );
isRowEquivalent( tsdt.getData().get( 0 ),
expected[ 0 ] );
isRowEquivalent( tsdt.getData().get( 1 ),
expected[ 1 ] );
}
@Test
public void testConversionPatternGrouping() {
GuidedDecisionTable dt = new GuidedDecisionTable();
dt.tableName = "michael";
MetadataCol md = new MetadataCol();
md.attr = "legacy";
md.defaultValue = "yes";
dt.metadataCols.add( md );
AttributeCol attr = new AttributeCol();
attr.attr = "salience";
attr.defaultValue = "66";
dt.attributeCols.add( attr );
ConditionCol con = new ConditionCol();
con.boundName = "f1";
con.constraintValueType = BaseSingleFieldConstraint.TYPE_LITERAL;
con.factField = "age";
con.factType = "Driver";
con.header = "Driver f1 age";
con.operator = "==";
dt.conditionCols.add( con );
ConditionCol con2 = new ConditionCol();
con2.boundName = "f2";
con2.constraintValueType = BaseSingleFieldConstraint.TYPE_LITERAL;
con2.factField = "name";
con2.factType = "Person";
con2.header = "Person f2 name";
con2.operator = "==";
dt.conditionCols.add( con2 );
ConditionCol con3 = new ConditionCol();
con3.boundName = "f1";
con3.constraintValueType = BaseSingleFieldConstraint.TYPE_RET_VALUE;
con3.factField = "rating";
con3.factType = "Driver";
con3.header = "Driver rating";
con3.operator = "==";
dt.conditionCols.add( con3 );
ConditionCol con4 = new ConditionCol();
con4.boundName = "f2";
con4.constraintValueType = BaseSingleFieldConstraint.TYPE_PREDICATE;
con4.factType = "Person";
con4.header = "Person f2 not needed";
con4.factField = "(not needed)";
dt.conditionCols.add( con4 );
ActionInsertFactCol ins = new ActionInsertFactCol();
ins.boundName = "ins";
ins.factType = "Cheese";
ins.factField = "price";
ins.type = DataType.TYPE_NUMERIC_INTEGER;
dt.actionCols.add( ins );
ActionRetractFactCol ret = new ActionRetractFactCol();
ret.boundName = "ret1";
dt.actionCols.add( ret );
ActionSetFieldCol set = new ActionSetFieldCol();
set.boundName = "f1";
set.factField = "goo1";
set.type = DataType.TYPE_STRING;
dt.actionCols.add( set );
ActionSetFieldCol set2 = new ActionSetFieldCol();
set2.boundName = "f1";
set2.factField = "goo2";
set2.defaultValue = "whee";
set2.type = DataType.TYPE_STRING;
dt.actionCols.add( set2 );
dt.data = new String[][]{
new String[]{ "1", "desc", "metar1", "saliencer1", "f1c1r1", "f2c1r1", "f1c2r1", "f2c2r1", "a1r1", "a2r1", "a3r1", "a4r1" },
new String[]{ "2", "desc", "metar2", "saliencer2", "f1c1r2", "f2c1r2", "f1c2r2", "f2c2r2", "a1r2", "a2r2", "a3r2", "a4r2" }
};
String[][] expected = new String[][]{
new String[]{ "1", "desc", "metar1", "saliencer1", "f1c1r1", "f1c2r1", "f2c1r1", "f2c2r1", "a1r1", "ret1", "a3r1", "a4r1" },
new String[]{ "2", "desc", "metar2", "saliencer2", "f1c1r2", "f1c2r2", "f2c1r2", "f2c2r2", "a1r2", "ret1", "a3r2", "a4r2" }
};
GuidedDecisionTable52 tsdt = upgrader.upgrade( dt );
assertEquals( "michael",
tsdt.getTableName() );
assertEquals( 1,
tsdt.getMetadataCols().size() );
assertEquals( "legacy",
tsdt.getMetadataCols().get( 0 ).getMetadata() );
assertEquals( "yes",
tsdt.getMetadataCols().get( 0 ).getDefaultValue().getStringValue() );
assertEquals( 1,
tsdt.getAttributeCols().size() );
assertEquals( "salience",
tsdt.getAttributeCols().get( 0 ).getAttribute() );
assertEquals( "66",
tsdt.getAttributeCols().get( 0 ).getDefaultValue().getStringValue() );
assertEquals( 2,
tsdt.getConditions().size() );
assertEquals( "f1",
tsdt.getConditionPattern( "f1" ).getBoundName() );
assertEquals( "Driver",
tsdt.getConditionPattern( "f1" ).getFactType() );
assertEquals( "f2",
tsdt.getConditionPattern( "f2" ).getBoundName() );
assertEquals( "Person",
tsdt.getConditionPattern( "f2" ).getFactType() );
assertEquals( 2,
tsdt.getConditionPattern( "f1" ).getChildColumns().size() );
assertEquals( 2,
tsdt.getConditionPattern( "f2" ).getChildColumns().size() );
assertEquals( BaseSingleFieldConstraint.TYPE_LITERAL,
tsdt.getConditionPattern( "f1" ).getChildColumns().get( 0 ).getConstraintValueType() );
assertEquals( "age",
tsdt.getConditionPattern( "f1" ).getChildColumns().get( 0 ).getFactField() );
assertEquals( "Driver",
tsdt.getPattern( tsdt.getConditionPattern( "f1" ).getChildColumns().get( 0 ) ).getFactType() );
assertEquals( "Driver f1 age",
tsdt.getConditionPattern( "f1" ).getChildColumns().get( 0 ).getHeader() );
assertEquals( "==",
tsdt.getConditionPattern( "f1" ).getChildColumns().get( 0 ).getOperator() );
assertEquals( BaseSingleFieldConstraint.TYPE_RET_VALUE,
tsdt.getConditionPattern( "f1" ).getChildColumns().get( 1 ).getConstraintValueType() );
assertEquals( "rating",
tsdt.getConditionPattern( "f1" ).getChildColumns().get( 1 ).getFactField() );
assertEquals( "Driver",
tsdt.getPattern( tsdt.getConditionPattern( "f1" ).getChildColumns().get( 1 ) ).getFactType() );
assertEquals( "Driver rating",
tsdt.getConditionPattern( "f1" ).getChildColumns().get( 1 ).getHeader() );
assertEquals( "==",
tsdt.getConditionPattern( "f1" ).getChildColumns().get( 1 ).getOperator() );
assertEquals( BaseSingleFieldConstraint.TYPE_LITERAL,
tsdt.getConditionPattern( "f2" ).getChildColumns().get( 0 ).getConstraintValueType() );
assertEquals( "name",
tsdt.getConditionPattern( "f2" ).getChildColumns().get( 0 ).getFactField() );
assertEquals( "Person",
tsdt.getPattern( tsdt.getConditionPattern( "f2" ).getChildColumns().get( 0 ) ).getFactType() );
assertEquals( "Person f2 name",
tsdt.getConditionPattern( "f2" ).getChildColumns().get( 0 ).getHeader() );
assertEquals( "==",
tsdt.getConditionPattern( "f2" ).getChildColumns().get( 0 ).getOperator() );
assertEquals( BaseSingleFieldConstraint.TYPE_PREDICATE,
tsdt.getConditionPattern( "f2" ).getChildColumns().get( 1 ).getConstraintValueType() );
assertEquals( "(not needed)",
tsdt.getConditionPattern( "f2" ).getChildColumns().get( 1 ).getFactField() );
assertEquals( "Person",
tsdt.getPattern( tsdt.getConditionPattern( "f2" ).getChildColumns().get( 1 ) ).getFactType() );
assertEquals( "Person f2 not needed",
tsdt.getConditionPattern( "f2" ).getChildColumns().get( 1 ).getHeader() );
assertEquals( null,
tsdt.getConditionPattern( "f2" ).getChildColumns().get( 1 ).getOperator() );
assertEquals( 4,
tsdt.getActionCols().size() );
ActionInsertFactCol52 a1 = (ActionInsertFactCol52) tsdt.getActionCols().get( 0 );
assertEquals( "ins",
a1.getBoundName() );
assertEquals( "Cheese",
a1.getFactType() );
assertEquals( "price",
a1.getFactField() );
assertEquals( DataType.TYPE_NUMERIC_INTEGER,
a1.getType() );
ActionRetractFactCol52 a2 = (ActionRetractFactCol52) tsdt.getActionCols().get( 1 );
assertNotNull( a2 );
ActionSetFieldCol52 a3 = (ActionSetFieldCol52) tsdt.getActionCols().get( 2 );
assertEquals( "f1",
a3.getBoundName() );
assertEquals( "goo1",
a3.getFactField() );
assertEquals( DataType.TYPE_STRING,
a3.getType() );
ActionSetFieldCol52 a4 = (ActionSetFieldCol52) tsdt.getActionCols().get( 3 );
assertEquals( "f1",
a4.getBoundName() );
assertEquals( "goo2",
a4.getFactField() );
assertEquals( "whee",
a4.getDefaultValue().getStringValue() );
assertEquals( DataType.TYPE_STRING,
a4.getType() );
assertEquals( 2,
tsdt.getData().size() );
for ( int i = 0; i < 2; i++ ) {
System.out.println( "Row-" + i );
StringBuilder sb = new StringBuilder();
for ( DTCellValue52 c : tsdt.getData().get( i ) ) {
sb.append( c.getStringValue() + ", " );
}
sb.delete( sb.lastIndexOf( "," ),
sb.length() );
System.out.println( sb.toString() );
}
assertEquals( new Integer( 1 ),
(Integer) tsdt.getData().get( 0 ).get( 0 ).getNumericValue() );
assertEquals( "desc",
tsdt.getData().get( 0 ).get( 1 ).getStringValue() );
assertEquals( "metar1",
tsdt.getData().get( 0 ).get( 2 ).getStringValue() );
assertEquals( "saliencer1",
tsdt.getData().get( 0 ).get( 3 ).getStringValue() );
assertEquals( "f1c1r1",
tsdt.getData().get( 0 ).get( 4 ).getStringValue() );
assertEquals( "f1c2r1",
tsdt.getData().get( 0 ).get( 5 ).getStringValue() );
assertEquals( "f2c1r1",
tsdt.getData().get( 0 ).get( 6 ).getStringValue() );
assertEquals( "f2c2r1",
tsdt.getData().get( 0 ).get( 7 ).getStringValue() );
assertEquals( "a1r1",
tsdt.getData().get( 0 ).get( 8 ).getStringValue() );
assertEquals( "ret1",
tsdt.getData().get( 0 ).get( 9 ).getStringValue() );
assertEquals( "a3r1",
tsdt.getData().get( 0 ).get( 10 ).getStringValue() );
assertEquals( "a4r1",
tsdt.getData().get( 0 ).get( 11 ).getStringValue() );
assertEquals( new Integer( 2 ),
(Integer) tsdt.getData().get( 1 ).get( 0 ).getNumericValue() );
assertEquals( "desc",
tsdt.getData().get( 1 ).get( 1 ).getStringValue() );
assertEquals( "metar2",
tsdt.getData().get( 1 ).get( 2 ).getStringValue() );
assertEquals( "saliencer2",
tsdt.getData().get( 1 ).get( 3 ).getStringValue() );
assertEquals( "f1c1r2",
tsdt.getData().get( 1 ).get( 4 ).getStringValue() );
assertEquals( "f1c2r2",
tsdt.getData().get( 1 ).get( 5 ).getStringValue() );
assertEquals( "f2c1r2",
tsdt.getData().get( 1 ).get( 6 ).getStringValue() );
assertEquals( "f2c2r2",
tsdt.getData().get( 1 ).get( 7 ).getStringValue() );
assertEquals( "a1r2",
tsdt.getData().get( 1 ).get( 8 ).getStringValue() );
assertEquals( "ret1",
tsdt.getData().get( 1 ).get( 9 ).getStringValue() );
assertEquals( "a3r2",
tsdt.getData().get( 1 ).get( 10 ).getStringValue() );
assertEquals( "a4r2",
tsdt.getData().get( 1 ).get( 11 ).getStringValue() );
isRowEquivalent( tsdt.getData().get( 0 ),
expected[ 0 ] );
isRowEquivalent( tsdt.getData().get( 1 ),
expected[ 1 ] );
}
private void isRowEquivalent( List<DTCellValue52> row,
String[] array ) {
assertEquals( row.size(),
array.length );
int newRowNum = (Integer) row.get( 0 ).getNumericValue();
int oldRowNum = Integer.valueOf( array[ 0 ] );
assertEquals( newRowNum,
oldRowNum );
for ( int iCol = 1; iCol < row.size(); iCol++ ) {
DTCellValue52 cell = row.get( iCol );
String v1 = cell.getStringValue();
String v2 = array[ iCol ];
assertTrue( isEqualOrNull( v1,
v2 ) );
assertEquals( v1,
v2 );
}
}
@Test
public void testConversionPatternGrouping2() {
GuidedDecisionTable dt = new GuidedDecisionTable();
dt.tableName = "michael";
ConditionCol con = new ConditionCol();
con.boundName = "z1";
con.constraintValueType = BaseSingleFieldConstraint.TYPE_LITERAL;
con.factField = "age";
con.factType = "Driver";
con.header = "Driver z1 age";
con.operator = "==";
dt.conditionCols.add( con );
ConditionCol con2 = new ConditionCol();
con2.boundName = "f1";
con2.constraintValueType = BaseSingleFieldConstraint.TYPE_LITERAL;
con2.factField = "name";
con2.factType = "Person";
con2.header = "Person f1 name";
con2.operator = "==";
dt.conditionCols.add( con2 );
ConditionCol con3 = new ConditionCol();
con3.boundName = "z1";
con3.constraintValueType = BaseSingleFieldConstraint.TYPE_RET_VALUE;
con3.factField = "rating";
con3.factType = "Driver";
con3.header = "Driver rating";
con3.operator = "==";
dt.conditionCols.add( con3 );
ConditionCol con4 = new ConditionCol();
con4.boundName = "f2";
con4.constraintValueType = BaseSingleFieldConstraint.TYPE_PREDICATE;
con4.factType = "Person2";
con4.header = "Person2 f2 not needed";
con4.factField = "(not needed)";
dt.conditionCols.add( con4 );
dt.data = new String[][]{
new String[]{ "1", "desc", "z1c1r1", "f1c1r1", "z1c2r1", "f2c1r1" },
new String[]{ "2", "desc", "z1c1r2", "f1c1r2", "z1c2r2", "f2c1r2" }
};
String[][] expected = new String[][]{
new String[]{ "1", "desc", "z1c1r1", "z1c2r1", "f1c1r1", "f2c1r1" },
new String[]{ "2", "desc", "z1c1r2", "z1c2r2", "f1c1r2", "f2c1r2" }
};
GuidedDecisionTable52 tsdt = upgrader.upgrade( dt );
assertEquals( "michael",
tsdt.getTableName() );
assertEquals( 0,
tsdt.getMetadataCols().size() );
assertEquals( 0,
tsdt.getAttributeCols().size() );
assertEquals( 3,
tsdt.getConditions().size() );
assertEquals( "z1",
tsdt.getConditionPattern( "z1" ).getBoundName() );
assertEquals( "Driver",
tsdt.getConditionPattern( "z1" ).getFactType() );
assertEquals( "f1",
tsdt.getConditionPattern( "f1" ).getBoundName() );
assertEquals( "Person",
tsdt.getConditionPattern( "f1" ).getFactType() );
assertEquals( "f2",
tsdt.getConditionPattern( "f2" ).getBoundName() );
assertEquals( "Person2",
tsdt.getConditionPattern( "f2" ).getFactType() );
assertEquals( 2,
tsdt.getConditionPattern( "z1" ).getChildColumns().size() );
assertEquals( 1,
tsdt.getConditionPattern( "f1" ).getChildColumns().size() );
assertEquals( 1,
tsdt.getConditionPattern( "f2" ).getChildColumns().size() );
assertEquals( BaseSingleFieldConstraint.TYPE_LITERAL,
tsdt.getConditionPattern( "z1" ).getChildColumns().get( 0 ).getConstraintValueType() );
assertEquals( "age",
tsdt.getConditionPattern( "z1" ).getChildColumns().get( 0 ).getFactField() );
assertEquals( "Driver",
tsdt.getPattern( tsdt.getConditionPattern( "z1" ).getChildColumns().get( 0 ) ).getFactType() );
assertEquals( "Driver z1 age",
tsdt.getConditionPattern( "z1" ).getChildColumns().get( 0 ).getHeader() );
assertEquals( "==",
tsdt.getConditionPattern( "z1" ).getChildColumns().get( 0 ).getOperator() );
assertEquals( BaseSingleFieldConstraint.TYPE_RET_VALUE,
tsdt.getConditionPattern( "z1" ).getChildColumns().get( 1 ).getConstraintValueType() );
assertEquals( "rating",
tsdt.getConditionPattern( "z1" ).getChildColumns().get( 1 ).getFactField() );
assertEquals( "Driver",
tsdt.getPattern( tsdt.getConditionPattern( "z1" ).getChildColumns().get( 1 ) ).getFactType() );
assertEquals( "Driver rating",
tsdt.getConditionPattern( "z1" ).getChildColumns().get( 1 ).getHeader() );
assertEquals( "==",
tsdt.getConditionPattern( "z1" ).getChildColumns().get( 1 ).getOperator() );
assertEquals( BaseSingleFieldConstraint.TYPE_LITERAL,
tsdt.getConditionPattern( "f1" ).getChildColumns().get( 0 ).getConstraintValueType() );
assertEquals( "name",
tsdt.getConditionPattern( "f1" ).getChildColumns().get( 0 ).getFactField() );
assertEquals( "Person",
tsdt.getPattern( tsdt.getConditionPattern( "f1" ).getChildColumns().get( 0 ) ).getFactType() );
assertEquals( "Person f1 name",
tsdt.getConditionPattern( "f1" ).getChildColumns().get( 0 ).getHeader() );
assertEquals( "==",
tsdt.getConditionPattern( "f1" ).getChildColumns().get( 0 ).getOperator() );
assertEquals( BaseSingleFieldConstraint.TYPE_PREDICATE,
tsdt.getConditionPattern( "f2" ).getChildColumns().get( 0 ).getConstraintValueType() );
assertEquals( "(not needed)",
tsdt.getConditionPattern( "f2" ).getChildColumns().get( 0 ).getFactField() );
assertEquals( "Person2",
tsdt.getPattern( tsdt.getConditionPattern( "f2" ).getChildColumns().get( 0 ) ).getFactType() );
assertEquals( "Person2 f2 not needed",
tsdt.getConditionPattern( "f2" ).getChildColumns().get( 0 ).getHeader() );
assertEquals( null,
tsdt.getConditionPattern( "f2" ).getChildColumns().get( 0 ).getOperator() );
assertEquals( 2,
tsdt.getData().size() );
for ( int i = 0; i < 2; i++ ) {
System.out.println( "Row-" + i );
StringBuilder sb = new StringBuilder();
for ( DTCellValue52 c : tsdt.getData().get( i ) ) {
sb.append( c.getStringValue() + ", " );
}
sb.delete( sb.lastIndexOf( "," ),
sb.length() );
System.out.println( sb.toString() );
}
assertEquals( new Integer( 1 ),
(Integer) tsdt.getData().get( 0 ).get( 0 ).getNumericValue() );
assertEquals( "desc",
tsdt.getData().get( 0 ).get( 1 ).getStringValue() );
assertEquals( "z1c1r1",
tsdt.getData().get( 0 ).get( 2 ).getStringValue() );
assertEquals( "z1c2r1",
tsdt.getData().get( 0 ).get( 3 ).getStringValue() );
assertEquals( "f1c1r1",
tsdt.getData().get( 0 ).get( 4 ).getStringValue() );
assertEquals( "f2c1r1",
tsdt.getData().get( 0 ).get( 5 ).getStringValue() );
assertEquals( new Integer( 2 ),
(Integer) tsdt.getData().get( 1 ).get( 0 ).getNumericValue() );
assertEquals( "desc",
tsdt.getData().get( 1 ).get( 1 ).getStringValue() );
assertEquals( "z1c1r2",
tsdt.getData().get( 1 ).get( 2 ).getStringValue() );
assertEquals( "z1c2r2",
tsdt.getData().get( 1 ).get( 3 ).getStringValue() );
assertEquals( "f1c1r2",
tsdt.getData().get( 1 ).get( 4 ).getStringValue() );
assertEquals( "f2c1r2",
tsdt.getData().get( 1 ).get( 5 ).getStringValue() );
isRowEquivalent( tsdt.getData().get( 0 ),
expected[ 0 ] );
isRowEquivalent( tsdt.getData().get( 1 ),
expected[ 1 ] );
}
private boolean isEqualOrNull( Object v1,
Object v2 ) {
if ( v1 == null && v2 == null ) {
return true;
}
if ( v1 != null && v2 == null ) {
return false;
}
if ( v1 == null && v2 != null ) {
return false;
}
return v1.equals( v2 );
}
}