package org.jboss.seam.drools;
import static org.jboss.seam.ScopeType.APPLICATION;
import static org.jboss.seam.annotations.Install.BUILT_IN;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.drools.decisiontable.InputType;
import org.jboss.seam.Component;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.intercept.BypassInterceptors;
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.log.LogProvider;
import org.jboss.seam.log.Logging;
/**
* Compiles Drools DecisionTable.
*
* @author Tihomir Surdilovic
*
*/
@Name("org.jboss.seam.drools.spreadsheetComponent")
@BypassInterceptors
@Scope(APPLICATION)
@Install(precedence = BUILT_IN, classDependencies = "org.drools.decisiontable.SpreadsheetCompiler")
public class SpreadsheetCompiler
{
private static final LogProvider log = Logging.getLogProvider(SpreadsheetCompiler.class);
public InputStreamReader compile(InputStream stream) {
org.drools.decisiontable.SpreadsheetCompiler compiler = new org.drools.decisiontable.SpreadsheetCompiler();
String drl = compiler.compile(stream, InputType.XLS);
byte currentXMLBytes[] = drl.getBytes();
InputStreamReader source = new InputStreamReader(new ByteArrayInputStream(currentXMLBytes));
return source;
}
public static SpreadsheetCompiler instance()
{
if (!Contexts.isApplicationContextActive()) {
return new SpreadsheetCompiler();
} else {
return (SpreadsheetCompiler) Component.getInstance(SpreadsheetCompiler.class, ScopeType.APPLICATION);
}
}
}