Dmitry Lychagin has uploaded a new change for review.
https://asterix-gerrit.ics.uci.edu/2602
Change subject: [NO ISSUE][FUN] Add helper method to find time zone
......................................................................
[NO ISSUE][FUN] Add helper method to find time zone
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
- Add method DateTimeFormatUtils.findTimeZone()
to find time zone by its name
Change-Id: I4ce576f98dc1fd58f7b12afa39b1286f7b652a49
---
M
asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DateTimeFormatUtils.java
1 file changed, 10 insertions(+), 9 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/02/2602/1
diff --git
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DateTimeFormatUtils.java
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DateTimeFormatUtils.java
index f837e36..98abb97 100644
---
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DateTimeFormatUtils.java
+++
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DateTimeFormatUtils.java
@@ -148,20 +148,20 @@
};
private static final byte[][] TIMEZONE_IDS;
- private static final int[] TIMEZONE_OFFSETS;
+ private static final TimeZone[] TIMEZONE_VALUES;
static {
String[] tzIds = TimeZone.getAvailableIDs();
int tzCount = tzIds.length;
TIMEZONE_IDS = new byte[tzCount][];
- TIMEZONE_OFFSETS = new int[tzCount];
+ TIMEZONE_VALUES = new TimeZone[tzCount];
for (int i = 0; i < tzCount; i++) {
TIMEZONE_IDS[i] = tzIds[i].getBytes(ENCODING);
}
Arrays.sort(TIMEZONE_IDS, byteArrayComparator);
for (int i = 0; i < tzCount; i++) {
- TIMEZONE_OFFSETS[i] = TimeZone.getTimeZone(new
String(TIMEZONE_IDS[i], ENCODING)).getRawOffset();
+ TIMEZONE_VALUES[i] = TimeZone.getTimeZone(new
String(TIMEZONE_IDS[i], ENCODING));
}
}
@@ -241,9 +241,10 @@
return -1;
}
- private int binaryTimezoneIDSearch(byte[] barray, int start, int length) {
- return Arrays.binarySearch(TIMEZONE_IDS, 0, TIMEZONE_IDS.length,
+ public static TimeZone findTimeZone(byte[] barray, int start, int length) {
+ int idx = Arrays.binarySearch(TIMEZONE_IDS, 0, TIMEZONE_IDS.length,
Arrays.copyOfRange(barray, start, start + length),
byteArrayComparator);
+ return idx >= 0 ? TIMEZONE_VALUES[idx] : null;
}
private int indexOf(byte[] barray, int start, int length, char c) {
@@ -683,10 +684,10 @@
|| data[dataStart + timezoneEndField] == '_'))
{
timezoneEndField++;
}
- int searchIdx = binaryTimezoneIDSearch(data, dataStart
+ dataStringPointer,
- timezoneEndField - dataStringPointer);
- if (searchIdx >= 0) {
- timezone = TIMEZONE_OFFSETS[searchIdx];
+ TimeZone tz =
+ findTimeZone(data, dataStart +
dataStringPointer, timezoneEndField - dataStringPointer);
+ if (tz != null) {
+ timezone = tz.getRawOffset();
} else {
if (raiseParseDataError) {
throw new
AsterixTemporalTypeParseException("Unexpected timezone string: " + new String(
--
To view, visit https://asterix-gerrit.ics.uci.edu/2602
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I4ce576f98dc1fd58f7b12afa39b1286f7b652a49
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <[email protected]>