From 1455ad6ce058f02d812e23fb275265f105272f4d Mon Sep 17 00:00:00 2001 From: Abyss777 Date: Mon, 20 Mar 2017 15:04:54 +0500 Subject: Move handleTextMessage function to separate handler. --- src/org/traccar/database/DeviceManager.java | 19 ++--------- .../traccar/events/TextMessageEventHandler.java | 37 ++++++++++++++++++++++ src/org/traccar/smpp/ClientSmppSessionHandler.java | 4 +-- 3 files changed, 42 insertions(+), 18 deletions(-) create mode 100644 src/org/traccar/events/TextMessageEventHandler.java diff --git a/src/org/traccar/database/DeviceManager.java b/src/org/traccar/database/DeviceManager.java index ca686b95c..f70b9b1a2 100644 --- a/src/org/traccar/database/DeviceManager.java +++ b/src/org/traccar/database/DeviceManager.java @@ -34,7 +34,6 @@ import org.traccar.model.Command; import org.traccar.model.CommandType; import org.traccar.model.Device; import org.traccar.model.DeviceTotalDistance; -import org.traccar.model.Event; import org.traccar.model.Group; import org.traccar.model.Position; import org.traccar.model.Server; @@ -139,9 +138,9 @@ public class DeviceManager implements IdentityManager { devicesById.remove(cachedDeviceId); } } - for (String cachedDeviceUniqId : devicesByUniqueId.keySet()) { - if (!databaseDevicesUniqueIds.contains(cachedDeviceUniqId)) { - devicesByUniqueId.remove(cachedDeviceUniqId); + for (String cachedDeviceUniqueId : devicesByUniqueId.keySet()) { + if (!databaseDevicesUniqueIds.contains(cachedDeviceUniqueId)) { + devicesByUniqueId.remove(cachedDeviceUniqueId); } } for (String cachedDevicePhone : devicesByPhone.keySet()) { @@ -149,9 +148,6 @@ public class DeviceManager implements IdentityManager { devicesByPhone.remove(cachedDevicePhone); } } - databaseDevicesIds.clear(); - databaseDevicesUniqueIds.clear(); - databaseDevicesPhones.clear(); } } @@ -507,13 +503,4 @@ public class DeviceManager implements IdentityManager { } return result; } - - public void handleTextMessage(String phone, String message) { - Device device = devicesByPhone.get(phone); - if (device != null && Context.getNotificationManager() != null) { - Event event = new Event(Event.TYPE_TEXT_MESSAGE, device.getId()); - event.set("message", message); - Context.getNotificationManager().updateEvent(event, null); - } - } } diff --git a/src/org/traccar/events/TextMessageEventHandler.java b/src/org/traccar/events/TextMessageEventHandler.java new file mode 100644 index 000000000..be4a193a7 --- /dev/null +++ b/src/org/traccar/events/TextMessageEventHandler.java @@ -0,0 +1,37 @@ +/* + * Copyright 2017 Anton Tananaev (anton@traccar.org) + * Copyright 2017 Andrey Kunitsyn (andrey@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.events; + +import org.traccar.Context; +import org.traccar.model.Device; +import org.traccar.model.Event; + +public final class TextMessageEventHandler { + + private TextMessageEventHandler() { + } + + public static void handleTextMessage(String phone, String message) { + Device device = Context.getDeviceManager().getDeviceByPhone(phone); + if (device != null && Context.getNotificationManager() != null) { + Event event = new Event(Event.TYPE_TEXT_MESSAGE, device.getId()); + event.set("message", message); + Context.getNotificationManager().updateEvent(event, null); + } + } + +} diff --git a/src/org/traccar/smpp/ClientSmppSessionHandler.java b/src/org/traccar/smpp/ClientSmppSessionHandler.java index f4d40c3eb..77f75273e 100644 --- a/src/org/traccar/smpp/ClientSmppSessionHandler.java +++ b/src/org/traccar/smpp/ClientSmppSessionHandler.java @@ -16,7 +16,7 @@ */ package org.traccar.smpp; -import org.traccar.Context; +import org.traccar.events.TextMessageEventHandler; import org.traccar.helper.Log; import com.cloudhopper.commons.charset.CharsetUtil; @@ -54,7 +54,7 @@ public class ClientSmppSessionHandler extends DefaultSmppSessionHandler { String message = CharsetUtil.decode(((DeliverSm) request).getShortMessage(), smppClient.mapDataCodingToCharset(((DeliverSm) request).getDataCoding())); Log.debug("SMS Message Received: " + message.trim() + ", Source Address: " + sourceAddress); - Context.getDeviceManager().handleTextMessage(sourceAddress, message); + TextMessageEventHandler.handleTextMessage(sourceAddress, message); } } response = request.createResponse(); -- cgit v1.2.3