BIRT データ・アクセス・イベント・ハンドラーの外部型
このトピックでは、データ・アクセス・イベント・ハンドラーをコーディングする際に使用する、EGL の外部型について概説します。 背景情報については、『EGL BIRT レポート』、『EGL BIRT ハンドラー』、および『BIRT データ・アクセス・イベント・ハンドラー』を参照してください。
ColumnMetaData
ColumnMetaData 型の変数には、データ・セットにある各列の型および名前の情報が入ります。 このような変数は、DataSetInstance 型の変数を使用する場合、および getColumnMetaData 関数を呼び出す場合に受け取ります。
- getColumnCount は、データ・セットの行にある列の数を返します。
element.getColumnCount() returns (INT) - getColumnName は、索引番号で指定された列の名前を返します。
element.getColumnName( index INT in ) returns (STRING) - getColumnDisplayName は、索引番号で指定された列の表示名を返します。
BIRT Report Designer は、「データ・エクスプローラー」ビューで列を表示する際にこの名前を使用します。また、レポート設計プロセスの中で、「データ・エクスプローラー」ビューから列をドラッグしてテーブルにドロップした際に、テーブルの列見出しを自動的に生成します。
element.getColumnDisplayName( index INT in ) returns (STRING)この EGL 関数と関連付けられている Java™ メソッドは、getColumnLabel です。
- getColumnAlias は、索引番号で指定された列の別名を返します。
レポート設計者は、レポート設計内で列を参照する際に、その列の短い名前または分かりやすい名前として、この別名を使用できます。
例えば、$FN という名前の列の別名を firstName にした場合は、式に row["$FN"] ではなく、row["firstName"] と記述できます。
element.getColumnAlias( index INT in ) returns (STRING) - getColumnTypeName は、行の列の位置を表す索引番号で指定された列の型を返します。
戻り値は、「Integer」、「Double」、「Decimal」、「String」、「Date」、または「Any」です。
element.getColumnTypeName( index INT in )returns (STRING)第 1 列は数字 0 ではなく 1 です。
- getColumnNativeTypeName は、行の列の位置を表す索引番号で指定された列のネイティブ型を返します。
ネイティブ型はデータ・ソースで有効な型の 1 つで、データ・ソースのタイプによって異なります。
例えばフラット・ファイルの場合、ネイティブ型は、bigdecimal、time、timestamp、date、double、int、または string などになります。
JDBC データ・ソースの場合、サポートされるネイティブ型は、アクセス先のデータベース管理システムのタイプによって異なります。
element.getColumnNativeTypeName( index INT in )returns (STRING)第 1 列は数字 0 ではなく 1 です。
- isComputedColumn は、列がデータ・ソースから取得されるのではなく、計算されるかどうかを示す Boolean を返します。
算出列には、式の結果 (通常、データ・ソースから取得した 1 つ以上の列を含みます) が表示されます。
例えば、データ・ソースから取得した各行に firstName および lastName という名前の列が含まれている場合、以下の式を使用して、fullName という名前の算出列を定義することができます。
row["firstName"] + " " + row["lastName"]データ・セットの算出列は、「データ・エクスプローラー」ビューでの作業中に定義します。
element.isComputedColumn(index INT in) returns (BOOLEAN)
DataSetInstance
- getName は、設計ファイルに記載されたデータ・セット名を返します。
element.getName()returns (STRING) - getExtensionID は、BIRT オープン・データ・アクセス (ODA) 拡張 ID の値を返します。
例えば、SQL 照会を使用するデータ・ソースの場合、この値は「org.eclipse.birt.report.data.oda.jdbc.JdbcSelectDataSet」などになります。
element.getExtensionID()returns (STRING) - getExtensionProperty は、BIRT オープン・データ・アクセス (ODA) 拡張プロパティーの値を返します。
element.getExtensionProperty(propertyName STRING in) returns (STRING) - setExtensionProperty は、ODA 拡張プロパティーの値を設定します。
element.setExtensionProperty (propertyName STRING in, value STRING in) - getDataSource は、データ・セットに固有のデータ・ソースを取得します。
element.getDataSource () returns (DataSourceInstance) - getColumnMetaData は、データ・セットにある各列の型および名前の情報が入った、ColumnMetaData 型の変数を取得します。
入手可能な情報の種類について詳しくは、getColumnMetaData に関するセクションを参照してください。
element.getColumnMetaData () returns (ColumnMetaData)
- queryText は STRING 型のフィールドで、レポート・エンジンがデータ・セットを取得する際の元となる SQL 照会を保持します。
SQL 照会を使用できない場合、queryText の値は空ストリングになります。
次の例では、レポート・エンジンが、SQL 照会を開く前にイベント・ハンドラー (イベント・タイプは beforeOpen、データ・セットは「dataSet」) を呼び出しています。
function setQuery( d DataSetInstance, c ReportContext ) { eventType = beforeOpen, elementName = "dataSet" } queryStr string; if( region == "EUR" ) queryStr = "select region, country, city from locations where region = ¥"EUROPE¥""; else queryStr = "select region, country, city from locations where region = ¥"ASIA¥""; end d.queryText = queryStr; endこの例の場合、イベント・ハンドラーは、ビジネスの状態に応じて何らかの SQL 照会ストリングを設定します。 region 変数は、この関数の外部でグローバルに宣言および設定されているものとします。
package EGLDataSources;
program arrayProg type BasicProgram {}
function main()
arr customer[0];
cust customer;
cust.customerNumber = 102;
cust.firstName = "Jonathan";
cust.lastName = "Swift";
arr.appendElement(cust);
cust.customerNumber = 103;
cust.firstName = "Mark";
cust.lastName = "Twain";
arr.appendElement(cust);
designFile string = "eglDataSourcesRpt.rptdesign";
rptFile string = "eglDataSourcesArrayRpt.pdf";
myHandler arrayHandler = new arrayHandler;
rpt BIRTReport = new BIRTReport
(designFile, null, rptFile, "pdf", myHandler);
myHandler.setCustomerArray(arr);
rpt.createReportFromDesign();
end
end
record customer type basicrecord
customerNumber int;
firstName string;
lastName string;
end
package EGLDataSources;
Handler arrayHandler type BIRTHandler
index int;
customerArr customer[];
function setCustomerArray(a customer[])
customerArr = a;
end
function openFunction( d DataSetInstance )
{ eventType = openEvent, elementName = "myDataSet" }
index = 0;
end
function fetchFunction(d DataSetInstance, row UpdatableDataSetRow )
returns( boolean )
{ eventType = fetchEvent, elementName = "myDataSet" }
index = index + 1;
if( index <= customerArr.getSize() )
row.setColumnValue( "customer_num", customerArr[index].customerNumber );
row.setColumnValue( "fname", customerArr[index].firstName );
row.setColumnValue( "lname", customerArr[index].lastName );
return (TRUE);
else
return (FALSE);
end
end
end
データ・セットの列名 (customer_num、fName、および lName など) は、対応する EGL フィールド名 (customerNumber、firstName、および lastName など) と異なる場合があることに注意してください。
その他の詳細については、DataSetRow および UpdatableDataSetRow に関するセクションを参照してください。
DataSetRow
- getDataSet は、データ・セットを返します。
element.getDataSet()returns (DataSetInstance) - getColumnValue は、索引番号で指定された列の値を返します。
element.getColumnValue(index INT in)returns (ANY)第 1 列は数字 0 ではなく 1 です。
- getColumnValue は、名前で指定された列の値を返します。
element.getColumnValue(columnName STRING in) returns (ANY)
これらの関数は、UpdatableDataSetRow 型の変数でも使用できます。
DataSourceInstance
- getName は、設計ファイルに記載されたデータ・ソース名を返します。
element.getName()returns (STRING) - getExtensionID は、BIRT オープン・データ・アクセス (ODA) 拡張 ID の値を返します。
例えば、JDBC データ・ソースの場合、この値は「org.eclipse.birt.report.data.oda.jdbc」などになります。
element.getExtensionID()returns (STRING) - getExtensionProperty は、以下のような、BIRT オープン・データ・アクセス (ODA) 拡張プロパティーの値を返します。
- odaDriverClass (リレーショナル・データベースの JDBC アクセスに使用されるドライバー・クラス用)
- odaUser (データベースへの接続に使用されるユーザー ID 用)
- odaPassword (データベースへの接続に使用されるパスワード用)
element.getExtensionProperty(propertyName STRING in) returns (STRING) - setExtensionProperty は、ODA 拡張プロパティーの値を設定します。
element.setExtensionProperty (propertyName STRING in, value STRING in)
DataSourceInstance 型のパラメーターを使用すると、BIRT レポート・エンジンがリレーショナル・データベースに接続する際に使用するユーザー ID およびパスワードを設定することができます。 サンプル・コードを以下に示します。userName および password はグローバル変数で、この関数の外部で設定されているものとします。
function setUser( d DataSourceInstance, c ReportContext )
{ eventType = beforeOpen, elementName = "myDataSource" }
d.setExtensionProperty( "odaUser", userName );
d.setExtensionProperty( "odaPassword", password );
end
ReportContext
- setParameterValue は、名前で指定されたレポート・パラメーターの値を設定します。
reportContext.setParameterValue ( parameterName STRING in, parameterValue ANY in ) - 同様に、getParameterValue は、レポート・パラメーターの値を取得します。
reportContext.getParameterValue ( parameterName STRING in) returns (ANY)
UpdatableDataSetRow
UpdatableDataSetRow 型の変数は、レポート・エンジンにデータの行を提供します。 この変数では、DataSetRow に関して説明されているすべての関数を使用できます。
- setColumnValue は、索引番号で指定された列の値を設定します。
element.setColumnValue(index INT in, value ANY in)第 1 列は数字 0 ではなく 1 です。
- setColumnValue は、名前で指定された列の値を設定します。
element.setColumnValue(columnName STRING in, value ANY in)