InputStream inDTStream = new FileInputStream(ruleSet.getFilepath()+"/"+UDTFilename);
OutputStream outDTStream = new FileOutputStream(ruleSet.getFilepath()+"/"+ruleSet.getDT_XMLName());
dtcompiler.compile(inDTStream, outDTStream);
RulesDirectory rd = new RulesDirectory(path, rulesDirectoryXML);
RuleSet rs = rd.getRuleSet(RName.getRName(ruleset));
EntityFactory ef = rs.newSession().getEntityFactory();
IREntity dt = ef.getDecisiontables();
Iterator<RName> idt = ef.getDecisionTableRNameIterator();
while(idt.hasNext()){
RDecisionTable t = (RDecisionTable) dt.get(idt.next());
t.build(session.getState());
List<IDecisionTableError> errs = t.compile();
for (IDecisionTableError error : errs){
dtcompiler.logError(
t.getName().stringValue(),
t.getFilename(),
"validity check",
error.getMessage(),
0,
"In the "+error.getErrorType().name()+" row "+error.getIndex()+"\r\n"+error.getSource());
}
Coordinate err_RowCol = t.validate();
if(!t.isCompiled() || err_RowCol!=null){
int column = 0;
int row = 0;
if(err_RowCol!=null){
row = err_RowCol.getRow();
column = err_RowCol.getCol();
}
dtcompiler.logError(
t.getName().stringValue(),
t.getFilename(),
"validity check",
"Decision Table did not compile",
0,
"A problem may have been found on row "+row+" and column "+column);
}
}
dtcompiler.printErrors(err, NumErrorsToReport);
err.println("Total Errors Found: "+dtcompiler.getErrors().size());
if(dtcompiler.getErrors().size() == 0){
rd = new RulesDirectory(path, rulesDirectoryXML);
rs = rd.getRuleSet(RName.getRName(ruleset));
PrintStream btables = new PrintStream(rs.getWorkingdirectory()+"balanced.txt");
rs.newSession().printBalancedTables(btables);
RulesAdminService admin = new RulesAdminService(rs.newSession(),rd);
List tables = admin.getDecisionTables(rs.getName());
for(Object table : tables){