/**
*
*/
package net.fp.rp.drools;
import java.io.InputStream;
import java.io.StringReader;
import java.util.ResourceBundle;
import javax.servlet.ServletContextEvent;
import net.fp.rp.drools.Utility;
import org.apache.log4j.Logger;
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.compiler.PackageBuilder;
import org.drools.decisiontable.InputType;
import org.drools.decisiontable.SpreadsheetCompiler;
import org.drools.rule.Package;
/**
* Allows us to plugin the drools loading to the Servlet mechanism
* @author Paul
* Copyright @link www.firstpartners.net/red
*/
public class ContextListener implements javax.servlet.ServletContextListener {
public static RuleBase excelRules = null;
protected final Logger logger = Logger.getLogger(getClass());
public void contextDestroyed(ServletContextEvent event) {
}
public void contextInitialized(ServletContextEvent event) {
try {
ResourceBundle rb = Utility.readPropFile();
logger.debug("Could not find Resource file");
SpreadsheetCompiler converter = new SpreadsheetCompiler();
String xlResource =rb.getString("excel.decisiontable.path");
logger.debug("name of Excel file:"+xlResource);
InputStream is = getClass().getResourceAsStream(xlResource);
String drl = converter.compile(is, InputType.XLS );
if (drl != null) {
PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new StringReader(drl) );
Package pkg = builder.getPackage();
if (pkg != null) {
excelRules = RuleBaseFactory.newRuleBase();
excelRules.addPackage( pkg );
}
}
}
catch (Exception e) {
e.printStackTrace();
}
}
}