/* * Copyright 2015 Anton Tananaev (anton.tananaev@gmail.com) * * 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.regex.Matcher; import java.util.regex.Pattern; public class Parser { private int position = 1; private Matcher matcher; public Parser(Pattern pattern, String input) { matcher = pattern.matcher(input); } public boolean matches() { return matcher.matches(); } public boolean hasNext() { if (matcher.group(position) != null) { return true; } else { position++; return false; } } public String next() { return matcher.group(position++); } public int nextInt() { return Integer.parseInt(next()); } public int nextInt(int radix) { return Integer.parseInt(next(), radix); } public double nextDouble() { return Double.parseDouble(next()); } // Format: (degrees)(minutes)(hemisphere) public double nextCoordinate() { double coordinate = nextDouble(); coordinate += nextDouble() / 60; String hemisphere = next(); if (hemisphere.equals("S") || hemisphere.equals("W")) { coordinate = -coordinate; } return coordinate; } }