Dmitry Lychagin has submitted this change and it was merged. 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 Reviewed-on: https://asterix-gerrit.ics.uci.edu/2602 Sonar-Qube: Jenkins <[email protected]> Tested-by: Jenkins <[email protected]> Contrib: Jenkins <[email protected]> Integration-Tests: Jenkins <[email protected]> Reviewed-by: Till Westmann <[email protected]> --- M asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DateTimeFormatUtils.java 1 file changed, 10 insertions(+), 9 deletions(-) Approvals: Anon. E. Moose #1000171: Till Westmann: Looks good to me, approved Jenkins: Verified; No violations found; ; Verified 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: merged Gerrit-Change-Id: I4ce576f98dc1fd58f7b12afa39b1286f7b652a49 Gerrit-PatchSet: 2 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Dmitry Lychagin <[email protected]> Gerrit-Reviewer: Anon. E. Moose #1000171 Gerrit-Reviewer: Dmitry Lychagin <[email protected]> Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Till Westmann <[email protected]>
