diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2019-03-31 22:35:39 -0700 |
---|---|---|
committer | Anton Tananaev <anton.tananaev@gmail.com> | 2019-03-31 22:35:39 -0700 |
commit | 59416923dcb3a756eaf532cc4259f2f6625c0762 (patch) | |
tree | 9082dae6616deac8fda432b7bfd80e4a52b6d9dc /src/main/java/org/traccar/Context.java | |
parent | 79a129dd6327d932133d6b9a50190d3f4927bff9 (diff) | |
download | trackermap-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.java | 410 |
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; + } + +} |