Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Parameter Details (BIRT) 2.1
< To: Integration Examples (BIRT)
Parameter Details
This example demonstrates using the RE API to extract parameter details from the report design. It also uses the DE API, to extract report parameter default values.
Add comments at the bottom of the example.
BIRT Report Engine API Return to the BIRT Report Engine API examples
Source
ParametersTask.java
import java.io.Serializable;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.logging.Level;
import org.eclipse.birt.core.framework.Platform;
import org.eclipse.birt.report.engine.api.EngineConfig;
import org.eclipse.birt.report.engine.api.EngineException;
import org.eclipse.birt.report.engine.api.IGetParameterDefinitionTask;
import org.eclipse.birt.report.engine.api.IParameterDefnBase;
import org.eclipse.birt.report.engine.api.IParameterGroupDefn;
import org.eclipse.birt.report.engine.api.IParameterSelectionChoice;
import org.eclipse.birt.report.engine.api.IReportEngine;
import org.eclipse.birt.report.engine.api.IReportEngineFactory;
import org.eclipse.birt.report.engine.api.IReportRunnable;
import org.eclipse.birt.report.engine.api.IScalarParameterDefn;
import org.eclipse.birt.report.model.api.CascadingParameterGroupHandle;
import org.eclipse.birt.report.model.api.ReportDesignHandle;
import org.eclipse.birt.report.model.api.ScalarParameterHandle;
public class ParametersTask {
static void executeReport() throws EngineException
{
HashMap<String, HashMap<String, Serializable>> parmDetails = new HashMap<String, HashMap<String, Serializable>>();
IReportEngine engine=null;
EngineConfig config = null;
try{
config = new EngineConfig( );
config.setEngineHome( "C:/birt-runtime-2_1_1/birt-runtime-2_1_1/ReportEngine" );
config.setLogConfig(null, Level.FINE);
Platform.startup( config );
IReportEngineFactory factory = (IReportEngineFactory) Platform
.createFactoryObject( IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY );
engine = factory.createReportEngine( config );
engine.changeLogLevel( Level.WARNING );
}catch( Exception ex){
ex.printStackTrace();
}
IReportRunnable design = null;
//Open a report design
design = engine.openReportDesign("C:/test/2.1/parameters/Parameters.rptdesign");
//Create Parameter Definition Task and retrieve parameter definitions
IGetParameterDefinitionTask task = engine.createGetParameterDefinitionTask( design );
Collection<IParameterDefnBase> params = (Collection<IParameterDefnBase>)task.getParameterDefns( true );
//Iterate over each parameter
for ( IParameterDefnBase param : params )
{
if ( param instanceof IParameterGroupDefn )
{
IParameterGroupDefn group = (IParameterGroupDefn) param;
//System.out.println( "Parameter Group: " + group.getName( ) );
// Do something with the parameter group.
// Iterate over group contents.
for ( Iterator i2 = group.getContents( ).iterator( ); i2.hasNext( ) )
{
IScalarParameterDefn scalar = (IScalarParameterDefn) i2.next( );
//System.out.println("\t" + scalar.getName());
//Get details on the parameter
parmDetails.put( scalar.getName(), loadParameterDetails( task, scalar, design, group));
}
}
else
{
IScalarParameterDefn scalar = (IScalarParameterDefn) param;
//System.out.println(param.getName());
//get details on the parameter
parmDetails.put( scalar.getName(),loadParameterDetails( task, scalar, design, null));
}
}
//Destroy the engine and shutdown the Platform
//Note - If the program stays resident do not shutdown the Platform or the Engine
engine.shutdown();
Platform.shutdown();
System.out.println("Finished");
}
//Function to load parameter details in a map.
private static HashMap<String, Serializable> loadParameterDetails(IGetParameterDefinitionTask task, IScalarParameterDefn scalar, IReportRunnable report, IParameterGroupDefn group)
{
HashMap<String, Serializable> parameter = new HashMap<String, Serializable>();
parameter.put("Parameter Group", group == null ? "Default" : group.getName());
parameter.put("Name", scalar.getName());
parameter.put("Help Text", scalar.getHelpText());
parameter.put("Display Name", scalar.getDisplayName());
//this is a format code such as > for UPPERCASE
parameter.put("Display Format", scalar.getDisplayFormat());
parameter.put("Hidden", scalar.isHidden() ? "Yes" : "No");
parameter.put("Allow Blank", scalar.allowBlank() ? "Yes" : "No");
parameter.put("Allow Null", scalar.allowNull() ? "Yes" : "No");
parameter.put("Conceal Entry", scalar.isValueConcealed() ? "Yes" : "No"); //ie passwords etc
switch (scalar.getControlType()) {
case IScalarParameterDefn.TEXT_BOX: parameter.put("Type", "Text Box"); break;
case IScalarParameterDefn.LIST_BOX: parameter.put("Type", "List Box"); break;
case IScalarParameterDefn.RADIO_BUTTON: parameter.put("Type", "List Box"); break;
case IScalarParameterDefn.CHECK_BOX: parameter.put("Type", "List Box"); break;
default: parameter.put("Type", "Text Box");break;
}
switch (scalar.getDataType()) {
case IScalarParameterDefn.TYPE_STRING: parameter.put("Data Type", "String"); break;
case IScalarParameterDefn.TYPE_FLOAT: parameter.put("Data Type", "Float"); break;
case IScalarParameterDefn.TYPE_DECIMAL: parameter.put("Data Type", "Decimal"); break;
case IScalarParameterDefn.TYPE_DATE_TIME: parameter.put("Data Type", "Date Time"); break;
case IScalarParameterDefn.TYPE_BOOLEAN: parameter.put("Data Type", "Boolean"); break;
default: parameter.put("Data Type", "Any"); break;
}
//Get report design and find default value, prompt text and data set expression using the DE API
ReportDesignHandle reportHandle = ( ReportDesignHandle ) report.getDesignHandle( );
ScalarParameterHandle parameterHandle = ( ScalarParameterHandle ) reportHandle.findParameter( scalar.getName() );
parameter.put("Default Value", parameterHandle.getDefaultValue());
parameter.put("Prompt Text", parameterHandle.getPromptText());
parameter.put("Data Set Expression", parameterHandle.getValueExpr());
if(scalar.getControlType() != IScalarParameterDefn.TEXT_BOX)
{
//retrieve selection list for cascaded parameter
if ( parameterHandle.getContainer( ) instanceof CascadingParameterGroupHandle ){
if ( parameterHandle.getContainer( ) instanceof CascadingParameterGroupHandle )
{
int index = parameterHandle.getContainerSlotHandle( ).findPosn( parameterHandle );
Object[] keyValue = new Object[index];
for ( int i = 0; i < index; i++ )
{
ScalarParameterHandle handle = (ScalarParameterHandle) ( (CascadingParameterGroupHandle) parameterHandle.getContainer( ) ).getParameters( ).get( i );
//Use parameter default values
keyValue[i] = handle.getDefaultValue();
}
String groupName = parameterHandle.getContainer( ).getName( );
task.evaluateQuery( groupName );
Collection<IParameterSelectionChoice> sList = (Collection<IParameterSelectionChoice>)task.getSelectionListForCascadingGroup( groupName, keyValue );
HashMap<Object, String> dynamicList = new HashMap<Object, String>();
for ( IParameterSelectionChoice sI : sList )
{
Object value = sI.getValue( );
Object label = sI.getLabel( );
System.out.println( label + "--" + value);
dynamicList.put(value,(String) label);
}
parameter.put("Selection List", dynamicList);
}
}else{
//retrieve selection list
Collection<IParameterSelectionChoice> selectionList = (Collection<IParameterSelectionChoice>)task.getSelectionList( scalar.getName() );
if ( selectionList != null )
{
HashMap<Object, String> dynamicList = new HashMap<Object, String>();
for ( IParameterSelectionChoice selectionItem : selectionList )
{
Object value = selectionItem.getValue( );
String label = selectionItem.getLabel( );
//System.out.println( label + "--" + value);
dynamicList.put(value,label);
}
parameter.put("Selection List", dynamicList);
}
}
}
//Print out results
System.out.println("======================Parameter =" + scalar.getName());
for (Map.Entry<String, Serializable> entry : parameter.entrySet( ) {
String name = entry.getKey();
if( name.equals("Selection List")){
HashMap<?,?> selList = (HashMap<?,?>)entry.getValue();
for (Map.Entry<?,?> entry : selList.entrySet()) {
System.out.println( "Selection List Entry ===== Key = " + entry.getKey() + " Value = " + entry.getValue());
}
}else{
System.out.println( name + " = " + entry.getValue());
}
}
return parameter;
}
/**
* @param args
*/
public static void main(String[] args) {
try
{
executeReport( );
}
catch ( Exception e )
{
e.printStackTrace();
}
}
}
Comments
Please enter comments below by selecting the edit icon to the right. You will need a Bugzilla account to add comments.