package pt.ist.expenditureTrackingSystem.util;
import java.io.File;
import java.io.StringWriter;
import java.util.Arrays;
import javax.tools.JavaCompiler;
import javax.tools.JavaCompiler.CompilationTask;
import javax.tools.JavaFileObject;
import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.design.JRAbstractMultiClassCompiler;
public class FenixJasperCompiler extends JRAbstractMultiClassCompiler {
private static final JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
@Override
public String compileClasses(File[] sourceFiles, String classpath) throws JRException {
// Retrieve files from the standard location
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
Iterable<? extends JavaFileObject> sources = fileManager.getJavaFileObjectsFromFiles(Arrays.asList(sourceFiles));
CompilationTask task =
compiler.getTask(new StringWriter(), fileManager, null, Arrays.asList("-classpath", classpath), null, sources);
if (!task.call()) {
throw new JRException("Error compiling report java source files");
}
return null;
}
}