Java에 EGL 기본요소 맵핑
- 외부 유형 함수(EGL에서 Java로)
- 외부 유형 함수(Java에서 EGL로)
- 보고서 함수
- JavaLib 함수
- JSF 핸들러 함수
이 표에는 기본 기술의 제한사항이 노출됩니다. 예를 들어, ExternalType 함수를 호출하면 EGL TIMESTAMP가 java.lang.Timestamp 클래스로 변환됩니다. 해당 클래스는 JSF에서 사용할 수 없으므로 EGL TIMESTAMP는 JSF 핸들러의 java.util.Calendar로 변환됩니다.
다음 표에서 일부 EGL 기본요소는 클래스(예: java.math.BigDecimal)로 변환되고 일부는 Java 기본요소(예: long)로 변환됩니다.
ExternalType 함수
다음 표에서는 ExternalType 함수 호출에서 EGL 기본 유형이 Java 데이터 유형으로 변환되는 방식을 보여줍니다. 이는 EGL에서 Java로의 변환이 단순히 Java에서 EGL로의 미러 이미지가 아닌 유일한 맵핑입니다. 물음표는 널 입력 가능 유형을 표시합니다. 자세한 정보는 "널값 및 널 입력 가능 유형"을 참조하십시오.
| 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. 목록은 유형이 목록 요소의 유형에 의해 판별되는 EGL 동적 배열로 변환됩니다. 예를 들어, 목록에 java.lang.Double 오브젝트가 포함된 경우 EGL 동적 배열은 FLOAT?[] 유형입니다. |
보고서 함수
XML 보고서 디자인 문서에서 데이터 유형은 Java 데이터 유형으로 설명되어 있습니다. 디자인 문서에서 EGL JasperReport 핸들러 함수를 호출하는 경우 호출에서는 해당 EGL 기본 유형에 해당하는 Java 데이터 유형을 사용해야 합니다. 또한 JasperReport 핸들러 함수가 Java 데이터 유형의 관점에서 XML 디자인 파일에 리턴하는 데이터를 선언해야 합니다.
다음 표에서는 XML 보고서 디자인 문서에서 사용할 Java 데이터 유형과 해당 EGL 기본 유형을 보여줍니다.
| 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 함수
JavaLib EGL 시스템 라이브러리의 함수에 인수를 전달하는 경우 EGL은 해당 인수를 다음 표에 표시된 Java 유형으로 변환합니다. 리턴값은 오른쪽 열의 유형에서 왼쪽 열의 해당 유형으로 변환됩니다.
| EGL 유형 | 예제 | Java 유형 | |
|---|---|---|---|
| 문자열 리터럴 또는 CHAR, DBCHAR, MBCHAR 또는 UNICODE 변수 | 캐스트 없음 |
|
java.lang.String |
| 캐스트 objID:java(ID를 표시함) |
|
ID가 참조하는 오브젝트의 클래스 | |
| 널로부터 캐스트(완전한 클래스에 대한 널 참조를 제공하기 위해 적절한 경우와 같음) |
|
지정된 클래스 참고: 'null as "java:int[]" ' 등의
널-캐스트 배열은 전달할 수 없음
|
|
| 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 |
| 소수가 포함되지 않은 숫자 변수(또는 부동 소수점이 아닌 리터럴)(선행 0(영)이 리터럴의 자릿수에 포함됨) | 캐스트 없음, 1자리 - 4자리 숫자 |
|
short |
| 캐스트 없음, 5자리 - 9자리 숫자 |
|
int | |
| 캐스트 없음, 9자리 - 18자리 숫자 |
|
long | |
| 캐스트 없음, 18자리를 초과하는 숫자 |
|
java.math.BigInteger | |
| 소수가 포함된 숫자 변수(또는 부동 소수점이 아닌 리터럴)(선행 및 후미 0(영)이 리터럴의 자릿수에 포함됨) | 캐스트 없음, 1자리 - 6자리 숫자 |
|
float |
| 캐스트 없음, 7자리 - 18자리 숫자 |
|
double | |
| 캐스트 없음, 18자리를 초과하는 숫자 |
|
java.math.BigDecimal | |
| 숫자 변수 또는 부동 소수점이 아닌 리터럴(소수 포함 여부는 관계 없음) | 다음과 같이 캐스트됨 |
|
지정된 유형(값이 해당 유형의 범위를 벗어나면 정밀도 손실이 발생하고 부호가 변경될 수 있음) |
| java:boolean을 사용하여 캐스트(0(영)이 아니면 true이고 0(영)이면 false임) |
|
boolean | |
JSF 핸들러 함수
다음 표에서는 JSF 핸들러의 인수를 Java 함수에 전달할 때 EGL이 수행하는 EGL에서 Java로 변환을 보여줍니다. 함수의 리턴값은 Java 유형에서 EGL 유형으로 변환됩니다. EGL 널 인수를 함수에 전달하면 Java 널값이 리턴됩니다.
| 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 스펙을 준수하는 오브젝트(이 오브젝트는 레코드 필드의 값을 가져오는 메소드를 가지고 있음) |
- CHAR
- BIN
- NUM
- NUMC
- DECIMAL
- PACF
- INT
- BIGINT
- SMALLINT
- FLOAT
- MONEY
이 경우 변수는 java.lang.Boolean에 맵핑되는 실제 BOOLEAN처럼 처리됩니다.