Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

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.


Copyright © Eclipse Foundation, Inc. All Rights Reserved.