aboutsummaryrefslogtreecommitdiff
path: root/src/org/traccar/MainModule.java
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2019-02-24 10:45:26 -0800
committerAnton Tananaev <anton.tananaev@gmail.com>2019-02-24 10:45:26 -0800
commit98993ee219b6c0cb31f2f3b1608d378b2e028535 (patch)
tree77a6e8366c27b8b3851e52b6ab81ff62920b970c /src/org/traccar/MainModule.java
parenta129cfd3159c02b4f3996dbdfb5299ac95a6720c (diff)
downloadtraccar-server-98993ee219b6c0cb31f2f3b1608d378b2e028535.tar.gz
traccar-server-98993ee219b6c0cb31f2f3b1608d378b2e028535.tar.bz2
traccar-server-98993ee219b6c0cb31f2f3b1608d378b2e028535.zip
Refactor geolocation
Diffstat (limited to 'src/org/traccar/MainModule.java')
-rw-r--r--src/org/traccar/MainModule.java51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/org/traccar/MainModule.java b/src/org/traccar/MainModule.java
index d9ff93b21..3b9bbe4b6 100644
--- a/src/org/traccar/MainModule.java
+++ b/src/org/traccar/MainModule.java
@@ -21,11 +21,20 @@ import com.google.inject.Provides;
import com.google.inject.Singleton;
import org.traccar.config.Config;
import org.traccar.config.Keys;
+import org.traccar.database.DataManager;
import org.traccar.database.IdentityManager;
+import org.traccar.database.StatisticsManager;
+import org.traccar.geolocation.GeolocationProvider;
+import org.traccar.geolocation.GoogleGeolocationProvider;
+import org.traccar.geolocation.MozillaGeolocationProvider;
+import org.traccar.geolocation.OpenCellIdGeolocationProvider;
+import org.traccar.geolocation.UnwiredGeolocationProvider;
import org.traccar.handler.DistanceHandler;
import org.traccar.handler.FilterHandler;
+import org.traccar.handler.GeolocationHandler;
import org.traccar.handler.RemoteAddressHandler;
+import javax.annotation.Nullable;
import javax.ws.rs.client.Client;
public class MainModule extends AbstractModule {
@@ -41,6 +50,11 @@ public class MainModule extends AbstractModule {
}
@Provides
+ public static DataManager provideDataManager() {
+ return Context.getDataManager();
+ }
+
+ @Provides
public static IdentityManager provideIdentityManager() {
return Context.getIdentityManager();
}
@@ -52,6 +66,33 @@ public class MainModule extends AbstractModule {
@Singleton
@Provides
+ public static StatisticsManager provideStatisticsManager(Config config, DataManager dataManager, Client client) {
+ return new StatisticsManager(config, dataManager, client);
+ }
+
+ @Singleton
+ @Provides
+ public static GeolocationProvider provideGeolocationProvider(Config config) {
+ if (config.getBoolean(Keys.GEOLOCATION_ENABLE)) {
+ String type = config.getString(Keys.GEOLOCATION_TYPE, "mozilla");
+ String url = config.getString(Keys.GEOLOCATION_URL);
+ String key = config.getString(Keys.GEOLOCATION_KEY);
+ switch (type) {
+ case "google":
+ return new GoogleGeolocationProvider(key);
+ case "opencellid":
+ return new OpenCellIdGeolocationProvider(key);
+ case "unwired":
+ return new UnwiredGeolocationProvider(url, key);
+ default:
+ return new MozillaGeolocationProvider(key);
+ }
+ }
+ return null;
+ }
+
+ @Singleton
+ @Provides
public static DistanceHandler provideDistanceHandler(Config config, IdentityManager identityManager) {
return new DistanceHandler(config, identityManager);
}
@@ -84,6 +125,16 @@ public class MainModule extends AbstractModule {
return null;
}
+ @Singleton
+ @Provides
+ public static GeolocationHandler provideGeolocationHandler(
+ Config config, @Nullable GeolocationProvider geolocationProvider, StatisticsManager statisticsManager) {
+ if (geolocationProvider != null) {
+ return new GeolocationHandler(config, geolocationProvider, statisticsManager);
+ }
+ return null;
+ }
+
@Override
protected void configure() {
binder().requireExplicitBindings();