In den Tabellen wird auf Einschränkungen bei den zugrunde liegenden Technologien hingewiesen. Wenn Sie z. B. eine Funktion eines externen Typs aufrufen, wird der Typ 'EGL TIMESTAMP' in eine Klasse 'java.lang.Timestamp' konvertiert. Die betreffende Klasse ist nicht in JSF verfügbar, sodass der Typ 'EGL TIMESTAMP' in einem JSF-Handler in 'java.util.Calendar' konvertiert wird.
In den folgenden Tabellen ist ersichtlich, dass einige EGL-Basiselemente in Klassen (z. B. 'java.math.BigDecimal'), andere in Java-Basiselemente (z. B. 'long') konvertiert werden.
Der folgenden Tabelle können Sie entnehmen, wie EGL-Basiselementtypen in einem Aufruf einer Funktion des Typs 'ExternalType' in Java-Datentypen konvertiert werden. Bei dieser Zuordnung handelt es sich um die einzige Zuordnung, bei der die Konvertierung von EGL in Java nicht einfache eine Umkehrung der Konvertierung von Java in EGL ist. Das Fragezeichen weist auf einen Typ hin, der Nullwerte annehmen kann. Weitere Informationen hierzu finden Sie im Abschnitt 'Nullwerte und nullfähiger Typ'.
| EGL-Typ | Java-Typ |
|---|---|
| CHAR, CHAR?, MBCHAR, MBCHAR?, DBCHAR, DBCHAR?, UNICODE, UNICODE? | java.lang.String mit Entfernen und Auffüllen von abschließenden Leerzeichen und Verkürzung bei Übergängen |
| 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 (keine Dezimalstellen) | 1<=length<=9, int |
| DECIMAL?, BIN?, MONEY?, NUM? (keine Dezimalstellen) | 1<=length<=9, java.lang.Integer |
| DECIMAL, DECIMAL?, BIN, BIN?, MONEY, MONEY?, NUM, NUM? (deklariert mit Dezimalstellen) | 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? (Mikrosekunden) | java.math.BigInteger (Mikrosekunden) |
| INTERVAL, INTERVAL? (Monate) | long (Monate) |
| BLOB | - |
| CLOB | - |
| Dynamische Feldgruppe | java.util.List. Die Elemente der dynamischen Feldgruppe werden wie in dieser Tabelle angegeben in Java-Typen konvertiert. Eine Feldgruppe mit dem Typ EGL DATE wird in eine Liste des Typs 'java.util.List' konvertiert, bei deren Elementen es sich um Objekte des Typs 'java.sql.Date' handelt. |
| Strukturierter Datensatz | byte[n], wobei n die Anzahl der Bytes im Datensatz angibt. |
Der folgenden Tabelle können Sie entnehmen, wie Java-Datentypen in einem Aufruf einer Funktion des Typs 'ExternalType' in EGL-Basiselementtypen konvertiert werden. Ein Stern in der ersten Spalte weist darauf hin, dass es sich bei der Konvertierung um eine Umkehrung der Konvertierung von EGL in Java handelt.
| Java-Typ | EGL-Typ |
|---|---|
| char* | UNICODE(1) |
| java.lang.Character* | UNICODE(1)? |
| java.lang.String* | STRING |
| byte* | HEX(2) |
| byte[n] | HEX(n*2)? |
| byte[n]* | Strukturierter Datensatz, wobei n die Anzahl der Bytes im Datensatz angibt. |
| 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). Die Anzahl der Ziffern ist bei 'java.math.BigDecimal' nicht begrenzt. Bei EGL ist die Anzahl der Ziffern bei der Java-Generierung auf 32 begrenzt. |
| java.math.BigInteger | NUM(32). Die Anzahl der Ziffern ist bei 'java.math.BigInteger' nicht begrenzt. Bei EGL ist die Anzahl der Ziffern bei der Java-Generierung auf 32 begrenzt. |
| 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. Die Liste wird in eine dynamische EGL-Feldgruppe konvertiert, deren Typ sich nach dem Typ der Listenelemente richtet. Enthält die Liste z. B. Objekte des Typs 'java.lang.Double', weist die dynamische EGL-Feldgruppe den Typ FLOAT?[] auf. |
Datentypen werden in XML-Berichtsentwürfen als Java-Datentypen beschrieben. Verwenden Sie zum Aufrufen von EGL-Handlerfunktionen des Typs 'JasperReport' im Entwurfsdokument den Java-Datentyp für den Aufruf, der dem geeigneten EGL-Basiselementtyp entspricht. Sie müssen auch die Daten, die von der JasperReport-Handlerfunktion an die XML-Entwurfsdatei zurückgegeben werden, mit Java-Datentypen deklarieren.
Der folgenden Tabelle können Sie die Java-Datentypen, die für die Verwendung in XML-Berichtsentwurfsdokumenten vorgesehen sind, sowie die entsprechenden EGL-Basiselementtypen entnehmen.
| EGL-Basiselementtyp | Java-Datentyp |
|---|---|
| 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 |
Wenn Sie ein Argument an eine Funktion aus der EGL-Systembibliothek 'JavaLib' übergeben, wird das Argument von EGL in den in der folgenden Tabelle angegebenen Java-Typ konvertiert. Der Rückgabewert wird vom Typ in der rechten Spalte in den in der linken Spalte angegebenen Typ konvertiert.
| EGL-Typ | Beispiele | Java-Typ | |
|---|---|---|---|
| Zeichenfolgeliteral oder Variable des Typs CHAR, DBCHAR, MBCHAR oder UNICODE | Keine Umsetzung |
|
java.lang.String |
| Umsetzung in 'objID:java' (Angabe einer Kennung) |
|
Die Klasse des Objekts, auf das die Kennung verweist | |
| Umsetzung von Null, wie es für das Bereitstellen einer Nullreferenz auf eine vollständig qualifizierte Klasse sinnvoll sein kann. |
|
Die angegebene Klasse Anmerkung: Sie können keine Elemente in einer Feldgruppe
mit Nullumsetzung übergeben, z. B. 'null as "java:int[]" '
|
|
| Nehmen Sie die Umsetzung mit 'java:char' vor, sodass das erste Zeichen des Werts übergeben wird. Bei den einzelnen Beispielen in der nächsten Spalte handelt es sich dabei um das Zeichen 'a'. |
|
char | |
| Variable des Typs STRING | Keine Umsetzung | myStringVar | java.lang.String |
| Variable des Typs FLOAT | Keine Umsetzung |
|
double |
| Variable des Typs HEX | Keine Umsetzung |
|
Bytefeldgruppe |
| Variable des Typs SMALLFLOAT | Keine Umsetzung |
|
float |
| Variable des Typs DATE | Keine Umsetzung |
|
java.sql.Date |
| Variable des Typs TIME | Keine Umsetzung |
|
java.sql.Time |
| Variable des Typs TIMESTAMP | Keine Umsetzung |
|
java.sql.Timestamp |
| Variable des Typs INTERVAL | Keine Umsetzung |
|
java.lang.String |
| Boolesche Variable | Keine Umsetzung |
|
boolean |
| Gleitkommaliteral | Keine Umsetzung | -6.5231E96 | double |
| Numerische Variable (oder ein Literal, bei dem es sich nicht um ein Gleitkommaliteral handelt) ohne Dezimalstellen. Führende Nullen werden bei der Anzahl der Ziffern für ein Literal berücksichtigt. | Keine Umsetzung, 1 - 4 Ziffern |
|
short |
| Keine Umsetzung, 5 - 9 Ziffern |
|
int | |
| Keine Umsetzung, 9 - 18 Ziffern |
|
long | |
| Keine Umsetzung, > 18 Ziffern |
|
java.math.BigInteger | |
| Numerische Variable (oder ein Literal, bei dem es sich nicht um ein Gleitkommaliteral handelt) mit Dezimalstellen. Führende und abschließende Nullen werden bei der Anzahl der Ziffern für ein Literal berücksichtigt. | Keine Umsetzung, 1 - 6 Ziffern |
|
float |
| Keine Umsetzung, 7 - 18 Ziffern |
|
double | |
| Keine Umsetzung, > 18 Ziffern |
|
java.math.BigDecimal | |
| Numerische Variable oder ein Literal, bei dem es sich nicht um ein Gleitkommaliteral handelt, mit oder ohne Dezimalstellen | Umsetzen als |
|
Der angegebene Typ. Liegt der Wert jedoch nicht in dem gültigen Bereich für den betreffenden Typ, gehen Dezimalstellen verloren und das Vorzeichen ändert sich möglicherweise. |
| Umsetzen mit 'java:boolean', sodass 'ungleich null' zu 'wahr' und 'null' zu 'falsch' wird. |
|
boolean | |
Die folgende Tabelle verdeutlicht die Konvertierung von EGL in Java, die EGL vornimmt, wenn Argumente von einem JSF-Handler an eine Java-Funktion übergeben werden. Der Rückgabewert der Funktion wird von einem Java-Typ in einen EGL-Typ umgesetzt. Wenn Sie ein EGL-Nullargument an die Funktion übergeben, wird ein Java-Nullwert zurückgegeben.
| EGL-Typ | Java-Typ |
|---|---|
| BIGINT / BIN(18) | java.lang.Long |
| BIN mit Dezimalstellen | 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 |
| Datensatz | Ein Objekt, das der JavaBeans-Spezifikation entspricht (das Objekt verfügt über Methoden für den Abruf der Werte der Datensatzfelder) |
In diesem Fall wird die Variable wie eine boolesche Variable behandelt und zu 'java.lang.Boolean' zugeordnet.