Bug 131577 Script Access to Factory/Presentation Mode
There is no easy way from within BIRT scripting to access whether a report is in factoryMode or presentationMode. The ExecutionContext object on the ReportContextImpl class has this information, but it is not available through scripting. I wonder if it makes sense to just expose the ExecutionContext and let the developer get the ExecutionContext or work from there, or if it is better to maintain an abstraction layer off of the ExecutionContext with all of the functionality wrapped off. To me it is more useful to divide the script functions into some that are basic and fully supported and others that are in the category of Kung-Fu scripting where the developer has to have a relatively high level of experience. So if we decide this is a basic function, we expose the factory mode in the IReportContext interface. If it is deemed to be Kung-Fu scripting, then we just expose a handle to the ExecutionContext and let developers figure it themselves. Thoughts?
engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/api/impl/EngineTask.java
import org.eclipse.birt.report.engine.executor.IReportExecutor;
import org.eclipse.birt.report.engine.layout.IReportLayoutEngine;
import org.eclipse.birt.report.engine.layout.LayoutEngineFactory;
import org.eclipse.birt.report.engine.script.internal.ReportContextImpl;
import org.eclipse.birt.report.engine.script.internal.ReportScriptExecutor;
import org.eclipse.birt.report.model.api.CascadingParameterGroupHandle;
import org.eclipse.birt.report.model.api.DataSetHandle;
import org.eclipse.birt.report.model.api.IncludeScriptHandle;
import org.eclipse.birt.report.model.api.ParameterGroupHandle;
import org.eclipse.birt.report.model.api.ReportDesignHandle;
import org.eclipse.birt.report.model.api.ScalarParameterHandle;
import org.eclipse.birt.report.model.api.SlotHandle;
import org.eclipse.birt.report.model.api.elements.DesignChoiceConstants;
import com.ibm.icu.util.ULocale;
/**
 * Defines an engine task that could be executed, debugged (runs step by step),
 * inform caller for progress, etc.
 */
public abstract class EngineTask implements IEngineTask
{
	protected static Logger log = Logger
			.getLogger( EngineTask.class.getName( ) );
	
	protected final int RUNNING_STATUS_START = 0;
	protected final int RUNNING_STATUS_RUNNING = 1;
	protected final int RUNNING_STATUS_STOP = 2;
	
	protected static int id = 0;
	protected String pagination;
	protected final static String FORMAT_HTML = "html";