Jump to: navigation, search

Parameter Details (BIRT) 2.1

Revision as of 15:27, 4 October 2007 by Scottr.innoventsolutions.com (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

< 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 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.