Java에 EGL 기본요소 맵핑

EGL은 EGL과 Java™ 사이에서 기본 데이터 유형을 변환합니다. 가능한 변환에 대해 설명하기 위해 5개의 다른 표가 필요합니다.
  • 외부 유형 함수(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로의 미러 이미지가 아닌 유일한 맵핑입니다. 물음표는 널 입력 가능 유형을 표시합니다. 자세한 정보는 "널값 및 널 입력 가능 유형"을 참조하십시오.

표 1. EGL에서 Java로 변환
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
10<=length<=18, long
19<=length<=32, java.math.BigInteger

DECIMAL?, BIN?, MONEY?, NUM?(소수 자리 없음)

1<=length<=9,  java.lang.Integer
10<=length<=18,  java.lang.Long
19<=length<=32, java.math.BigInteger

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로의 변환의 미러임을 표시합니다.

표 2. Java에서 EGL로 변환
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 기본 유형을 보여줍니다.

표 3. 보고서를 위해 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 함수

JavaLib EGL 시스템 라이브러리의 함수에 인수를 전달하는 경우 EGL은 해당 인수를 다음 표에 표시된 Java 유형으로 변환합니다. 리턴값은 오른쪽 열의 유형에서 왼쪽 열의 해당 유형으로 변환됩니다.

표 4. JavaLib 함수에 인수 전달
EGL 유형 예제 Java 유형
문자열 리터럴 또는 CHAR, DBCHAR, MBCHAR 또는 UNICODE 변수 캐스트 없음
"myString"
java.lang.String
캐스트 objID:java(ID를 표시함)
"myId" as 
   "objID:java"

x = "myId";
x as "objID:java"
ID가 참조하는 오브젝트의 클래스
널로부터 캐스트(완전한 클래스에 대한 널 참조를 제공하기 위해 적절한 경우와 같음)
NULL as "java:
java.lang.Thread"

x = "java.util.
HashMap";
NULL as x
지정된 클래스
참고: 'null as "java:int[]" ' 등의 널-캐스트 배열은 전달할 수 없음
java:char을 사용하여 캐스트(값의 첫 번째 문자가 전달됨을 의미하며 다음 열의 각 예제가 "a"를 전달함)
"abc" as "java:char"

x = "abc";
x as "java:char"
char
STRING 변수 캐스트 없음 myStringVar java.lang.String
FLOAT 변수 캐스트 없음
myFloatValue
double
HEX 변수 캐스트 없음
myHexValue
바이트 배열
SMALLFLOAT 변수 캐스트 없음
mySmallFloat
float
DATE 변수 캐스트 없음
myDate
java.sql.Date
TIME 변수 캐스트 없음
myTime
java.sql.Time
TIMESTAMP 변수 캐스트 없음
myTimeStamp
java.sql.Timestamp
INTERVAL 변수 캐스트 없음
myInterval
java.lang.String
BOOLEAN 변수 캐스트 없음
myBoolean
boolean
부동 소수점 리터럴 캐스트 없음 -6.5231E96 double
소수가 포함되지 않은 숫자 변수(또는 부동 소수점이 아닌 리터럴)(선행 0(영)이 리터럴의 자릿수에 포함됨) 캐스트 없음, 1자리 - 4자리 숫자
0100
short
캐스트 없음, 5자리 - 9자리 숫자
00100
int
캐스트 없음, 9자리 - 18자리 숫자
1234567890
long
캐스트 없음, 18자리를 초과하는 숫자
1234567890123456789
java.math.BigInteger
소수가 포함된 숫자 변수(또는 부동 소수점이 아닌 리터럴)(선행 및 후미 0(영)이 리터럴의 자릿수에 포함됨) 캐스트 없음, 1자리 - 6자리 숫자
3.14159
float
캐스트 없음, 7자리 - 18자리 숫자
3.14159265
double
캐스트 없음, 18자리를 초과하는 숫자
56789543.222
java.math.BigDecimal
숫자 변수 또는 부동 소수점이 아닌 리터럴(소수 포함 여부는 관계 없음)

다음과 같이 캐스트됨
java:java.math.-
BigDecimal,
BigInteger,
java:byte,
java:double,
java:float,
java:short,
java:int,
java:long

x = 42;

x as "java:byte"

x as "java:long"
지정된 유형(값이 해당 유형의 범위를 벗어나면 정밀도 손실이 발생하고 부호가 변경될 수 있음)
java:boolean을 사용하여 캐스트(0(영)이 아니면 true이고 0(영)이면 false임)
x = 1;
x as "java:boolean"
boolean

JSF 핸들러 함수

다음 표에서는 JSF 핸들러의 인수를 Java 함수에 전달할 때 EGL이 수행하는 EGL에서 Java로 변환을 보여줍니다. 함수의 리턴값은 Java 유형에서 EGL 유형으로 변환됩니다. EGL 널 인수를 함수에 전달하면 Java 널값이 리턴됩니다.

표 5. JSF 핸들러를 위한 변환
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 스펙을 준수하는 오브젝트(이 오브젝트는 레코드 필드의 값을 가져오는 메소드를 가지고 있음)
*다음과 같은 기본 유형을 기반으로 하는 변수는 해당 IsBoolean 특성을 YES로 설정할 수 있습니다.
  • CHAR
  • BIN
  • NUM
  • NUMC
  • DECIMAL
  • PACF
  • INT
  • BIGINT
  • SMALLINT
  • FLOAT
  • MONEY

이 경우 변수는 java.lang.Boolean에 맵핑되는 실제 BOOLEAN처럼 처리됩니다.