package org.drools.decisiontable; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.StringReader; import org.drools.RuntimeDroolsException; import org.drools.agent.FileLoader; import org.drools.compiler.DroolsParserException; import org.drools.compiler.PackageBuilder; import org.drools.rule.Package; /** * This is used by the agent when a source file is encountered. * * @author Toni Rikkola * */ public class SourcePackageProvider implements FileLoader { public Package loadPackage(File rm) throws IOException { final FileInputStream fin = new FileInputStream( rm ); final SpreadsheetCompiler converter = new SpreadsheetCompiler(); String drl = converter.compile( fin, InputType.XLS ); fin.close(); PackageBuilder b = new PackageBuilder(); try { b.addPackageFromDrl( new StringReader( drl ) ); if ( b.hasErrors() ) { throw new RuntimeDroolsException( "Error building rules from source: " + b.getErrors() ); } else { return b.getPackage(); } } catch ( DroolsParserException e ) { throw new RuntimeException( e ); } } }