これらのテーブルに、基礎となるテクノロジーの制限が公開されています。 例えば、ExternalType 関数を呼び出すと、EGL TIMESTAMP は java.lang.Timestamp クラスに変換します。このクラスは JSF では使用できません。このため、EGL TIMESTAMP は JSF ハンドラーで java.util.Calendar に変換します。
以下のテーブルでは、EGL プリミティブによっては、クラス (java.math.BigDecimal など) に変換されるものもあれば、Java プリミティブ (long など) に変換されるものもあります。
次の表は、ExternalType 関数呼び出しでの EGL プリミティブ型の Java データ型への変換のしかたを示しています。 これは、単なるマッピングです。 ここでの EGL から Java への変換は、Java から EGL への単純なミラー・イメージではありません。 疑問符 (?) は、NULL 可能型であることを示しています。 詳しくは『NULL 値および NULL 可能型』を参照してください。
| EGL 型 | Java の型 |
|---|---|
| CHAR、CHAR?、MBCHAR、 MBCHAR?、DBCHAR、DBCHAR?、 UNICODE、UNICODE? | java.lang.String (変換時の末尾ブランク除去/埋め込みおよび切り捨て) |
| UNICODE(1) | char |
| UNICODE(1)? | java.lang.Character |
| STRING | java.lang.String |
| HEX(2) | byte |
| HEX(2)? | java.lang.Byte |
| HEX(>2)、HEX(>2)? | byte[] |
| BOOLEAN | boolean |
| BOOLEAN? | java.lang.Boolean |
| SMALLINT | short |
| SMALLINT? | java.lang.Short |
| INT | int |
| INT? | java.lang.Integer |
| BIGINT | long |
| BIGINT? | java.lang.Long |
| DECIMAL、BIN、MONEY、NUM (小数点以下なし) | 1<=length<=9、int |
| DECIMAL?、BIN?、MONEY?、 NUM? (小数点以下なし) | 1<=length<=9、java.lang.Integer |
| DECIMAL、DECIMAL?、BIN、 BIN?、MONEY、MONEY?、 NUM、NUM? (小数点以下の数値により宣言) | java.math.BigDecimal |
| SMALLFLOAT | float |
| SMALLFLOAT? | java.lang.Float |
| FLOAT | double |
| FLOAT? | java.lang.Double |
| DATE、DATE? | java.sql.Date |
| TIME、TIME? | java.sql.Time |
| TIMESTAMP、TIMESTAMP? | java.sql.Timestamp |
| INTERVAL、INTERVAL? (マイクロ秒) | java.math.BigInteger (マイクロ秒) |
| INTERVAL、INTERVAL? (月) | long (月) |
| BLOB | 該当なし |
| CLOB | 該当なし |
| 動的配列 | java.util.List。動的配列の要素は、このテーブルに従って Java タイプに変換されます。つまり、EGL の DATE の配列は、要素が java.sql.Date オブジェクトである java.util.List に変換されます。 |
| 構造化レコード | byte[n]。ここで n は、レコード内のバイト数です。 |
次の表は、ExternalType 関数呼び出しで、Java データ型が EGL プリミティブ型に変換される方法を示しています。最初の列のアスタリスクは、変換が EGL から Java への変換のミラーであることを示しています。
| Java の型 | EGL 型 |
|---|---|
| char* | UNICODE(1) |
| java.lang.Character* | UNICODE(1)? |
| java.lang.String* | STRING |
| byte* | HEX(2) |
| byte[n] | HEX(n*2)? |
| byte[n]* | 構造化レコード。ここで n は、レコード内のバイトの数です。 |
| java.lang.Byte* | HEX(2)? |
| boolean* | BOOLEAN |
| java.lang.Boolean* | BOOLEAN? |
| short* | SMALLINT |
| java.lang.Short* | SMALLINT? |
| int* | INT |
| java.lang.Integer* | INT? |
| long* | BIGINT |
| java.lang.Long* | BIGINT? |
| java.math.BigDecimal | DECIMAL(32,scale)。 java.math.BigDecimal の桁数には制限はありません。 EGL は Java 生成では 32 までに制限されています。 |
| java.math.BigInteger | NUM(32)。 java.math.BigInteger の桁数には制限はありません。 EGL は Java 生成では 32 までに制限されています。 |
| float* | SMALLFLOAT |
| java.lang.Float* | SMALLFLOAT? |
| double* | FLOAT |
| java.lang.Double* | FLOAT? |
| java.sql.Date | DATE? |
| java.sql.Time | TIME? |
| java.sql.Timestamp | TIMESTAMP("yyyyMMddHHmmssfff")? |
| java.util.List* | DynamicArray。List は、タイプが List の要素タイプにより確定する EGL 動的配列に変換されます。 例えば、List に java.lang.Double オブジェクトが含まれる場合、EGL 動的配列は FLOAT?[] タイプです。 |
XML レポート設計文書では、データ型は Java データ型として記述されます。 設計資料から EGL JasperReport ハンドラー関数を呼び出す場合、 その呼び出しは、適用可能な EGL プリミティブ型に対応する Java データ型を使用する必要があります。 また、JasperReport ハンドラー関数が XML 設計ファイルに戻すデータについて、Java データ型で宣言することも必要です。
以下の表は、XML レポート設計の資料および対応する EGL プリミティブ型で使用される Java データ型を示します。
| EGL プリミティブ型 | Java データ型 |
|---|---|
| BIGINT | java.lang.Long |
| BIN | java.math.BigDecimal |
| BLOB | 該当なし |
| BOOLEAN | java.lang.Boolean |
| CHAR | java.lang.String |
| CLOB | 該当なし |
| DATE | java.util.Date |
| DBCHAR | java.lang.String |
| DECIMAL | java.math.BigDecimal |
| FLOAT | java.lang.Double |
| HEX | java.lang.Byte |
| INT | java.lang.Integer |
| INTERVAL | java.lang.String |
| MBCHAR | java.lang.String |
| MONEY | java.math.BigDecimal |
| NUM | java.math.BigDecimal |
| NUMC | java.math.BigDecimal |
| PACF | java.math.BigDecimal |
| SMALLFLOAT | java.lang.Float |
| SMALLINT | java.lang.Short |
| STRING | java.lang.String |
| TIME | java.sql.Time |
| TIMESTAMP | java.sql.Timestamp |
| UNICODE | java.lang.String |
引数を JavaLib EGL システム・ライブラリーから関数に引き渡す場合、 以下の表で示されているように、EGL はその引数を Java 型に引き渡します。 戻り値は、右の列の型から左の列の対応する方に変換されます。
| EGL 型 | 例 | Java の型 | |
|---|---|---|---|
| ストリング・リテラル、または CHAR 型、DBCHAR 型、MBCHAR 型、UNICODE 型の変数 | キャストなし |
|
java.lang.String |
| ID を示す objID:java をキャスト |
|
ID が参照するオブジェクトのクラス | |
| NULL からキャスト。これは、完全修飾クラスに null 参照を提供するのに適しています |
|
指定したクラス
注: 'null as "java:int[]" ' のような、NULL でキャストされた配列に渡すことはできません
|
|
| java:char でキャスト。これは、値の先頭の文字が渡されることを意味します (次の列の例ではそれぞれ "a" が渡されます) |
|
char | |
| STRING 変数 | キャストなし | myStringVar | java.lang.String |
| FLOAT 変数 | キャストなし |
|
double |
| HEX 変数 | キャストなし |
|
バイト配列 |
| SMALLFLOAT 変数 | キャストなし |
|
float |
| DATE 変数 | キャストなし |
|
java.sql.Date |
| TIME 変数 | キャストなし |
|
java.sql.Time |
| TIMESTAMP 変数 | キャストなし |
|
java.sql.Timestamp |
| INTERVAL 変数 | キャストなし |
|
java.lang.String |
| BOOLEAN 変数 | キャストなし |
|
boolean |
| 浮動小数点数リテラル | キャストなし | -6.5231E96 | double |
| 小数部を含まない数値変数 (または非浮動小数点数リテラル)。 先行ゼロは、リテラルの桁数に含まれます。 | キャストなし、1 - 4 桁 |
|
short |
| キャストなし、5 から 9 桁 |
|
int | |
| キャストなし、9 から 18 桁 |
|
long | |
| キャストなし、18 桁より大 |
|
java.math.BigInteger | |
| 小数部を含む数値変数 (または非浮動小数点数リテラル)。先行ゼロおよび後続ゼロは、リテラルの桁数に含まれます。 | キャストなし、1 から 6 桁 |
|
float |
| キャストなし、7 から 18 桁 |
|
double | |
| キャストなし、18 桁より大 |
|
java.math.BigDecimal | |
| 小数部付き、または小数部なしの数値変数または非浮動小数点数リテラル | 以下として |
|
指定した型。ただし、その型で設定される範囲外の値の場合、精度が失われ、符号が変わることがあります。 |
| java:boolean によるキャスト。これは、ゼロ以外が true、ゼロが false であることを意味します。 |
|
boolean | |
次の表は、JSF ハンドラーから Java 関数への引数の引き渡しが行われるときに EGL が実行する EGL から Java への変換を示します。関数の戻り値は、Java 型から EGL 型に変換されます。EGL NULL 引数を関数に引き渡す場合、 Java NULL 値が戻ります。
| EGL 型 | Java の型 |
|---|---|
| BIGINT / BIN(18) | java.lang.Long |
| BIN (小数部付き) | java.math.BigDecimal |
| BLOB | byte[] |
| BOOLEAN* | java.lang.Boolean |
| CHAR | java.lang.String |
| CLOB | java.lang.String |
| DATE | java.util.Date |
| DBCHAR | java.lang.String |
| DECIMAL | java.math.BigDecimal |
| FLOAT | java.lang.Double |
| HEX | byte[] |
| INT / BIN(9) | java.lang.Integer |
| INTERVAL | java.lang.String |
| MBCHAR | java.lang.String |
| MONEY | java.math.BigDecimal |
| NUM | java.math.BigDecimal |
| NUMC | java.math.BigDecimal |
| PACF | java.math.BigDecimal |
| SMALLFLOAT | java.lang.Float |
| SMALLINT / BIN(4) | java.lang.Short |
| STRING | java.lang.String |
| TIME | java.util.Date |
| TIMESTAMP | java.util.Calendar |
| UNICODE | java.lang.String |
| レコード | JavaBeans 仕様に準拠するオブジェクト (レコードのフィールドの値を取得するメソッドを持つオブジェクト) |
この場合、変数は実際の BOOLEAN のように扱われ、java.lang.Boolean にマッピングされます。