aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/org/traccar/location/BaseLocationProvider.java37
-rw-r--r--src/org/traccar/location/LocationProvider.java30
-rw-r--r--src/org/traccar/location/OpenCellIdLocationProvider.java24
-rw-r--r--test/org/traccar/geocode/ReverseGeocoderTest.java4
-rw-r--r--test/org/traccar/location/LocationProviderTest.java44
5 files changed, 135 insertions, 4 deletions
diff --git a/src/org/traccar/location/BaseLocationProvider.java b/src/org/traccar/location/BaseLocationProvider.java
new file mode 100644
index 000000000..80b10b33c
--- /dev/null
+++ b/src/org/traccar/location/BaseLocationProvider.java
@@ -0,0 +1,37 @@
+/*
+ * 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.location;
+
+import org.traccar.model.Event;
+
+import java.util.Map;
+
+public abstract class BaseLocationProvider implements LocationProvider {
+
+ @Override
+ public void getLocation(Map<String, Object> attributes, LocationProviderCallback callback) {
+ if (attributes.containsKey(Event.KEY_MCC) || attributes.containsKey(Event.KEY_MNC)) {
+ Number mcc = (Number) attributes.get(Event.KEY_MCC);
+ Number mnc = (Number) attributes.get(Event.KEY_MNC);
+ Number lac = (Number) attributes.get(Event.KEY_LAC);
+ Number cid = (Number) attributes.get(Event.KEY_CID);
+ getLocation(mcc.intValue(), mnc.intValue(), lac.longValue(), cid.longValue(), callback);
+ }
+ }
+
+ protected abstract void getLocation(int mcc, int mnc, long lac, long cid, LocationProviderCallback callback);
+
+}
diff --git a/src/org/traccar/location/LocationProvider.java b/src/org/traccar/location/LocationProvider.java
new file mode 100644
index 000000000..cbc9663f8
--- /dev/null
+++ b/src/org/traccar/location/LocationProvider.java
@@ -0,0 +1,30 @@
+/*
+ * 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.location;
+
+import java.util.Map;
+
+public interface LocationProvider {
+
+ interface LocationProviderCallback {
+
+ void onResult(double latitude, double longitude);
+
+ }
+
+ void getLocation(Map<String, Object> attributes, LocationProviderCallback callback);
+
+}
diff --git a/src/org/traccar/location/OpenCellIdLocationProvider.java b/src/org/traccar/location/OpenCellIdLocationProvider.java
new file mode 100644
index 000000000..22456c482
--- /dev/null
+++ b/src/org/traccar/location/OpenCellIdLocationProvider.java
@@ -0,0 +1,24 @@
+/*
+ * 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.location;
+
+public class OpenCellIdLocationProvider extends BaseLocationProvider {
+
+ protected void getLocation(int mcc, int mnc, long lac, long cid, LocationProviderCallback callback) {
+ // TODO
+ }
+
+}
diff --git a/test/org/traccar/geocode/ReverseGeocoderTest.java b/test/org/traccar/geocode/ReverseGeocoderTest.java
index 2336418d8..a572b0456 100644
--- a/test/org/traccar/geocode/ReverseGeocoderTest.java
+++ b/test/org/traccar/geocode/ReverseGeocoderTest.java
@@ -14,11 +14,9 @@ public class ReverseGeocoderTest {
testNominatim();
testGisgraphy();
}
-
}
public void testGoogle() {
-
ReverseGeocoder reverseGeocoder = new GoogleReverseGeocoder();
reverseGeocoder.getAddress(new AddressFormat(), 37.4217550, -122.0846330, new ReverseGeocoder.ReverseGeocoderCallback() {
@@ -30,7 +28,6 @@ public class ReverseGeocoderTest {
}
public void testNominatim() {
-
ReverseGeocoder reverseGeocoder = new NominatimReverseGeocoder();
reverseGeocoder.getAddress(new AddressFormat(), 40.7337807, -73.9974401, new ReverseGeocoder.ReverseGeocoderCallback() {
@@ -42,7 +39,6 @@ public class ReverseGeocoderTest {
}
public void testGisgraphy() {
-
ReverseGeocoder reverseGeocoder = new GisgraphyReverseGeocoder();
reverseGeocoder.getAddress(new AddressFormat(), 48.8530000, 2.3400000, new ReverseGeocoder.ReverseGeocoderCallback() {
diff --git a/test/org/traccar/location/LocationProviderTest.java b/test/org/traccar/location/LocationProviderTest.java
new file mode 100644
index 000000000..c4aedbb09
--- /dev/null
+++ b/test/org/traccar/location/LocationProviderTest.java
@@ -0,0 +1,44 @@
+package org.traccar.location;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.traccar.geocode.AddressFormat;
+import org.traccar.geocode.GisgraphyReverseGeocoder;
+import org.traccar.geocode.GoogleReverseGeocoder;
+import org.traccar.geocode.NominatimReverseGeocoder;
+import org.traccar.geocode.ReverseGeocoder;
+import org.traccar.model.Event;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class LocationProviderTest {
+
+ private boolean enable = false;
+
+ @Test
+ public void test() {
+ if (enable) {
+ testOpenCellId();
+ }
+ }
+
+ public void testOpenCellId() {
+ OpenCellIdLocationProvider locationProvider = new OpenCellIdLocationProvider();
+
+ Map<String, Object> attributes = new HashMap<>();
+ attributes.put(Event.KEY_MCC, 250);
+ attributes.put(Event.KEY_MNC, 2);
+ attributes.put(Event.KEY_LAC, 4711);
+ attributes.put(Event.KEY_CID, 7989334);
+
+ locationProvider.getLocation(attributes, new LocationProvider.LocationProviderCallback() {
+ @Override
+ public void onResult(double latitude, double longitude) {
+ Assert.assertEquals(60.07254, latitude, 0.00001);
+ Assert.assertEquals(30.30996, longitude, 0.00001);
+ }
+ });
+ }
+
+}