diff options
Diffstat (limited to 'src/org/traccar/helper/Parser.java')
-rw-r--r-- | src/org/traccar/helper/Parser.java | 348 |
1 files changed, 0 insertions, 348 deletions
diff --git a/src/org/traccar/helper/Parser.java b/src/org/traccar/helper/Parser.java deleted file mode 100644 index 1471ec237..000000000 --- a/src/org/traccar/helper/Parser.java +++ /dev/null @@ -1,348 +0,0 @@ -/* - * Copyright 2015 - 2017 Anton Tananaev (anton@traccar.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.traccar.helper; - -import java.util.Date; -import java.util.TimeZone; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public class Parser { - - private int position; - private final Matcher matcher; - - public Parser(Pattern pattern, String input) { - matcher = pattern.matcher(input); - } - - public boolean matches() { - position = 1; - return matcher.matches(); - } - - public boolean find() { - position = 1; - return matcher.find(); - } - - public void skip(int number) { - position += number; - } - - public boolean hasNext() { - return hasNext(1); - } - - public boolean hasNext(int number) { - String value = matcher.group(position); - if (value != null && !value.isEmpty()) { - return true; - } else { - position += number; - return false; - } - } - - public String next() { - return matcher.group(position++); - } - - public Integer nextInt() { - if (hasNext()) { - return Integer.parseInt(next()); - } else { - return null; - } - } - - public int nextInt(int defaultValue) { - if (hasNext()) { - return Integer.parseInt(next()); - } else { - return defaultValue; - } - } - - public Integer nextHexInt() { - if (hasNext()) { - return Integer.parseInt(next(), 16); - } else { - return null; - } - } - - public int nextHexInt(int defaultValue) { - if (hasNext()) { - return Integer.parseInt(next(), 16); - } else { - return defaultValue; - } - } - - public Integer nextBinInt() { - if (hasNext()) { - return Integer.parseInt(next(), 2); - } else { - return null; - } - } - - public int nextBinInt(int defaultValue) { - if (hasNext()) { - return Integer.parseInt(next(), 2); - } else { - return defaultValue; - } - } - - public Long nextLong() { - if (hasNext()) { - return Long.parseLong(next()); - } else { - return null; - } - } - - public Long nextHexLong() { - if (hasNext()) { - return Long.parseLong(next(), 16); - } else { - return null; - } - } - - public long nextLong(long defaultValue) { - return nextLong(10, defaultValue); - } - - public long nextLong(int radix, long defaultValue) { - if (hasNext()) { - return Long.parseLong(next(), radix); - } else { - return defaultValue; - } - } - - public Double nextDouble() { - if (hasNext()) { - return Double.parseDouble(next()); - } else { - return null; - } - } - - public double nextDouble(double defaultValue) { - if (hasNext()) { - return Double.parseDouble(next()); - } else { - return defaultValue; - } - } - - public enum CoordinateFormat { - DEG_DEG, - DEG_HEM, - DEG_MIN_MIN, - DEG_MIN_HEM, - DEG_MIN_MIN_HEM, - HEM_DEG_MIN_MIN, - HEM_DEG, - HEM_DEG_MIN, - HEM_DEG_MIN_HEM - } - - public double nextCoordinate(CoordinateFormat format) { - double coordinate; - String hemisphere = null; - - switch (format) { - case DEG_DEG: - coordinate = Double.parseDouble(next() + '.' + next()); - break; - case DEG_HEM: - coordinate = nextDouble(0); - hemisphere = next(); - break; - case DEG_MIN_MIN: - coordinate = nextInt(0); - coordinate += Double.parseDouble(next() + '.' + next()) / 60; - break; - case DEG_MIN_MIN_HEM: - coordinate = nextInt(0); - coordinate += Double.parseDouble(next() + '.' + next()) / 60; - hemisphere = next(); - break; - case HEM_DEG: - hemisphere = next(); - coordinate = nextDouble(0); - break; - case HEM_DEG_MIN: - hemisphere = next(); - coordinate = nextInt(0); - coordinate += nextDouble(0) / 60; - break; - case HEM_DEG_MIN_HEM: - hemisphere = next(); - coordinate = nextInt(0); - coordinate += nextDouble(0) / 60; - if (hasNext()) { - hemisphere = next(); - } - break; - case HEM_DEG_MIN_MIN: - hemisphere = next(); - coordinate = nextInt(0); - coordinate += Double.parseDouble(next() + '.' + next()) / 60; - break; - case DEG_MIN_HEM: - default: - coordinate = nextInt(0); - coordinate += nextDouble(0) / 60; - hemisphere = next(); - break; - } - - if (hemisphere != null && (hemisphere.equals("S") || hemisphere.equals("W") || hemisphere.equals("-"))) { - coordinate = -Math.abs(coordinate); - } - - return coordinate; - } - - public double nextCoordinate() { - return nextCoordinate(CoordinateFormat.DEG_MIN_HEM); - } - - public enum DateTimeFormat { - HMS, - SMH, - HMS_YMD, - HMS_DMY, - SMH_YMD, - SMH_DMY, - DMY_HMS, - DMY_HMSS, - YMD_HMS, - YMD_HMSS, - } - - public Date nextDateTime(DateTimeFormat format, String timeZone) { - int year = 0, month = 0, day = 0; - int hour = 0, minute = 0, second = 0, millisecond = 0; - - switch (format) { - case HMS: - hour = nextInt(0); - minute = nextInt(0); - second = nextInt(0); - break; - case SMH: - second = nextInt(0); - minute = nextInt(0); - hour = nextInt(0); - break; - case HMS_YMD: - hour = nextInt(0); - minute = nextInt(0); - second = nextInt(0); - year = nextInt(0); - month = nextInt(0); - day = nextInt(0); - break; - case HMS_DMY: - hour = nextInt(0); - minute = nextInt(0); - second = nextInt(0); - day = nextInt(0); - month = nextInt(0); - year = nextInt(0); - break; - case SMH_YMD: - second = nextInt(0); - minute = nextInt(0); - hour = nextInt(0); - year = nextInt(0); - month = nextInt(0); - day = nextInt(0); - break; - case SMH_DMY: - second = nextInt(0); - minute = nextInt(0); - hour = nextInt(0); - day = nextInt(0); - month = nextInt(0); - year = nextInt(0); - break; - case DMY_HMS: - case DMY_HMSS: - day = nextInt(0); - month = nextInt(0); - year = nextInt(0); - hour = nextInt(0); - minute = nextInt(0); - second = nextInt(0); - break; - case YMD_HMS: - case YMD_HMSS: - default: - year = nextInt(0); - month = nextInt(0); - day = nextInt(0); - hour = nextInt(0); - minute = nextInt(0); - second = nextInt(0); - break; - } - - if (format == DateTimeFormat.YMD_HMSS || format == DateTimeFormat.DMY_HMSS) { - millisecond = nextInt(0); // (ddd) - } - - if (year >= 0 && year < 100) { - year += 2000; - } - - DateBuilder dateBuilder; - if (format != DateTimeFormat.HMS && format != DateTimeFormat.SMH) { - if (timeZone != null) { - dateBuilder = new DateBuilder(TimeZone.getTimeZone(timeZone)); - } else { - dateBuilder = new DateBuilder(); - } - dateBuilder.setDate(year, month, day); - } else { - if (timeZone != null) { - dateBuilder = new DateBuilder(new Date(), TimeZone.getTimeZone(timeZone)); - } else { - dateBuilder = new DateBuilder(new Date()); - } - } - - dateBuilder.setTime(hour, minute, second, millisecond); - - return dateBuilder.getDate(); - } - - public Date nextDateTime(DateTimeFormat format) { - return nextDateTime(format, null); - } - - public Date nextDateTime() { - return nextDateTime(DateTimeFormat.YMD_HMS, null); - } - -} |