|
|
(3 intermediate revisions by one other user not shown) |
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 ==
| + | |
− | | + | |
− | 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_0/birt-runtime-2_1_0/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();
| + | |
− | }
| + | |
− | }
| + | |
− |
| + | |
− | }
| + | |