|
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();
}
}
} |