aboutsummaryrefslogtreecommitdiffstats
path: root/libs/android-transcoder/src/main/java/net/ypresto/androidtranscoder/utils/ISO6709LocationParser.java
diff options
context:
space:
mode:
Diffstat (limited to 'libs/android-transcoder/src/main/java/net/ypresto/androidtranscoder/utils/ISO6709LocationParser.java')
-rw-r--r--libs/android-transcoder/src/main/java/net/ypresto/androidtranscoder/utils/ISO6709LocationParser.java37
1 files changed, 37 insertions, 0 deletions
diff --git a/libs/android-transcoder/src/main/java/net/ypresto/androidtranscoder/utils/ISO6709LocationParser.java b/libs/android-transcoder/src/main/java/net/ypresto/androidtranscoder/utils/ISO6709LocationParser.java
new file mode 100644
index 000000000..273007d3c
--- /dev/null
+++ b/libs/android-transcoder/src/main/java/net/ypresto/androidtranscoder/utils/ISO6709LocationParser.java
@@ -0,0 +1,37 @@
+package net.ypresto.androidtranscoder.utils;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class ISO6709LocationParser {
+ private final Pattern pattern;
+
+ public ISO6709LocationParser() {
+ this.pattern = Pattern.compile("([+\\-][0-9.]+)([+\\-][0-9.]+)");
+ }
+
+ /**
+ * This method parses the given string representing a geographic point location by coordinates in ISO 6709 format
+ * and returns the latitude and the longitude in float. If <code>location</code> is not in ISO 6709 format,
+ * this method returns <code>null</code>
+ *
+ * @param location a String representing a geographic point location by coordinates in ISO 6709 format
+ * @return <code>null</code> if the given string is not as expected, an array of floats with size 2,
+ * where the first element represents latitude and the second represents longitude, otherwise.
+ */
+ public float[] parse(String location) {
+ if (location == null) return null;
+ Matcher m = pattern.matcher(location);
+ if (m.find() && m.groupCount() == 2) {
+ String latstr = m.group(1);
+ String lonstr = m.group(2);
+ try {
+ float lat = Float.parseFloat(latstr);
+ float lon = Float.parseFloat(lonstr);
+ return new float[]{lat, lon};
+ } catch (NumberFormatException ignored) {
+ }
+ }
+ return null;
+ }
+}