Skip to main content
Jump to: navigation, search

Difference between revisions of "Parameter Details"

(ParametersTask.java)
(Replacing page with 'Moved to Parameter Details (BIRT) 2.1')
 
Line 1: Line 1:
== Parameter Details ==
+
Moved to [[Parameter Details (BIRT) 2.1]]
 
+
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 params = task.getParameterDefns( true );
+
+
  //Iterate over each parameter
+
  Iterator iter = params.iterator( );
+
  while ( iter.hasNext( ) )
+
  {
+
  IParameterDefnBase param = (IParameterDefnBase) iter.next( );
+
+
  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.
+
    Iterator i2 = group.getContents( ).iterator( );
+
    while ( 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>();
+
+
  if( group == null){
+
  parameter.put("Parameter Group", "Default");
+
  }else{
+
  parameter.put("Parameter Group", 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());
+
+
  if( scalar.isHidden() ){
+
  parameter.put("Hidden", "Yes");
+
  }else{
+
  parameter.put("Hidden", "No");
+
  }
+
  if( scalar.allowBlank() ){
+
  parameter.put("Allow Blank", "Yes");
+
  }else{
+
  parameter.put("Allow Blank", "No");
+
  }
+
  if( scalar.allowNull() ){
+
  parameter.put("Allow Null", "Yes"); 
+
  }else{
+
  parameter.put("Allow Null", "No");
+
  }
+
  if( scalar.isValueConcealed() ){
+
  parameter.put("Conceal Entry", "Yes");  //ie passwords etc
+
  }else{
+
  parameter.put("Conceal Entry", "No");
+
  }
+
+
+
  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 ){
+
    Collection sList = Collections.EMPTY_LIST;
+
    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 );
+
+
    sList = task.getSelectionListForCascadingGroup( groupName, keyValue );
+
    HashMap<Object, String> dynamicList = new HashMap<Object, String>();     
+
+
+
    for ( Iterator sl = sList.iterator( ); sl.hasNext( ); )
+
    {
+
      IParameterSelectionChoice sI = (IParameterSelectionChoice) sl.next( );
+
+
+
      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 selectionList = task.getSelectionList( scalar.getName() );
+
+
    if ( selectionList != null )
+
    {
+
    HashMap<Object, String> dynamicList = new HashMap<Object, String>();     
+
+
    for ( Iterator sliter = selectionList.iterator( ); sliter.hasNext( ); )
+
    {
+
      IParameterSelectionChoice selectionItem = (IParameterSelectionChoice) sliter.next( );
+
+
      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
+
  Iterator iter = parameter.keySet().iterator();
+
  System.out.println("======================Parameter =" + scalar.getName());
+
  while (iter.hasNext()) {
+
  String name = (String) iter.next();
+
  if( name.equals("Selection List")){
+
    HashMap selList = (HashMap)parameter.get(name);
+
    Iterator selIter = selList.keySet().iterator();
+
    while (selIter.hasNext()) {
+
    Object lbl = selIter.next();
+
    System.out.println( "Selection List Entry ===== Key = " + lbl + " Value = " + selList.get(lbl));
+
    }
+
+
  }else{
+
    System.out.println( name + " = " + parameter.get(name));   
+
  }
+
  }
+
  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.
+
 
+
----
+

Latest revision as of 14:27, 4 October 2007

Moved to Parameter Details (BIRT) 2.1

Back to the top