From 312f5d2a3af3ec53cc6ff73cd3424d68a2774dcd Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Sat, 9 Mar 2019 17:09:13 -0800 Subject: Refactor default data handler --- src/org/traccar/BasePipelineFactory.java | 8 ++--- src/org/traccar/DefaultDataHandler.java | 38 -------------------- src/org/traccar/MainModule.java | 10 ++++++ src/org/traccar/handler/DefaultDataHandler.java | 48 +++++++++++++++++++++++++ 4 files changed, 61 insertions(+), 43 deletions(-) delete mode 100644 src/org/traccar/DefaultDataHandler.java create mode 100644 src/org/traccar/handler/DefaultDataHandler.java diff --git a/src/org/traccar/BasePipelineFactory.java b/src/org/traccar/BasePipelineFactory.java index 550145860..e3328a524 100644 --- a/src/org/traccar/BasePipelineFactory.java +++ b/src/org/traccar/BasePipelineFactory.java @@ -25,6 +25,7 @@ import io.netty.handler.timeout.IdleStateHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.traccar.config.Keys; +import org.traccar.handler.DefaultDataHandler; import org.traccar.handler.events.AlertEventHandler; import org.traccar.handler.events.CommandResultEventHandler; import org.traccar.handler.events.DriverEventHandler; @@ -139,11 +140,8 @@ public abstract class BasePipelineFactory extends ChannelInitializer { Main.getInjector().getInstance(EngineHoursHandler.class), Main.getInjector().getInstance(CopyAttributesHandler.class), Main.getInjector().getInstance(ComputedAttributesHandler.class), - Main.getInjector().getInstance(WebDataHandler.class)); - - if (Context.getDataManager() != null) { - pipeline.addLast(new DefaultDataHandler()); - } + Main.getInjector().getInstance(WebDataHandler.class), + Main.getInjector().getInstance(DefaultDataHandler.class)); if (eventsEnabled) { addHandlers( diff --git a/src/org/traccar/DefaultDataHandler.java b/src/org/traccar/DefaultDataHandler.java deleted file mode 100644 index 876ecd90e..000000000 --- a/src/org/traccar/DefaultDataHandler.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2015 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 org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.traccar.model.Position; - -public class DefaultDataHandler extends BaseDataHandler { - - private static final Logger LOGGER = LoggerFactory.getLogger(DefaultDataHandler.class); - - @Override - protected Position handlePosition(Position position) { - - try { - Context.getDataManager().addObject(position); - } catch (Exception error) { - LOGGER.warn("Failed to store position", error); - } - - return position; - } - -} diff --git a/src/org/traccar/MainModule.java b/src/org/traccar/MainModule.java index 8ad89529f..16a78b109 100644 --- a/src/org/traccar/MainModule.java +++ b/src/org/traccar/MainModule.java @@ -49,6 +49,7 @@ import org.traccar.geolocation.OpenCellIdGeolocationProvider; import org.traccar.geolocation.UnwiredGeolocationProvider; import org.traccar.handler.ComputedAttributesHandler; import org.traccar.handler.CopyAttributesHandler; +import org.traccar.handler.DefaultDataHandler; import org.traccar.handler.DistanceHandler; import org.traccar.handler.EngineHoursHandler; import org.traccar.handler.FilterHandler; @@ -289,6 +290,15 @@ public class MainModule extends AbstractModule { return null; } + @Singleton + @Provides + public static DefaultDataHandler provideDefaultDataHandler(@Nullable DataManager dataManager) { + if (dataManager != null) { + return new DefaultDataHandler(dataManager); + } + return null; + } + @Singleton @Provides public static CommandResultEventHandler provideCommandResultEventHandler() { diff --git a/src/org/traccar/handler/DefaultDataHandler.java b/src/org/traccar/handler/DefaultDataHandler.java new file mode 100644 index 000000000..9d8ea044d --- /dev/null +++ b/src/org/traccar/handler/DefaultDataHandler.java @@ -0,0 +1,48 @@ +/* + * 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.handler; + +import io.netty.channel.ChannelHandler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.traccar.BaseDataHandler; +import org.traccar.database.DataManager; +import org.traccar.model.Position; + +@ChannelHandler.Sharable +public class DefaultDataHandler extends BaseDataHandler { + + private static final Logger LOGGER = LoggerFactory.getLogger(DefaultDataHandler.class); + + private final DataManager dataManager; + + public DefaultDataHandler(DataManager dataManager) { + this.dataManager = dataManager; + } + + @Override + protected Position handlePosition(Position position) { + + try { + dataManager.addObject(position); + } catch (Exception error) { + LOGGER.warn("Failed to store position", error); + } + + return position; + } + +} -- cgit v1.2.3