aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/traccar/Context.java
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2019-03-31 22:35:39 -0700
committerAnton Tananaev <anton.tananaev@gmail.com>2019-03-31 22:35:39 -0700
commit59416923dcb3a756eaf532cc4259f2f6625c0762 (patch)
tree9082dae6616deac8fda432b7bfd80e4a52b6d9dc /src/main/java/org/traccar/Context.java
parent79a129dd6327d932133d6b9a50190d3f4927bff9 (diff)
downloadtrackermap-server-59416923dcb3a756eaf532cc4259f2f6625c0762.tar.gz
trackermap-server-59416923dcb3a756eaf532cc4259f2f6625c0762.tar.bz2
trackermap-server-59416923dcb3a756eaf532cc4259f2f6625c0762.zip
Convert project to gradle
Diffstat (limited to 'src/main/java/org/traccar/Context.java')
-rw-r--r--src/main/java/org/traccar/Context.java410
1 files changed, 410 insertions, 0 deletions
diff --git a/src/main/java/org/traccar/Context.java b/src/main/java/org/traccar/Context.java
new file mode 100644
index 000000000..9c20db9e4
--- /dev/null
+++ b/src/main/java/org/traccar/Context.java
@@ -0,0 +1,410 @@
+/*
+ * Copyright 2015 - 2019 Anton Tananaev (anton@traccar.org)
+ *
+ * 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;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.datatype.jsr353.JSR353Module;
+import org.apache.velocity.app.VelocityEngine;
+import org.eclipse.jetty.util.URIUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.traccar.config.Config;
+import org.traccar.database.AttributesManager;
+import org.traccar.database.BaseObjectManager;
+import org.traccar.database.CalendarManager;
+import org.traccar.database.CommandsManager;
+import org.traccar.database.ConnectionManager;
+import org.traccar.database.DataManager;
+import org.traccar.database.DeviceManager;
+import org.traccar.database.DriversManager;
+import org.traccar.database.GeofenceManager;
+import org.traccar.database.GroupsManager;
+import org.traccar.database.IdentityManager;
+import org.traccar.database.LdapProvider;
+import org.traccar.database.MailManager;
+import org.traccar.database.MaintenancesManager;
+import org.traccar.database.MediaManager;
+import org.traccar.database.NotificationManager;
+import org.traccar.database.PermissionsManager;
+import org.traccar.database.UsersManager;
+import org.traccar.geocoder.Geocoder;
+import org.traccar.helper.Log;
+import org.traccar.helper.SanitizerModule;
+import org.traccar.model.Attribute;
+import org.traccar.model.BaseModel;
+import org.traccar.model.Calendar;
+import org.traccar.model.Command;
+import org.traccar.model.Device;
+import org.traccar.model.Driver;
+import org.traccar.model.Geofence;
+import org.traccar.model.Group;
+import org.traccar.model.Maintenance;
+import org.traccar.model.Notification;
+import org.traccar.model.User;
+import org.traccar.notification.EventForwarder;
+import org.traccar.notification.JsonTypeEventForwarder;
+import org.traccar.notification.NotificatorManager;
+import org.traccar.reports.model.TripsConfig;
+import org.traccar.sms.SmsManager;
+import org.traccar.sms.smpp.SmppClient;
+import org.traccar.web.WebServer;
+
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.ext.ContextResolver;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.Properties;
+
+public final class Context {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(Context.class);
+
+ private Context() {
+ }
+
+ private static Config config;
+
+ public static Config getConfig() {
+ return config;
+ }
+
+ private static ObjectMapper objectMapper;
+
+ public static ObjectMapper getObjectMapper() {
+ return objectMapper;
+ }
+
+ private static IdentityManager identityManager;
+
+ public static IdentityManager getIdentityManager() {
+ return identityManager;
+ }
+
+ private static DataManager dataManager;
+
+ public static DataManager getDataManager() {
+ return dataManager;
+ }
+
+ private static LdapProvider ldapProvider;
+
+ public static LdapProvider getLdapProvider() {
+ return ldapProvider;
+ }
+
+ private static MailManager mailManager;
+
+ public static MailManager getMailManager() {
+ return mailManager;
+ }
+
+ private static MediaManager mediaManager;
+
+ public static MediaManager getMediaManager() {
+ return mediaManager;
+ }
+
+ private static UsersManager usersManager;
+
+ public static UsersManager getUsersManager() {
+ return usersManager;
+ }
+
+ private static GroupsManager groupsManager;
+
+ public static GroupsManager getGroupsManager() {
+ return groupsManager;
+ }
+
+ private static DeviceManager deviceManager;
+
+ public static DeviceManager getDeviceManager() {
+ return deviceManager;
+ }
+
+ private static ConnectionManager connectionManager;
+
+ public static ConnectionManager getConnectionManager() {
+ return connectionManager;
+ }
+
+ private static PermissionsManager permissionsManager;
+
+ public static PermissionsManager getPermissionsManager() {
+ return permissionsManager;
+ }
+
+ public static Geocoder getGeocoder() {
+ return Main.getInjector() != null ? Main.getInjector().getInstance(Geocoder.class) : null;
+ }
+
+ private static WebServer webServer;
+
+ public static WebServer getWebServer() {
+ return webServer;
+ }
+
+ private static ServerManager serverManager;
+
+ public static ServerManager getServerManager() {
+ return serverManager;
+ }
+
+ private static GeofenceManager geofenceManager;
+
+ public static GeofenceManager getGeofenceManager() {
+ return geofenceManager;
+ }
+
+ private static CalendarManager calendarManager;
+
+ public static CalendarManager getCalendarManager() {
+ return calendarManager;
+ }
+
+ private static NotificationManager notificationManager;
+
+ public static NotificationManager getNotificationManager() {
+ return notificationManager;
+ }
+
+ private static NotificatorManager notificatorManager;
+
+ public static NotificatorManager getNotificatorManager() {
+ return notificatorManager;
+ }
+
+ private static VelocityEngine velocityEngine;
+
+ public static VelocityEngine getVelocityEngine() {
+ return velocityEngine;
+ }
+
+ private static Client client = ClientBuilder.newClient();
+
+ public static Client getClient() {
+ return client;
+ }
+
+ private static EventForwarder eventForwarder;
+
+ public static EventForwarder getEventForwarder() {
+ return eventForwarder;
+ }
+
+ private static AttributesManager attributesManager;
+
+ public static AttributesManager getAttributesManager() {
+ return attributesManager;
+ }
+
+ private static DriversManager driversManager;
+
+ public static DriversManager getDriversManager() {
+ return driversManager;
+ }
+
+ private static CommandsManager commandsManager;
+
+ public static CommandsManager getCommandsManager() {
+ return commandsManager;
+ }
+
+ private static MaintenancesManager maintenancesManager;
+
+ public static MaintenancesManager getMaintenancesManager() {
+ return maintenancesManager;
+ }
+
+ private static SmsManager smsManager;
+
+ public static SmsManager getSmsManager() {
+ return smsManager;
+ }
+
+ private static TripsConfig tripsConfig;
+
+ public static TripsConfig getTripsConfig() {
+ return tripsConfig;
+ }
+
+ public static TripsConfig initTripsConfig() {
+ return new TripsConfig(
+ config.getLong("report.trip.minimalTripDistance", 500),
+ config.getLong("report.trip.minimalTripDuration", 300) * 1000,
+ config.getLong("report.trip.minimalParkingDuration", 300) * 1000,
+ config.getLong("report.trip.minimalNoDataDuration", 3600) * 1000,
+ config.getBoolean("report.trip.useIgnition"),
+ config.getBoolean("event.motion.processInvalidPositions"),
+ config.getDouble("event.motion.speedThreshold", 0.01));
+ }
+
+ private static class ObjectMapperContextResolver implements ContextResolver<ObjectMapper> {
+
+ @Override
+ public ObjectMapper getContext(Class<?> clazz) {
+ return objectMapper;
+ }
+
+ }
+
+ public static void init(String configFile) throws Exception {
+
+ try {
+ config = new Config(configFile);
+ } catch (Exception e) {
+ config = new Config();
+ Log.setupDefaultLogger();
+ throw e;
+ }
+
+ if (config.getBoolean("logger.enable")) {
+ Log.setupLogger(config);
+ }
+
+ objectMapper = new ObjectMapper();
+ objectMapper.registerModule(new SanitizerModule());
+ objectMapper.registerModule(new JSR353Module());
+ objectMapper.setConfig(
+ objectMapper.getSerializationConfig().without(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS));
+ if (Context.getConfig().getBoolean("mapper.prettyPrintedJson")) {
+ objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
+ }
+
+ client = ClientBuilder.newClient().register(new ObjectMapperContextResolver());
+
+ if (config.hasKey("database.url")) {
+ dataManager = new DataManager(config);
+ }
+
+ if (config.getBoolean("ldap.enable")) {
+ ldapProvider = new LdapProvider(config);
+ }
+
+ mailManager = new MailManager();
+
+ mediaManager = new MediaManager(config.getString("media.path"));
+
+ if (dataManager != null) {
+ usersManager = new UsersManager(dataManager);
+ groupsManager = new GroupsManager(dataManager);
+ deviceManager = new DeviceManager(dataManager);
+ }
+
+ identityManager = deviceManager;
+
+ if (config.getBoolean("web.enable")) {
+ webServer = new WebServer(config);
+ }
+
+ permissionsManager = new PermissionsManager(dataManager, usersManager);
+
+ connectionManager = new ConnectionManager();
+
+ tripsConfig = initTripsConfig();
+
+ if (config.getBoolean("sms.enable")) {
+ final String smsManagerClass = config.getString("sms.manager.class", SmppClient.class.getCanonicalName());
+ try {
+ smsManager = (SmsManager) Class.forName(smsManagerClass).newInstance();
+ } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
+ LOGGER.warn("Error loading SMS Manager class : " + smsManagerClass, e);
+ }
+ }
+
+ if (config.getBoolean("event.enable")) {
+ initEventsModule();
+ }
+
+ serverManager = new ServerManager();
+
+ if (config.getBoolean("event.forward.enable")) {
+ eventForwarder = new JsonTypeEventForwarder();
+ }
+
+ attributesManager = new AttributesManager(dataManager);
+
+ driversManager = new DriversManager(dataManager);
+
+ commandsManager = new CommandsManager(dataManager, config.getBoolean("commands.queueing"));
+
+ }
+
+ private static void initEventsModule() {
+
+ geofenceManager = new GeofenceManager(dataManager);
+ calendarManager = new CalendarManager(dataManager);
+ maintenancesManager = new MaintenancesManager(dataManager);
+ notificationManager = new NotificationManager(dataManager);
+ notificatorManager = new NotificatorManager();
+ Properties velocityProperties = new Properties();
+ velocityProperties.setProperty("file.resource.loader.path",
+ Context.getConfig().getString("templates.rootPath", "templates") + "/");
+ velocityProperties.setProperty("runtime.log.logsystem.class",
+ "org.apache.velocity.runtime.log.NullLogChute");
+
+ String address;
+ try {
+ address = config.getString("web.address", InetAddress.getLocalHost().getHostAddress());
+ } catch (UnknownHostException e) {
+ address = "localhost";
+ }
+
+ String webUrl = URIUtil.newURI("http", address, config.getInteger("web.port", 8082), "", "");
+ webUrl = Context.getConfig().getString("web.url", webUrl);
+ velocityProperties.setProperty("web.url", webUrl);
+
+ velocityEngine = new VelocityEngine();
+ velocityEngine.init(velocityProperties);
+ }
+
+ public static void init(IdentityManager testIdentityManager, MediaManager testMediaManager) {
+ config = new Config();
+ objectMapper = new ObjectMapper();
+ objectMapper.registerModule(new JSR353Module());
+ client = ClientBuilder.newClient().register(new ObjectMapperContextResolver());
+ identityManager = testIdentityManager;
+ mediaManager = testMediaManager;
+ }
+
+ public static <T extends BaseModel> BaseObjectManager<T> getManager(Class<T> clazz) {
+ if (clazz.equals(Device.class)) {
+ return (BaseObjectManager<T>) deviceManager;
+ } else if (clazz.equals(Group.class)) {
+ return (BaseObjectManager<T>) groupsManager;
+ } else if (clazz.equals(User.class)) {
+ return (BaseObjectManager<T>) usersManager;
+ } else if (clazz.equals(Calendar.class)) {
+ return (BaseObjectManager<T>) calendarManager;
+ } else if (clazz.equals(Attribute.class)) {
+ return (BaseObjectManager<T>) attributesManager;
+ } else if (clazz.equals(Geofence.class)) {
+ return (BaseObjectManager<T>) geofenceManager;
+ } else if (clazz.equals(Driver.class)) {
+ return (BaseObjectManager<T>) driversManager;
+ } else if (clazz.equals(Command.class)) {
+ return (BaseObjectManager<T>) commandsManager;
+ } else if (clazz.equals(Maintenance.class)) {
+ return (BaseObjectManager<T>) maintenancesManager;
+ } else if (clazz.equals(Notification.class)) {
+ return (BaseObjectManager<T>) notificationManager;
+ }
+ return null;
+ }
+
+}