Altibase.jdbc.driver

## Class AltibaseUrlParser

- java.lang.Object
- - Altibase.jdbc.driver.AltibaseUrlParser

    public class AltibaseUrlParser
    extends java.lang.Object

정규표현식을 이용해 connection string이나 alternate servers string을 파싱한다.

### Field Summary

Fields
`static java.lang.String` `URL_PREFIX`

### Method Summary

All Methods Static Methods Concrete Methods
`static boolean` `acceptsURL(java.lang.String aURL)`
`static AltibaseFailoverServerInfoList` `parseAlternateServers(java.lang.String aAlternateServersStr)` alternate servers string을 파싱해 `AltibaseFailoverServerInfoList`를 만든다.
`static boolean` `parseURL(java.lang.String aURL, AltibaseProperties aDestProp)` URL을 파싱해 aDestProp에 property로 설정한다.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### URL_PREFIX

    public static final java.lang.String URL_PREFIX

### Method Detail

#### acceptsURL

    public static boolean acceptsURL(java.lang.String aURL)

#### parseURL

    public static boolean parseURL(java.lang.String aURL,
                                   AltibaseProperties aDestProp)
                            throws java.sql.SQLException

URL을 파싱해 aDestProp에 property로 설정한다.
이때 URL에 shard prefix가 포함되어 있는 경우 true를 리턴하고 그렇지 않은 경우 false를 리턴한다.

유효한 URL 포맷은 다음과 같다:

- jdbc:Altibase://123.123.123.123:20300/mydb
- jdbc:Altibase://abc.abc.abc.abc:20300/mydb
- jdbc:Altibase://123.123.123.123/mydb
- jdbc:Altibase://[::1]:20300/mydb
- jdbc:Altibase://[::1]:20300/mydb?prop1=val1&prop2=val2
- jdbc:Altibase://[::1]/mydb
- jdbc:Altibase://DataSourceName
- jdbc:Altibase://DataSourceName:20300
- jdbc:Altibase://DataSourceName:20300?prop1=val1& prop2=val2
- jdbc:sharding:Altibase://123.123.123.123:20300/mydb

연결 속성은 connection url에 따라 총 3가지의 설정이 충돌할 수 있는데, 그 때 설정값의 우선순위는 다음과 같다:

1. connection url로 받은값 (= aURL)
2. 기존에 설정된 값 (= aDestProp = connect 메소드로 넘어온 값)
3. altibase_cli.ini 설정 (DSN을 사용하는 경우)

Parameters:
  `aURL` - connection url
  `aDestProp` - 파싱 결과를 담을 Property
Returns:
  shard prefix가 포함되어 있는지 여부
Throws:
  `java.sql.SQLException` - URL 구성이 올바르지 않은 경우

#### parseAlternateServers

    public static AltibaseFailoverServerInfoList parseAlternateServers(java.lang.String aAlternateServersStr)
                                                                throws java.sql.SQLException

alternate servers string을 파싱해 `AltibaseFailoverServerInfoList`를 만든다.

alternate servers string은 "( host_name:port[/dbname][, host_name:port[/dbname]]* )"와 같은 포맷이어야 한다. 예를 들면 다음과 같다:
(192.168.3.54:20300, 192.168.3.55:20301) (abc.abc.abc.abc:20300, abc.abc.abc.abc:20301) (192.168.3.54:20300/mydb1, 192.168.3.55:20301/mydb2) (abc.abc.abc.abc:20300/mydb1, abc.abc.abc.abc:20301/mydb2)

만약 alternate servers string에 IPv6 형태의 주소를 쓰고자 한다면, ip를 [, ]로 감싸야 한다. 예를들어, "::1"을 쓰고자 한다면 "[::1]:20300" 처럼 써야지 "::1:20300" 처럼 쓰면 안된다. 이런 경우에는 ParseException을 낸다.

alternate servers string이 null이거나 서버 정보가 없어도 null 대신 빈 리스트를 반환한다. 이는 받는쪽에서 null 처리 없이 쓸 수 있게 하기 위함이다.

Parameters:
  `aAlternateServersStr` - 대안 서버 목록을 담은 문자열
Returns:
  변환된 `AltibaseFailoverServerInfoList` 객체
Throws:
  `java.sql.SQLException` - alternate servers string의 포맷이 올바르지 않을 경우