BIRT 데이터 액세스 이벤트 핸들러의 외부 유형
이 주제에서는 데이터 액세스 이벤트 핸들러를 코딩할 때 사용하는 EGL 외부 유형을 검토합니다. 배경 정보에 대해서는 "EGL BIRT 보고서", "BIRT 핸들러" 및 "BIRT 데이터 액세스 이벤트 핸들러"를 참조하십시오.
ColumnMetaData
ColumnMetaData 유형은 데이터 세트의 각 열에 있는 유형 및 이름 정보를 포함합니다. DataSetInstance 유형의 변수를 사용하여 작업하고 getColumnMetaData 함수를 호출할 때 이 변수를 받습니다.
- getColumnCount는 데이터 세트의 행에 있는 열 수를 리턴합니다.
element.getColumnCount() returns (INT) - getColumnName은 인덱스 번호로 식별되는 열 이름을 리턴합니다.
element.getColumnName( index INT in ) returns (STRING) - getColumnDisplayName은 인덱스 번호로 식별되는 열 표시 이름을 리턴합니다. BIRT 보고서 디자이너는
데이터 탐색기 보기에 열을 표시할 때 이 표시 이름을 사용하고
보고서 디자인 프로세스 중에 데이터 탐색기 보기에서 열을 끌어서 테이블에 놓으면 테이블에서 열 표제를 자동으로 생성합니다.
element.getColumnDisplayName( index INT in ) returns (STRING)이 EGL 함수와 연관된 Java™ 메소드는 getColumnLabel입니다.
- getColumnAlias은 인덱스 번호로 식별되는 열 별명을 리턴합니다. 보고서 디자인에서 이를 참조하면 보고서 디자이너에서 이 별명을 열에 대해 더 짧게 또는 더 한 하나 이상의 인식 가능한 이언급할 때 보고 디자이너는 열을 위한 짧거나 더 많은 인식할 수 있는 이름으로서 이 별명을 사용할 수 있습니다. 예를 들면, row["$FN"] 대신에 row["firstName"]를 표현식에 쓸 수 있도록 firstName의 별명으로
이름 지정된 열 $FN을 제공할 수 있습니다.
element.getColumnAlias( index INT in ) returns (STRING) - getColumnTypeName은 인덱스 번호로 식별되는 열 유형을 리턴합니다. 인덱스 번호는 행에서 열의 위치를 나타냅니다.
리턴 값은 "Integer", "Double", "Decimal", "String", "Date" 또는 "Any"입니다.
element.getColumnTypeName( index INT in )returns (STRING)첫 번째 열은 0이 아닌 1입니다.
- getColumnNativeTypeName은 인덱스 번호로 식별되는 원시 유형의 열을 리턴합니다. 인덱스 번호는 행에서 열의 위치를 나타냅니다.
원시 유형은 데이터 소스에 유요한 유형 중 하나이고 데이터 소스 유형에 따라 다릅니다. 예를 들어 플랫 파일의 경우, 원시 유형은 bigdecimal, time, timestamp, date, double, int 또는 string입니다.
JDBC 데이터 소스의 경우, 지원되는 원시 유형은 액세스되는 데이터베이스 관리 시스템 유형에 따라 다릅니다.
element.getColumnNativeTypeName( index INT in )returns (STRING)첫 번째 열은 0이 아닌 1입니다.
- isComputedColumn은 열을 데이터 소스에서 검색하지 않고 계산할지 여부를 나타내는 부울을 리턴합니다.
계산된 열은 일반적으로 데이터 소스에서 검색된 하나 이상의 열을 포함하여 표현식 결과를 표시합니다. 예를 들어, 데이터 소스에서 검색된 각 행에 열 firstName과 lastName이 포함되는 경우 다음 표현식을 사용하여 계산된 열
fullName을 정의할 수 있습니다.
row["firstName"] + " " + row["lastName"]데이터 탐색기 보기에서 작업할 때 데이터 세트에 대한 계산된 열을 정의합니다.
element.isComputedColumn(index INT in) returns (BOOLEAN)
DataSetInstance
- getName은 디자인 파일에서 표현된 데이터 세트에 주어진 이름을 리턴합니다.
element.getName()returns (STRING) - getExtensionID는 BIRT ODA(Open Data Access) 확장 ID 값을 리턴합니다.
예를 들어 SQL 조회를 사용하는 데이터 소스의 경우 이 값은 "org.eclipse.birt.report.data.oda.jdbc.JdbcSelectDataSet"입니다.
element.getExtensionID()returns (STRING) - getExtensionProperty는 BIRT ODA(Open Data Access) 확장 특성 값을 리턴합니다.
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는 문자열 유형의 필드이고, 보고서 엔진이 데이터 세트를 파생시키는 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)첫 번째 열은 0이 아닌 1입니다.
- getColumnValue는 이름으로 식별되는 열 값을 리턴합니다.
element.getColumnValue(columnName STRING in) returns (ANY)
또한 해당 함수를 UpdatableDataSetRow 유형의 변수에 사용할 수도 있습니다.
DataSourceInstance
- getName은 디자인 파일에서 표현된 데이터 소스에 주어진 이름을 리턴합니다.
element.getName()returns (STRING) - getExtensionID는 BIRT ODA(Open Data Access) 확장 ID 값을 리턴합니다.
예를 들어 JDBC 데이터 소스의 경우 이 값은 "org.eclipse.birt.report.data.oda.jdbc"입니다.
element.getExtensionID()returns (STRING) - getExtensionProperty는 다음과 같이 BIRT ODA(Open Data Access) 확장 특성 값을 리턴합니다.
- 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)첫 번째 열은 0이 아닌 1입니다.
- setColumnValue는 이름으로 식별되는 열 값을 설정합니다.
element.setColumnValue(columnName STRING in, value ANY in)