diff options
Diffstat (limited to 'src/org/traccar/MainModule.java')
-rw-r--r-- | src/org/traccar/MainModule.java | 51 |
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(); |