From d045c1e2174146ddc8ad8b2ef4442863f3d84a11 Mon Sep 17 00:00:00 2001 From: ninioe Date: Tue, 12 Jul 2016 16:04:40 +0300 Subject: Added support for Alarm popup & positions history cleaner 1. added support for Alarm and Alarm Type in popup and also in history records. can be muted with a toggle button in the UI 2. added a timer to clear positions history once a day. the default is to save positions history for 7 days if not defined in the configuration file. 3. prevent the lock of the UI files (js, html, css, etc..) for wondows developers in debug mode. It's easier to do changes to the UI without stopping the app each time. 4. tools: added support in test-generator.py to simulate Alert, also added minify.bat file to compile new js files for the UI using sencha SDK for windows developers --- src/org/traccar/database/DataManager.java | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src/org/traccar/database/DataManager.java') diff --git a/src/org/traccar/database/DataManager.java b/src/org/traccar/database/DataManager.java index b3f24383f..7fd672849 100644 --- a/src/org/traccar/database/DataManager.java +++ b/src/org/traccar/database/DataManager.java @@ -521,6 +521,31 @@ public class DataManager implements IdentityManager { .executeQuery(Position.class); } + //added by Erez + public void clearPositionsHistory() throws SQLException { + //SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd"); + String histDays = config.getString("database.positionsHistoryDays"); + if (histDays == null) { + histDays = "7"; + } + int n = Integer.parseInt(histDays); + + for (Device device : getAllDevices()) { + Date lastUpdate = device.getLastUpdate(); + if(lastUpdate != null){ + + Date dateBefore = new Date(lastUpdate.getTime() - n * 24 * 3600 * 1000 ); //Subtract n days + //String dt = s.format(dateBefore); + String sql = "DELETE FROM positions WHERE deviceid=:deviceId and servertime<:serverTime"; + + QueryBuilder.create(dataSource, sql) + .setLong("deviceId", device.getId()) + .setDate("serverTime", dateBefore) + .executeUpdate(); + } + } + } + public Server getServer() throws SQLException { return QueryBuilder.create(dataSource, getQuery("database.selectServers")) .executeQuerySingle(Server.class); -- cgit v1.2.3 From 0e7cb81693a1067af81b6d74544f16d01fce8b6e Mon Sep 17 00:00:00 2001 From: ninioe Date: Wed, 13 Jul 2016 15:29:39 +0300 Subject: changes Anton asked me --- debug.xml | 13 ++++----- schema/changelog-3.7.xml | 35 ++++++++++++++++++++++++ schema/changelog-master.xml | 1 + src/org/traccar/BaseProtocol.java | 2 +- src/org/traccar/Main.java | 7 +++-- src/org/traccar/database/DataManager.java | 16 ++++++----- src/org/traccar/model/Position.java | 2 +- src/org/traccar/protocol/AquilaProtocol.java | 2 ++ src/org/traccar/protocol/Ardi01Protocol.java | 2 ++ src/org/traccar/protocol/ArknavProtocol.java | 2 ++ src/org/traccar/protocol/ArnaviProtocol.java | 2 ++ src/org/traccar/protocol/AuroProtocol.java | 2 ++ src/org/traccar/protocol/CarTrackProtocol.java | 2 ++ src/org/traccar/protocol/DishaProtocol.java | 2 ++ src/org/traccar/protocol/EasyTrackProtocol.java | 2 ++ src/org/traccar/protocol/FoxProtocol.java | 2 ++ src/org/traccar/protocol/FreedomProtocol.java | 2 ++ src/org/traccar/protocol/GnxProtocol.java | 2 ++ src/org/traccar/protocol/GotopProtocol.java | 2 ++ src/org/traccar/protocol/GpsMarkerProtocol.java | 2 ++ src/org/traccar/protocol/H02ProtocolDecoder.java | 14 +++++----- src/org/traccar/protocol/HaicomProtocol.java | 2 ++ src/org/traccar/protocol/HomtecsProtocol.java | 2 ++ src/org/traccar/protocol/KenjiProtocol.java | 2 ++ src/org/traccar/protocol/SanavProtocol.java | 2 ++ src/org/traccar/protocol/Stl060Protocol.java | 2 ++ src/org/traccar/protocol/SupermateProtocol.java | 2 ++ src/org/traccar/protocol/T55Protocol.java | 4 +-- src/org/traccar/protocol/TaipProtocol.java | 4 +-- src/org/traccar/protocol/TelicProtocol.java | 2 ++ src/org/traccar/protocol/Tk103Protocol.java | 4 +-- src/org/traccar/protocol/Tlt2hProtocol.java | 2 +- src/org/traccar/protocol/TopflytechProtocol.java | 2 ++ src/org/traccar/protocol/Tt8850Protocol.java | 2 ++ src/org/traccar/protocol/UproProtocol.java | 2 ++ src/org/traccar/protocol/V680Protocol.java | 3 ++ src/org/traccar/protocol/VisiontekProtocol.java | 2 ++ src/org/traccar/protocol/XexunProtocol.java | 2 ++ src/org/traccar/protocol/Xt013Protocol.java | 2 ++ src/org/traccar/web/WebServer.java | 8 ++---- tools/minify.bat | 4 +-- tools/test-generator.py | 3 +- web/app/AttributeFormatter.js | 6 ++-- web/app/view/Devices.js | 2 +- web/app/view/Report.js | 4 +-- web/app/view/StateController.js | 10 +++---- 46 files changed, 141 insertions(+), 55 deletions(-) create mode 100644 schema/changelog-3.7.xml (limited to 'src/org/traccar/database/DataManager.java') diff --git a/debug.xml b/debug.xml index 20287587b..60e2c65e8 100644 --- a/debug.xml +++ b/debug.xml @@ -65,15 +65,10 @@ - - - com.mysql.jdbc.Driver - jdbc:mysql://127.0.0.1:3306/traccar?allowMultiQueries=true&autoReconnect=true&useUnicode=yes&characterEncoding=UTF-8&sessionVariables=sql_mode=ANSI_QUOTES - traccar - ########### + true @@ -320,6 +315,10 @@ DELETE FROM notifications WHERE id = :id; + + DELETE FROM positions WHERE deviceid = :deviceId and servertime < :serverTime; + + 5001 diff --git a/schema/changelog-3.7.xml b/schema/changelog-3.7.xml new file mode 100644 index 000000000..5e836a99c --- /dev/null +++ b/schema/changelog-3.7.xml @@ -0,0 +1,35 @@ + + + + + + + + groupid NOT IN (SELECT id FROM groups) + + + + + + + groupid NOT IN (SELECT id FROM (SELECT id FROM groups) AS groups_ids) + + + + + + + + + + + + + + + diff --git a/schema/changelog-master.xml b/schema/changelog-master.xml index 399cd3c8d..3b62537d0 100644 --- a/schema/changelog-master.xml +++ b/schema/changelog-master.xml @@ -8,4 +8,5 @@ + diff --git a/src/org/traccar/BaseProtocol.java b/src/org/traccar/BaseProtocol.java index 352895629..4a3e63db4 100644 --- a/src/org/traccar/BaseProtocol.java +++ b/src/org/traccar/BaseProtocol.java @@ -33,6 +33,7 @@ public abstract class BaseProtocol implements Protocol { public BaseProtocol(String name) { this.name = name; + supportedCommands.add(Command.TYPE_CUSTOM); } @Override @@ -42,7 +43,6 @@ public abstract class BaseProtocol implements Protocol { public void setSupportedCommands(String... commands) { supportedCommands.addAll(Arrays.asList(commands)); - supportedCommands.add(Command.TYPE_CUSTOM); } @Override diff --git a/src/org/traccar/Main.java b/src/org/traccar/Main.java index eb3114210..0070904ab 100644 --- a/src/org/traccar/Main.java +++ b/src/org/traccar/Main.java @@ -21,6 +21,8 @@ import java.util.TimerTask; import java.util.Locale; public final class Main { + static final long cleanDelay = 10*1000; //10 sec + static final long cleanPeriod = 24*60*60*1000; //24 hr private Main() { } @@ -36,19 +38,18 @@ public final class Main { Context.getWebServer().start(); } - //added by Erez Timer timer = new Timer(); timer.scheduleAtFixedRate(new TimerTask() { @Override public void run() { - // Clean positions history every day + // Clean positions history try { Context.getDataManager().clearPositionsHistory(); } catch (Exception error) { Log.warning(error); } } - }, 10*1000, 24*60*60*1000); + }, cleanDelay, cleanPeriod); Runtime.getRuntime().addShutdownHook(new Thread() { @Override diff --git a/src/org/traccar/database/DataManager.java b/src/org/traccar/database/DataManager.java index 7fd672849..a9fc09448 100644 --- a/src/org/traccar/database/DataManager.java +++ b/src/org/traccar/database/DataManager.java @@ -521,22 +521,24 @@ public class DataManager implements IdentityManager { .executeQuery(Position.class); } - //added by Erez public void clearPositionsHistory() throws SQLException { //SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd"); - String histDays = config.getString("database.positionsHistoryDays"); - if (histDays == null) { - histDays = "7"; + int histDays = config.getInteger("database.positionsHistoryDays"); + if (histDays == 0) { + return; + } + + String sql = getQuery("database.clearPositionsHistory"); + if (sql == null) { + return; } - int n = Integer.parseInt(histDays); for (Device device : getAllDevices()) { Date lastUpdate = device.getLastUpdate(); if(lastUpdate != null){ - Date dateBefore = new Date(lastUpdate.getTime() - n * 24 * 3600 * 1000 ); //Subtract n days + Date dateBefore = new Date(lastUpdate.getTime() - histDays * 24 * 3600 * 1000 ); //Subtract histDays days //String dt = s.format(dateBefore); - String sql = "DELETE FROM positions WHERE deviceid=:deviceId and servertime<:serverTime"; QueryBuilder.create(dataSource, sql) .setLong("deviceId", device.getId()) diff --git a/src/org/traccar/model/Position.java b/src/org/traccar/model/Position.java index c548c542f..c5a7889bd 100644 --- a/src/org/traccar/model/Position.java +++ b/src/org/traccar/model/Position.java @@ -28,7 +28,7 @@ public class Position extends Message { public static final String KEY_GPS = "gps"; public static final String KEY_EVENT = "event"; public static final String KEY_ALARM = "alarm"; - public static final String KEY_ALARM_TYPE = "alarm-type"; //added by Erez + public static final String KEY_ALARM_TYPE = "alarm-type"; public static final String KEY_STATUS = "status"; public static final String KEY_ODOMETER = "odometer"; public static final String KEY_HOURS = "hours"; diff --git a/src/org/traccar/protocol/AquilaProtocol.java b/src/org/traccar/protocol/AquilaProtocol.java index 851efc40c..1bf5f4ee7 100644 --- a/src/org/traccar/protocol/AquilaProtocol.java +++ b/src/org/traccar/protocol/AquilaProtocol.java @@ -19,6 +19,7 @@ import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.frame.LineBasedFrameDecoder; import org.jboss.netty.handler.codec.string.StringDecoder; +import org.jboss.netty.handler.codec.string.StringEncoder; import org.traccar.BaseProtocol; import org.traccar.TrackerServer; @@ -37,6 +38,7 @@ public class AquilaProtocol extends BaseProtocol { protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new LineBasedFrameDecoder(1024)); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new AquilaProtocolDecoder(AquilaProtocol.this)); } }); diff --git a/src/org/traccar/protocol/Ardi01Protocol.java b/src/org/traccar/protocol/Ardi01Protocol.java index 3bbb489f9..595692cc5 100644 --- a/src/org/traccar/protocol/Ardi01Protocol.java +++ b/src/org/traccar/protocol/Ardi01Protocol.java @@ -19,6 +19,7 @@ import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.frame.LineBasedFrameDecoder; import org.jboss.netty.handler.codec.string.StringDecoder; +import org.jboss.netty.handler.codec.string.StringEncoder; import org.traccar.BaseProtocol; import org.traccar.TrackerServer; @@ -37,6 +38,7 @@ public class Ardi01Protocol extends BaseProtocol { protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new LineBasedFrameDecoder(1024)); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new Ardi01ProtocolDecoder(Ardi01Protocol.this)); } }); diff --git a/src/org/traccar/protocol/ArknavProtocol.java b/src/org/traccar/protocol/ArknavProtocol.java index 13cb2572f..3b288b5ab 100644 --- a/src/org/traccar/protocol/ArknavProtocol.java +++ b/src/org/traccar/protocol/ArknavProtocol.java @@ -18,6 +18,7 @@ package org.traccar.protocol; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.string.StringDecoder; +import org.jboss.netty.handler.codec.string.StringEncoder; import org.traccar.BaseProtocol; import org.traccar.CharacterDelimiterFrameDecoder; import org.traccar.TrackerServer; @@ -37,6 +38,7 @@ public class ArknavProtocol extends BaseProtocol { protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new CharacterDelimiterFrameDecoder(1024, '\r')); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new ArknavProtocolDecoder(ArknavProtocol.this)); } }); diff --git a/src/org/traccar/protocol/ArnaviProtocol.java b/src/org/traccar/protocol/ArnaviProtocol.java index 6afd0282d..5bdb68e86 100644 --- a/src/org/traccar/protocol/ArnaviProtocol.java +++ b/src/org/traccar/protocol/ArnaviProtocol.java @@ -19,6 +19,7 @@ import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.frame.LineBasedFrameDecoder; import org.jboss.netty.handler.codec.string.StringDecoder; +import org.jboss.netty.handler.codec.string.StringEncoder; import org.traccar.BaseProtocol; import org.traccar.TrackerServer; @@ -37,6 +38,7 @@ public class ArnaviProtocol extends BaseProtocol { protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new LineBasedFrameDecoder(1024)); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new ArnaviProtocolDecoder(ArnaviProtocol.this)); } }); diff --git a/src/org/traccar/protocol/AuroProtocol.java b/src/org/traccar/protocol/AuroProtocol.java index cada65f72..e8fad85fd 100644 --- a/src/org/traccar/protocol/AuroProtocol.java +++ b/src/org/traccar/protocol/AuroProtocol.java @@ -19,6 +19,7 @@ import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.frame.LineBasedFrameDecoder; import org.jboss.netty.handler.codec.string.StringDecoder; +import org.jboss.netty.handler.codec.string.StringEncoder; import org.traccar.BaseProtocol; import org.traccar.TrackerServer; @@ -37,6 +38,7 @@ public class AuroProtocol extends BaseProtocol { protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new LineBasedFrameDecoder(1024)); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new AuroProtocolDecoder(AuroProtocol.this)); } }); diff --git a/src/org/traccar/protocol/CarTrackProtocol.java b/src/org/traccar/protocol/CarTrackProtocol.java index e202ab65a..8a60e3ebb 100644 --- a/src/org/traccar/protocol/CarTrackProtocol.java +++ b/src/org/traccar/protocol/CarTrackProtocol.java @@ -18,6 +18,7 @@ package org.traccar.protocol; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.string.StringDecoder; +import org.jboss.netty.handler.codec.string.StringEncoder; import org.traccar.BaseProtocol; import org.traccar.CharacterDelimiterFrameDecoder; import org.traccar.TrackerServer; @@ -37,6 +38,7 @@ public class CarTrackProtocol extends BaseProtocol { protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new CharacterDelimiterFrameDecoder(1024, "##")); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new CarTrackProtocolDecoder(CarTrackProtocol.this)); } }); diff --git a/src/org/traccar/protocol/DishaProtocol.java b/src/org/traccar/protocol/DishaProtocol.java index cdb3ed0ac..bb0d6cdf1 100644 --- a/src/org/traccar/protocol/DishaProtocol.java +++ b/src/org/traccar/protocol/DishaProtocol.java @@ -19,6 +19,7 @@ import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.frame.LineBasedFrameDecoder; import org.jboss.netty.handler.codec.string.StringDecoder; +import org.jboss.netty.handler.codec.string.StringEncoder; import org.traccar.BaseProtocol; import org.traccar.TrackerServer; @@ -37,6 +38,7 @@ public class DishaProtocol extends BaseProtocol { protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new LineBasedFrameDecoder(1024)); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new DishaProtocolDecoder(DishaProtocol.this)); } }); diff --git a/src/org/traccar/protocol/EasyTrackProtocol.java b/src/org/traccar/protocol/EasyTrackProtocol.java index 5a0a65ca2..d8bebeb5e 100644 --- a/src/org/traccar/protocol/EasyTrackProtocol.java +++ b/src/org/traccar/protocol/EasyTrackProtocol.java @@ -18,6 +18,7 @@ package org.traccar.protocol; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.string.StringDecoder; +import org.jboss.netty.handler.codec.string.StringEncoder; import org.traccar.BaseProtocol; import org.traccar.CharacterDelimiterFrameDecoder; import org.traccar.TrackerServer; @@ -37,6 +38,7 @@ public class EasyTrackProtocol extends BaseProtocol { protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new CharacterDelimiterFrameDecoder(1024, '#')); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new EasyTrackProtocolDecoder(EasyTrackProtocol.this)); } }); diff --git a/src/org/traccar/protocol/FoxProtocol.java b/src/org/traccar/protocol/FoxProtocol.java index cc069692b..bcda1e433 100644 --- a/src/org/traccar/protocol/FoxProtocol.java +++ b/src/org/traccar/protocol/FoxProtocol.java @@ -18,6 +18,7 @@ package org.traccar.protocol; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.string.StringDecoder; +import org.jboss.netty.handler.codec.string.StringEncoder; import org.traccar.BaseProtocol; import org.traccar.CharacterDelimiterFrameDecoder; import org.traccar.TrackerServer; @@ -37,6 +38,7 @@ public class FoxProtocol extends BaseProtocol { protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new CharacterDelimiterFrameDecoder(1024, "")); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new FoxProtocolDecoder(FoxProtocol.this)); } }); diff --git a/src/org/traccar/protocol/FreedomProtocol.java b/src/org/traccar/protocol/FreedomProtocol.java index 22d7792bc..2eb510cdb 100644 --- a/src/org/traccar/protocol/FreedomProtocol.java +++ b/src/org/traccar/protocol/FreedomProtocol.java @@ -19,6 +19,7 @@ import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.frame.LineBasedFrameDecoder; import org.jboss.netty.handler.codec.string.StringDecoder; +import org.jboss.netty.handler.codec.string.StringEncoder; import org.traccar.BaseProtocol; import org.traccar.TrackerServer; @@ -37,6 +38,7 @@ public class FreedomProtocol extends BaseProtocol { protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new LineBasedFrameDecoder(1024)); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new FreedomProtocolDecoder(FreedomProtocol.this)); } }); diff --git a/src/org/traccar/protocol/GnxProtocol.java b/src/org/traccar/protocol/GnxProtocol.java index 7cbc14916..ff2976286 100644 --- a/src/org/traccar/protocol/GnxProtocol.java +++ b/src/org/traccar/protocol/GnxProtocol.java @@ -18,6 +18,7 @@ package org.traccar.protocol; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.string.StringDecoder; +import org.jboss.netty.handler.codec.string.StringEncoder; import org.traccar.BaseProtocol; import org.traccar.CharacterDelimiterFrameDecoder; import org.traccar.TrackerServer; @@ -37,6 +38,7 @@ public class GnxProtocol extends BaseProtocol { protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new CharacterDelimiterFrameDecoder(1024, "\n\r")); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new GnxProtocolDecoder(GnxProtocol.this)); } }); diff --git a/src/org/traccar/protocol/GotopProtocol.java b/src/org/traccar/protocol/GotopProtocol.java index 5cec8f73c..303001756 100644 --- a/src/org/traccar/protocol/GotopProtocol.java +++ b/src/org/traccar/protocol/GotopProtocol.java @@ -18,6 +18,7 @@ package org.traccar.protocol; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.string.StringDecoder; +import org.jboss.netty.handler.codec.string.StringEncoder; import org.traccar.BaseProtocol; import org.traccar.CharacterDelimiterFrameDecoder; import org.traccar.TrackerServer; @@ -37,6 +38,7 @@ public class GotopProtocol extends BaseProtocol { protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new CharacterDelimiterFrameDecoder(1024, '#')); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new GotopProtocolDecoder(GotopProtocol.this)); } }); diff --git a/src/org/traccar/protocol/GpsMarkerProtocol.java b/src/org/traccar/protocol/GpsMarkerProtocol.java index 3ac827ea7..69c2637bd 100644 --- a/src/org/traccar/protocol/GpsMarkerProtocol.java +++ b/src/org/traccar/protocol/GpsMarkerProtocol.java @@ -18,6 +18,7 @@ package org.traccar.protocol; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.string.StringDecoder; +import org.jboss.netty.handler.codec.string.StringEncoder; import org.traccar.BaseProtocol; import org.traccar.CharacterDelimiterFrameDecoder; import org.traccar.TrackerServer; @@ -37,6 +38,7 @@ public class GpsMarkerProtocol extends BaseProtocol { protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new CharacterDelimiterFrameDecoder(1024, "\r")); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new GpsMarkerProtocolDecoder(GpsMarkerProtocol.this)); } }); diff --git a/src/org/traccar/protocol/H02ProtocolDecoder.java b/src/org/traccar/protocol/H02ProtocolDecoder.java index 6e1bb2d9d..ffe16e975 100644 --- a/src/org/traccar/protocol/H02ProtocolDecoder.java +++ b/src/org/traccar/protocol/H02ProtocolDecoder.java @@ -64,19 +64,19 @@ public class H02ProtocolDecoder extends BaseProtocolDecoder { private void processStatus(Position position, long status) { if (!BitUtil.check(status, 0) || !BitUtil.check(status, 1) - || !BitUtil.check(status, 3) || !BitUtil.check(status, 4) || !BitUtil.check(status, 7)) {//added by Erez + || !BitUtil.check(status, 3) || !BitUtil.check(status, 4) || !BitUtil.check(status, 7)) { position.set(Position.KEY_ALARM, true); - if (!BitUtil.check(status, 0)){//added by Erez - position.set(Position.KEY_ALARM_TYPE, "theft alarm"); + if (!BitUtil.check(status, 0)){ + position.set(Position.KEY_ALARM_TYPE, "theft"); } else if (!BitUtil.check(status, 1)){ - position.set(Position.KEY_ALARM_TYPE, "robbery alarm"); + position.set(Position.KEY_ALARM_TYPE, "robbery"); } else if (!BitUtil.check(status, 3)){ - position.set(Position.KEY_ALARM_TYPE, "illegal ignition alarm"); + position.set(Position.KEY_ALARM_TYPE, "illegal ignition"); } else if (!BitUtil.check(status, 4)){ - position.set(Position.KEY_ALARM_TYPE, "entering alarm"); + position.set(Position.KEY_ALARM_TYPE, "entering"); } else if (!BitUtil.check(status, 7)){ - position.set(Position.KEY_ALARM_TYPE, "out alarm"); + position.set(Position.KEY_ALARM_TYPE, "out"); } } diff --git a/src/org/traccar/protocol/HaicomProtocol.java b/src/org/traccar/protocol/HaicomProtocol.java index de9e3ebb1..344f9c1ae 100644 --- a/src/org/traccar/protocol/HaicomProtocol.java +++ b/src/org/traccar/protocol/HaicomProtocol.java @@ -18,6 +18,7 @@ package org.traccar.protocol; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.string.StringDecoder; +import org.jboss.netty.handler.codec.string.StringEncoder; import org.traccar.BaseProtocol; import org.traccar.CharacterDelimiterFrameDecoder; import org.traccar.TrackerServer; @@ -37,6 +38,7 @@ public class HaicomProtocol extends BaseProtocol { protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new CharacterDelimiterFrameDecoder(1024, '*')); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new HaicomProtocolDecoder(HaicomProtocol.this)); } }); diff --git a/src/org/traccar/protocol/HomtecsProtocol.java b/src/org/traccar/protocol/HomtecsProtocol.java index 1a2e98565..8e65f8572 100644 --- a/src/org/traccar/protocol/HomtecsProtocol.java +++ b/src/org/traccar/protocol/HomtecsProtocol.java @@ -18,6 +18,7 @@ package org.traccar.protocol; import org.jboss.netty.bootstrap.ConnectionlessBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.string.StringDecoder; +import org.jboss.netty.handler.codec.string.StringEncoder; import org.traccar.BaseProtocol; import org.traccar.TrackerServer; @@ -35,6 +36,7 @@ public class HomtecsProtocol extends BaseProtocol { @Override protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new HomtecsProtocolDecoder(HomtecsProtocol.this)); } }); diff --git a/src/org/traccar/protocol/KenjiProtocol.java b/src/org/traccar/protocol/KenjiProtocol.java index 6639021cb..8b196a9ed 100755 --- a/src/org/traccar/protocol/KenjiProtocol.java +++ b/src/org/traccar/protocol/KenjiProtocol.java @@ -19,6 +19,7 @@ import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.frame.LineBasedFrameDecoder; import org.jboss.netty.handler.codec.string.StringDecoder; +import org.jboss.netty.handler.codec.string.StringEncoder; import org.traccar.BaseProtocol; import org.traccar.TrackerServer; @@ -38,6 +39,7 @@ public class KenjiProtocol extends BaseProtocol { protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new LineBasedFrameDecoder(1024)); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new KenjiProtocolDecoder(KenjiProtocol.this)); } }); diff --git a/src/org/traccar/protocol/SanavProtocol.java b/src/org/traccar/protocol/SanavProtocol.java index 29c0533ea..bb329ab70 100644 --- a/src/org/traccar/protocol/SanavProtocol.java +++ b/src/org/traccar/protocol/SanavProtocol.java @@ -18,6 +18,7 @@ package org.traccar.protocol; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.string.StringDecoder; +import org.jboss.netty.handler.codec.string.StringEncoder; import org.traccar.BaseProtocol; import org.traccar.CharacterDelimiterFrameDecoder; import org.traccar.TrackerServer; @@ -37,6 +38,7 @@ public class SanavProtocol extends BaseProtocol { protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new CharacterDelimiterFrameDecoder(1024, '*')); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new SanavProtocolDecoder(SanavProtocol.this)); } }); diff --git a/src/org/traccar/protocol/Stl060Protocol.java b/src/org/traccar/protocol/Stl060Protocol.java index 49e59e240..e37f94b00 100644 --- a/src/org/traccar/protocol/Stl060Protocol.java +++ b/src/org/traccar/protocol/Stl060Protocol.java @@ -18,6 +18,7 @@ package org.traccar.protocol; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.string.StringDecoder; +import org.jboss.netty.handler.codec.string.StringEncoder; import org.traccar.BaseProtocol; import org.traccar.TrackerServer; @@ -36,6 +37,7 @@ public class Stl060Protocol extends BaseProtocol { protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new Stl060FrameDecoder(1024)); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new Stl060ProtocolDecoder(Stl060Protocol.this)); } }); diff --git a/src/org/traccar/protocol/SupermateProtocol.java b/src/org/traccar/protocol/SupermateProtocol.java index 12e773b9a..bcc2bed16 100755 --- a/src/org/traccar/protocol/SupermateProtocol.java +++ b/src/org/traccar/protocol/SupermateProtocol.java @@ -18,6 +18,7 @@ package org.traccar.protocol; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.string.StringDecoder; +import org.jboss.netty.handler.codec.string.StringEncoder; import org.traccar.BaseProtocol; import org.traccar.CharacterDelimiterFrameDecoder; import org.traccar.TrackerServer; @@ -37,6 +38,7 @@ public class SupermateProtocol extends BaseProtocol { protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new CharacterDelimiterFrameDecoder(1024, "#")); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new SupermateProtocolDecoder(SupermateProtocol.this)); } }); diff --git a/src/org/traccar/protocol/T55Protocol.java b/src/org/traccar/protocol/T55Protocol.java index 3fa0f6a9e..86f927e41 100644 --- a/src/org/traccar/protocol/T55Protocol.java +++ b/src/org/traccar/protocol/T55Protocol.java @@ -38,16 +38,16 @@ public class T55Protocol extends BaseProtocol { @Override protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new LineBasedFrameDecoder(1024)); - pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new T55ProtocolDecoder(T55Protocol.this)); } }); serverList.add(new TrackerServer(new ConnectionlessBootstrap(), this.getName()) { @Override protected void addSpecificHandlers(ChannelPipeline pipeline) { - pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new T55ProtocolDecoder(T55Protocol.this)); } }); diff --git a/src/org/traccar/protocol/TaipProtocol.java b/src/org/traccar/protocol/TaipProtocol.java index a3b744e70..e72639099 100644 --- a/src/org/traccar/protocol/TaipProtocol.java +++ b/src/org/traccar/protocol/TaipProtocol.java @@ -38,16 +38,16 @@ public class TaipProtocol extends BaseProtocol { @Override protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new CharacterDelimiterFrameDecoder(1024, '<')); - pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new TaipProtocolDecoder(TaipProtocol.this, true)); } }); serverList.add(new TrackerServer(new ConnectionlessBootstrap(), this.getName()) { @Override protected void addSpecificHandlers(ChannelPipeline pipeline) { - pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new TaipProtocolDecoder(TaipProtocol.this, false)); } }); diff --git a/src/org/traccar/protocol/TelicProtocol.java b/src/org/traccar/protocol/TelicProtocol.java index 464892431..1e27620ba 100644 --- a/src/org/traccar/protocol/TelicProtocol.java +++ b/src/org/traccar/protocol/TelicProtocol.java @@ -18,6 +18,7 @@ package org.traccar.protocol; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.string.StringDecoder; +import org.jboss.netty.handler.codec.string.StringEncoder; import org.traccar.BaseProtocol; import org.traccar.TrackerServer; @@ -37,6 +38,7 @@ public class TelicProtocol extends BaseProtocol { protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new TelicFrameDecoder()); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new TelicProtocolDecoder(TelicProtocol.this)); } }; diff --git a/src/org/traccar/protocol/Tk103Protocol.java b/src/org/traccar/protocol/Tk103Protocol.java index 324c01a31..b14264091 100644 --- a/src/org/traccar/protocol/Tk103Protocol.java +++ b/src/org/traccar/protocol/Tk103Protocol.java @@ -38,16 +38,16 @@ public class Tk103Protocol extends BaseProtocol { @Override protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new CharacterDelimiterFrameDecoder(1024, ')')); - pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new Tk103ProtocolDecoder(Tk103Protocol.this)); } }); serverList.add(new TrackerServer(new ConnectionlessBootstrap(), this.getName()) { @Override protected void addSpecificHandlers(ChannelPipeline pipeline) { - pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new Tk103ProtocolDecoder(Tk103Protocol.this)); } }); diff --git a/src/org/traccar/protocol/Tlt2hProtocol.java b/src/org/traccar/protocol/Tlt2hProtocol.java index 14787537d..3a1bf99ff 100644 --- a/src/org/traccar/protocol/Tlt2hProtocol.java +++ b/src/org/traccar/protocol/Tlt2hProtocol.java @@ -37,8 +37,8 @@ public class Tlt2hProtocol extends BaseProtocol { @Override protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new CharacterDelimiterFrameDecoder(32 * 1024, "##\r\n")); - pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new Tlt2hProtocolDecoder(Tlt2hProtocol.this)); } }); diff --git a/src/org/traccar/protocol/TopflytechProtocol.java b/src/org/traccar/protocol/TopflytechProtocol.java index 42fa36c10..ae250ad02 100644 --- a/src/org/traccar/protocol/TopflytechProtocol.java +++ b/src/org/traccar/protocol/TopflytechProtocol.java @@ -18,6 +18,7 @@ package org.traccar.protocol; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.string.StringDecoder; +import org.jboss.netty.handler.codec.string.StringEncoder; import org.traccar.BaseProtocol; import org.traccar.CharacterDelimiterFrameDecoder; import org.traccar.TrackerServer; @@ -37,6 +38,7 @@ public class TopflytechProtocol extends BaseProtocol { protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new CharacterDelimiterFrameDecoder(1024, ')')); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new TopflytechProtocolDecoder(TopflytechProtocol.this)); } }); diff --git a/src/org/traccar/protocol/Tt8850Protocol.java b/src/org/traccar/protocol/Tt8850Protocol.java index a409205c7..db41fae9f 100644 --- a/src/org/traccar/protocol/Tt8850Protocol.java +++ b/src/org/traccar/protocol/Tt8850Protocol.java @@ -18,6 +18,7 @@ package org.traccar.protocol; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.string.StringDecoder; +import org.jboss.netty.handler.codec.string.StringEncoder; import org.traccar.BaseProtocol; import org.traccar.CharacterDelimiterFrameDecoder; import org.traccar.TrackerServer; @@ -37,6 +38,7 @@ public class Tt8850Protocol extends BaseProtocol { protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new CharacterDelimiterFrameDecoder(1024, "$")); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new Tt8850ProtocolDecoder(Tt8850Protocol.this)); } }); diff --git a/src/org/traccar/protocol/UproProtocol.java b/src/org/traccar/protocol/UproProtocol.java index 36115edb4..b62247761 100644 --- a/src/org/traccar/protocol/UproProtocol.java +++ b/src/org/traccar/protocol/UproProtocol.java @@ -18,6 +18,7 @@ package org.traccar.protocol; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.string.StringDecoder; +import org.jboss.netty.handler.codec.string.StringEncoder; import org.traccar.BaseProtocol; import org.traccar.CharacterDelimiterFrameDecoder; import org.traccar.TrackerServer; @@ -37,6 +38,7 @@ public class UproProtocol extends BaseProtocol { protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new CharacterDelimiterFrameDecoder(1024, '#')); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new UproProtocolDecoder(UproProtocol.this)); } }); diff --git a/src/org/traccar/protocol/V680Protocol.java b/src/org/traccar/protocol/V680Protocol.java index d2ceb207b..4edff3772 100644 --- a/src/org/traccar/protocol/V680Protocol.java +++ b/src/org/traccar/protocol/V680Protocol.java @@ -19,6 +19,7 @@ import org.jboss.netty.bootstrap.ConnectionlessBootstrap; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.string.StringDecoder; +import org.jboss.netty.handler.codec.string.StringEncoder; import org.traccar.BaseProtocol; import org.traccar.CharacterDelimiterFrameDecoder; import org.traccar.TrackerServer; @@ -38,6 +39,7 @@ public class V680Protocol extends BaseProtocol { protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new CharacterDelimiterFrameDecoder(1024, "##")); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new V680ProtocolDecoder(V680Protocol.this)); } }); @@ -45,6 +47,7 @@ public class V680Protocol extends BaseProtocol { @Override protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new V680ProtocolDecoder(V680Protocol.this)); } }); diff --git a/src/org/traccar/protocol/VisiontekProtocol.java b/src/org/traccar/protocol/VisiontekProtocol.java index 53d02c478..2d2a41e89 100644 --- a/src/org/traccar/protocol/VisiontekProtocol.java +++ b/src/org/traccar/protocol/VisiontekProtocol.java @@ -18,6 +18,7 @@ package org.traccar.protocol; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.string.StringDecoder; +import org.jboss.netty.handler.codec.string.StringEncoder; import org.traccar.BaseProtocol; import org.traccar.CharacterDelimiterFrameDecoder; import org.traccar.TrackerServer; @@ -37,6 +38,7 @@ public class VisiontekProtocol extends BaseProtocol { protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new CharacterDelimiterFrameDecoder(1024, '#')); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new VisiontekProtocolDecoder(VisiontekProtocol.this)); } }); diff --git a/src/org/traccar/protocol/XexunProtocol.java b/src/org/traccar/protocol/XexunProtocol.java index f99a3a9ee..14afaf4cb 100644 --- a/src/org/traccar/protocol/XexunProtocol.java +++ b/src/org/traccar/protocol/XexunProtocol.java @@ -19,6 +19,7 @@ import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.frame.LineBasedFrameDecoder; import org.jboss.netty.handler.codec.string.StringDecoder; +import org.jboss.netty.handler.codec.string.StringEncoder; import org.traccar.BaseProtocol; import org.traccar.Context; import org.traccar.TrackerServer; @@ -43,6 +44,7 @@ public class XexunProtocol extends BaseProtocol { pipeline.addLast("frameDecoder", new XexunFrameDecoder()); } pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new XexunProtocolDecoder(XexunProtocol.this, full)); } }); diff --git a/src/org/traccar/protocol/Xt013Protocol.java b/src/org/traccar/protocol/Xt013Protocol.java index 14e0d3b9f..b11256b7d 100644 --- a/src/org/traccar/protocol/Xt013Protocol.java +++ b/src/org/traccar/protocol/Xt013Protocol.java @@ -19,6 +19,7 @@ import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.frame.LineBasedFrameDecoder; import org.jboss.netty.handler.codec.string.StringDecoder; +import org.jboss.netty.handler.codec.string.StringEncoder; import org.traccar.BaseProtocol; import org.traccar.TrackerServer; @@ -37,6 +38,7 @@ public class Xt013Protocol extends BaseProtocol { protected void addSpecificHandlers(ChannelPipeline pipeline) { pipeline.addLast("frameDecoder", new LineBasedFrameDecoder(1024)); pipeline.addLast("stringDecoder", new StringDecoder()); + pipeline.addLast("stringEncoder", new StringEncoder()); pipeline.addLast("objectDecoder", new Xt013ProtocolDecoder(Xt013Protocol.this)); } }); diff --git a/src/org/traccar/web/WebServer.java b/src/org/traccar/web/WebServer.java index 73702cc3d..4ef31b1df 100644 --- a/src/org/traccar/web/WebServer.java +++ b/src/org/traccar/web/WebServer.java @@ -118,13 +118,9 @@ public class WebServer { resourceHandler.setResourceBase(config.getString("web.path")); if (config.getBoolean("web.debug")) { resourceHandler.setWelcomeFiles(new String[] {"debug.html"}); - //Troubleshooting Locked Files on Windows (changed by Erez) + //Troubleshooting Locked UI Files on Windows while app is running (like html, js, css, etc...), + //you can make changes to the UI Files and refresh the page in the browser without stopping the app first resourceHandler.setMinMemoryMappedContentLength(-1); - - /*DefaultServlet defaultServlet = new DefaultServlet(); - ServletHolder holder = new ServletHolder(defaultServlet); - holder.setInitParameter("useFileMappedBuffer", "false"); - handler.addServlet(holder, "/");*/ } else { resourceHandler.setWelcomeFiles(new String[] {"release.html", "index.html"}); } diff --git a/tools/minify.bat b/tools/minify.bat index dfa9c5895..6ab8fd94b 100644 --- a/tools/minify.bat +++ b/tools/minify.bat @@ -1,5 +1,5 @@ @echo off -cd C:\Users\Erez\Documents\traccar\web -set SDK=C:\inetpub\wwwroot\ext-6.0.0 +cd C:\[traccar path]\traccar\web +set SDK=C:\[sencha path]\ext-6.0.0 sencha -sdk %SDK% compile -classpath=app.js,app,%SDK%\packages\core\src,%SDK%\packages\core\overrides,%SDK%\classic\classic\src,%SDK%\classic\classic\overrides exclude -all and include -recursive -file app.js and exclude -namespace=Ext and concatenate -closure app.min.js diff --git a/tools/test-generator.py b/tools/test-generator.py index 4beadc375..09fb65611 100755 --- a/tools/test-generator.py +++ b/tools/test-generator.py @@ -32,7 +32,6 @@ for i in range(0, len(waypoints)): lon = lon1 + (lon2 - lon1) * j / count points.append((lat, lon)) -#changed by Erez def send(lat, lon, course, alarm): params = (('id', id), ('timestamp', int(time.time())), ('lat', lat), ('lon', lon), ('bearing', course)) if alarm: @@ -53,7 +52,7 @@ index = 0 while True: (lat1, lon1) = points[index % len(points)] (lat2, lon2) = points[(index + 1) % len(points)] - alarm = ((index % 10) == 0)#added by Erez + alarm = False #((index % 10) == 0) send(lat1, lon1, course(lat1, lon1, lat2, lon2), alarm) time.sleep(period) index += 1 diff --git a/web/app/AttributeFormatter.js b/web/app/AttributeFormatter.js index 51b479b9a..253dadb53 100644 --- a/web/app/AttributeFormatter.js +++ b/web/app/AttributeFormatter.js @@ -34,7 +34,6 @@ Ext.define('Traccar.AttributeFormatter', { return Ext.getStore('DistanceUnits').formatValue(value, Traccar.app.getPreference('distanceUnit')); }, - //added by Erez alarmFormatter: function (attributes) { if (attributes instanceof Object) { if (attributes.hasOwnProperty('alarm')){ @@ -48,7 +47,6 @@ Ext.define('Traccar.AttributeFormatter', { return ''; }, - //added by Erez alarmTypeFormatter: function (attributes) { var alatmType = ''; if (attributes instanceof Object) { @@ -86,9 +84,9 @@ Ext.define('Traccar.AttributeFormatter', { return this.courseFormatter; } else if (key === 'distance' || key === 'odometer') { return this.distanceFormatter; - } else if (key === 'alarm') {//added by Erez + } else if (key === 'alarm') { return this.alarmFormatter; - } else if (key === 'alarm-type') {//added by Erez + } else if (key === 'alarm-type') { return this.alarmTypeFormatter; } else { return this.defaultFormatter; diff --git a/web/app/view/Devices.js b/web/app/view/Devices.js index 4227fd1fb..b6e7d6ffd 100644 --- a/web/app/view/Devices.js +++ b/web/app/view/Devices.js @@ -58,7 +58,7 @@ Ext.define('Traccar.view.Devices', { }, { xtype: 'tbfill' },{ - id: 'showAlarmButton',//added by Erez + id: 'showAlarmButton', glyph: 'xf0a2@FontAwesome', tooltip: 'Show Alarms', tooltipType: 'title', diff --git a/web/app/view/Report.js b/web/app/view/Report.js index fcbd5c028..95f8144f2 100644 --- a/web/app/view/Report.js +++ b/web/app/view/Report.js @@ -116,12 +116,12 @@ Ext.define('Traccar.view.Report', { flex: 1, renderer: Traccar.AttributeFormatter.getFormatter('address') }, { - text: 'Alarm',//added by Erez + text: 'Alarm', dataIndex: 'attributes', flex: 1, renderer: Traccar.AttributeFormatter.getFormatter('alarm') }, { - text: 'Alarm Type',//added by Erez + text: 'Alarm Type', dataIndex: 'attributes', flex: 1, renderer: Traccar.AttributeFormatter.getFormatter('alarm-type') diff --git a/web/app/view/StateController.js b/web/app/view/StateController.js index 20b6145ec..68ec3466d 100644 --- a/web/app/view/StateController.js +++ b/web/app/view/StateController.js @@ -62,7 +62,7 @@ Ext.define('Traccar.view.StateController', { if (this.deviceId === data[i].get('deviceId')) { this.updatePosition(data[i]); } - var position = data[i]; //added by Erez + var position = data[i]; var attributes = position.get('attributes'); if (attributes instanceof Object){ if (attributes.hasOwnProperty('alarm') && this.showAlarmSelected()) this.onAlarm(position.get('deviceId'), attributes); @@ -109,11 +109,11 @@ Ext.define('Traccar.view.StateController', { } }, - showAlarmSelected: function () {//added by Erez + showAlarmSelected: function () { return Ext.getCmp('showAlarmButton') && Ext.getCmp('showAlarmButton').pressed; }, - onAlarm: function(deviceId, attributes){//added by Erez + onAlarm: function(deviceId, attributes){ var alatmType = ''; for (key in attributes) { if (attributes.hasOwnProperty(key) && key.toLowerCase()=='alarm-type') { @@ -130,7 +130,7 @@ Ext.define('Traccar.view.StateController', { } }, - showAlarmMsg: function(msg){//added by Erez + showAlarmMsg: function(msg){ this.beep(); var alarmMsg = Ext.Msg.show({ title:'Alarm', @@ -146,7 +146,7 @@ Ext.define('Traccar.view.StateController', { }, - beep: function() {//added by Erez + beep: function() { if(this.snd == null){ this.snd = new Audio("data:audio/wav;base64,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qJrx4KOQjahZxWbcZgztj2c49nKmkId44S71j0c8eV9yDK6uPRzx5X18eDvjvQ6yKo9ZSS6l//8elePK/Lf//IInrOF/FvDoADYAGBMGb7FtErm5MXMlmPAJQVgWta7Zx2go+8xJ0UiCb8LHHdftWyLJE0QIAIsI+UbXu67dZMjmgDGCGl1H+vpF4NSDckSIkk7Vd+sxEhBQMRU8j/12UIRhzSaUdQ+rQU5kGeFxm+hb1oh6pWWmv3uvmReDl0UnvtapVaIzo1jZbf/pD6ElLqSX+rUmOQNpJFa/r+sa4e/pBlAABoAAAAA3CUgShLdGIxsY7AUABPRrgCABdDuQ5GC7DqPQCgbbJUAoRSUj+NIEig0YfyWUho1VBBBA//uQZB4ABZx5zfMakeAAAAmwAAAAF5F3P0w9GtAAACfAAAAAwLhMDmAYWMgVEG1U0FIGCBgXBXAtfMH10000EEEEEECUBYln03TTTdNBDZopopYvrTTdNa325mImNg3TTPV9q3pmY0xoO6bv3r00y+IDGid/9aaaZTGMuj9mpu9Mpio1dXrr5HERTZSmqU36A3CumzN/9Robv/Xx4v9ijkSRSNLQhAWumap82WRSBUqXStV/YcS+XVLnSS+WLDroqArFkMEsAS+eWmrUzrO0oEmE40RlMZ5+ODIkAyKAGUwZ3mVKmcamcJnMW26MRPgUw6j+LkhyHGVGYjSUUKNpuJUQoOIAyDvEyG8S5yfK6dhZc0Tx1KI/gviKL6qvvFs1+bWtaz58uUNnryq6kt5RzOCkPWlVqVX2a/EEBUdU1KrXLf40GoiiFXK///qpoiDXrOgqDR38JB0bw7SoL+ZB9o1RCkQjQ2CBYZKd/+VJxZRRZlqSkKiws0WFxUyCwsKiMy7hUVFhIaCrNQsKkTIsLivwKKigsj8XYlwt/WKi2N4d//uQRCSAAjURNIHpMZBGYiaQPSYyAAABLAAAAAAAACWAAAAApUF/Mg+0aohSIRobBAsMlO//Kk4soosy1JSFRYWaLC4qZBYWFRGZdwqKiwkNBVmoWFSJkWFxX4FFRQWR+LsS4W/rFRb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VEFHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU291bmRib3kuZGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjAwNGh0dHA6Ly93d3cuc291bmRib3kuZGUAAAAAAAAAACU="); } -- cgit v1.2.3 From 04627d7473e4ea21d6ecd950cbb3fdd6fa249429 Mon Sep 17 00:00:00 2001 From: ninioe Date: Mon, 18 Jul 2016 09:48:11 +0300 Subject: commented out code and unnecessary comments --- src/org/traccar/Main.java | 5 ++--- src/org/traccar/database/DataManager.java | 2 +- web/app/view/Devices.js | 2 -- 3 files changed, 3 insertions(+), 6 deletions(-) (limited to 'src/org/traccar/database/DataManager.java') diff --git a/src/org/traccar/Main.java b/src/org/traccar/Main.java index 0070904ab..45374ca15 100644 --- a/src/org/traccar/Main.java +++ b/src/org/traccar/Main.java @@ -21,8 +21,8 @@ import java.util.TimerTask; import java.util.Locale; public final class Main { - static final long cleanDelay = 10*1000; //10 sec - static final long cleanPeriod = 24*60*60*1000; //24 hr + static final long cleanDelay = 10*1000; + static final long cleanPeriod = 24*60*60*1000; private Main() { } @@ -42,7 +42,6 @@ public final class Main { timer.scheduleAtFixedRate(new TimerTask() { @Override public void run() { - // Clean positions history try { Context.getDataManager().clearPositionsHistory(); } catch (Exception error) { diff --git a/src/org/traccar/database/DataManager.java b/src/org/traccar/database/DataManager.java index 239fc1930..bdd2e9adf 100644 --- a/src/org/traccar/database/DataManager.java +++ b/src/org/traccar/database/DataManager.java @@ -541,7 +541,7 @@ public class DataManager implements IdentityManager { Date lastUpdate = device.getLastUpdate(); if(lastUpdate != null){ - Date dateBefore = new Date(lastUpdate.getTime() - histDays * 24 * 3600 * 1000 ); //Subtract histDays days + Date dateBefore = new Date(lastUpdate.getTime() - histDays * 24 * 3600 * 1000 ); //String dt = s.format(dateBefore); QueryBuilder.create(dataSource, sql) diff --git a/web/app/view/Devices.js b/web/app/view/Devices.js index b6e7d6ffd..77d796b1e 100644 --- a/web/app/view/Devices.js +++ b/web/app/view/Devices.js @@ -68,11 +68,9 @@ Ext.define('Traccar.view.Devices', { toggle: function(button, pressed){ if(pressed){ button.setGlyph('xf0a2@FontAwesome'); - //Ext.getCmp('useAlarmSoundButton').enable(); } else { button.setGlyph('xf1f7@FontAwesome'); - //Ext.getCmp('useAlarmSoundButton').disable(); } }, scope:this -- cgit v1.2.3 From e954e95547d05a34bbd36e3aa5003f4ddaf2ccd0 Mon Sep 17 00:00:00 2001 From: ninioe Date: Tue, 19 Jul 2016 15:12:38 +0300 Subject: changes Anton asked me --- src/org/traccar/BasePipelineFactory.java | 6 +++++- src/org/traccar/Main.java | 4 +++- src/org/traccar/database/DataManager.java | 4 +--- web/app/controller/Root.js | 13 ++++++++----- web/beep.wav | Bin 0 -> 3047 bytes web/l10n/en.json | 17 +++++++++-------- 6 files changed, 26 insertions(+), 18 deletions(-) create mode 100644 web/beep.wav (limited to 'src/org/traccar/database/DataManager.java') diff --git a/src/org/traccar/BasePipelineFactory.java b/src/org/traccar/BasePipelineFactory.java index eb08c7e08..31845290f 100644 --- a/src/org/traccar/BasePipelineFactory.java +++ b/src/org/traccar/BasePipelineFactory.java @@ -29,7 +29,11 @@ import org.jboss.netty.channel.MessageEvent; import org.jboss.netty.channel.SimpleChannelHandler; import org.jboss.netty.handler.logging.LoggingHandler; import org.jboss.netty.handler.timeout.IdleStateHandler; -import org.traccar.events.*; +import org.traccar.events.CommandResultEventHandler; +import org.traccar.events.GeofenceEventHandler; +import org.traccar.events.MotionEventHandler; +import org.traccar.events.OverspeedEventHandler; +import org.traccar.events.AlertEventHandler; import org.traccar.helper.Log; import java.net.InetSocketAddress; diff --git a/src/org/traccar/Main.java b/src/org/traccar/Main.java index 45374ca15..baad9d040 100644 --- a/src/org/traccar/Main.java +++ b/src/org/traccar/Main.java @@ -16,6 +16,8 @@ package org.traccar; import org.traccar.helper.Log; + +import java.sql.SQLException; import java.util.Timer; import java.util.TimerTask; import java.util.Locale; @@ -44,7 +46,7 @@ public final class Main { public void run() { try { Context.getDataManager().clearPositionsHistory(); - } catch (Exception error) { + } catch (SQLException error) { Log.warning(error); } } diff --git a/src/org/traccar/database/DataManager.java b/src/org/traccar/database/DataManager.java index e5a245568..3c8529eff 100644 --- a/src/org/traccar/database/DataManager.java +++ b/src/org/traccar/database/DataManager.java @@ -399,7 +399,6 @@ public class DataManager { } public void clearPositionsHistory() throws SQLException { - //SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd"); int histDays = config.getInteger("database.positionsHistoryDays"); if (histDays == 0) { return; @@ -414,8 +413,7 @@ public class DataManager { Date lastUpdate = device.getLastUpdate(); if(lastUpdate != null){ - Date dateBefore = new Date(lastUpdate.getTime() - histDays * 24 * 3600 * 1000 ); - //String dt = s.format(dateBefore); + Date dateBefore = new Date(lastUpdate.getTime() - histDays * 24 * 3600 * 1000); QueryBuilder.create(dataSource, sql) .setLong("deviceId", device.getId()) diff --git a/web/app/controller/Root.js b/web/app/controller/Root.js index b508cc5ef..3a7f24bca 100644 --- a/web/app/controller/Root.js +++ b/web/app/controller/Root.js @@ -91,7 +91,7 @@ Ext.define('Traccar.controller.Root', { beep: function() { if(this.snd == null){ - this.snd = new Audio("data:audio/wav;base64,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qJrx4KOQjahZxWbcZgztj2c49nKmkId44S71j0c8eV9yDK6uPRzx5X18eDvjvQ6yKo9ZSS6l//8elePK/Lf//IInrOF/FvDoADYAGBMGb7FtErm5MXMlmPAJQVgWta7Zx2go+8xJ0UiCb8LHHdftWyLJE0QIAIsI+UbXu67dZMjmgDGCGl1H+vpF4NSDckSIkk7Vd+sxEhBQMRU8j/12UIRhzSaUdQ+rQU5kGeFxm+hb1oh6pWWmv3uvmReDl0UnvtapVaIzo1jZbf/pD6ElLqSX+rUmOQNpJFa/r+sa4e/pBlAABoAAAAA3CUgShLdGIxsY7AUABPRrgCABdDuQ5GC7DqPQCgbbJUAoRSUj+NIEig0YfyWUho1VBBBA//uQZB4ABZx5zfMakeAAAAmwAAAAF5F3P0w9GtAAACfAAAAAwLhMDmAYWMgVEG1U0FIGCBgXBXAtfMH10000EEEEEECUBYln03TTTdNBDZopopYvrTTdNa325mImNg3TTPV9q3pmY0xoO6bv3r00y+IDGid/9aaaZTGMuj9mpu9Mpio1dXrr5HERTZSmqU36A3CumzN/9Robv/Xx4v9ijkSRSNLQhAWumap82WRSBUqXStV/YcS+XVLnSS+WLDroqArFkMEsAS+eWmrUzrO0oEmE40RlMZ5+ODIkAyKAGUwZ3mVKmcamcJnMW26MRPgUw6j+LkhyHGVGYjSUUKNpuJUQoOIAyDvEyG8S5yfK6dhZc0Tx1KI/gviKL6qvvFs1+bWtaz58uUNnryq6kt5RzOCkPWlVqVX2a/EEBUdU1KrXLf40GoiiFXK///qpoiDXrOgqDR38JB0bw7SoL+ZB9o1RCkQjQ2CBYZKd/+VJxZRRZlqSkKiws0WFxUyCwsKiMy7hUVFhIaCrNQsKkTIsLivwKKigsj8XYlwt/WKi2N4d//uQRCSAAjURNIHpMZBGYiaQPSYyAAABLAAAAAAAACWAAAAApUF/Mg+0aohSIRobBAsMlO//Kk4soosy1JSFRYWaLC4qZBYWFRGZdwqKiwkNBVmoWFSJkWFxX4FFRQWR+LsS4W/rFRb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VEFHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU291bmRib3kuZGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjAwNGh0dHA6Ly93d3cuc291bmRib3kuZGUAAAAAAAAAACU="); + this.snd = new Audio("beep.wav"); } this.snd.play(); }, @@ -110,7 +110,7 @@ Ext.define('Traccar.controller.Root', { }; socket.onmessage = function (event) { - var i, j, store, data, array, entity, device, typeKey, text, geofence; + var i, j, store, data, array, entity, device, typeKey, alarmKey, text, geofence; data = Ext.decode(event.data); @@ -157,16 +157,19 @@ Ext.define('Traccar.controller.Root', { } text = Strings.eventCommandResult + ': ' + text; } else if (array[i].type === 'alarm' && data.positions) { - text = 'Alarm'; + alarmKey = 'alarm'; + text = Strings[alarmKey]; + if (typeof text === 'undefined') { + text = alarmKey; + } for (j = 0; j < data.positions.length; j++) { if (data.positions[j].id === array[i].positionId && data.positions[j].attributes.alarm != null) { if (typeof data.positions[j].attributes.alarm === 'string' && data.positions[j].attributes.alarm.length >= 2){ - var alarmKey = 'alarm' + data.positions[j].attributes.alarm.charAt(0).toUpperCase() + data.positions[j].attributes.alarm.slice(1); + alarmKey = 'alarm' + data.positions[j].attributes.alarm.charAt(0).toUpperCase() + data.positions[j].attributes.alarm.slice(1); text = Strings[alarmKey]; if (typeof text === 'undefined') { text = alarmKey; } - text = 'Alarm: ' + text; } break; } diff --git a/web/beep.wav b/web/beep.wav new file mode 100644 index 000000000..c2364f114 Binary files /dev/null and b/web/beep.wav differ diff --git a/web/l10n/en.json b/web/l10n/en.json index ff432d444..c5d67e8c1 100644 --- a/web/l10n/en.json +++ b/web/l10n/en.json @@ -119,14 +119,15 @@ "eventGeofenceEnter": "Device has entered geofence", "eventGeofenceExit": "Device has exited geofence", "eventAlarm": "Alarms", - "alarmSos": "sos", - "alarmVibration": "vibration", - "alarmMovement": "movement", - "alarmOverspeed": "overspeed", - "alarmFallDown": "fallDown", - "alarmLowBattery": "lowBattery", - "alarmMotion": "motion", - "alarmFault": "fault", + "alarm": "Alarm", + "alarmSos": "SOS Alarm", + "alarmVibration": "Vibration Alarm", + "alarmMovement": "Movement Alarm", + "alarmOverspeed": "Overspeed Alarm", + "alarmFallDown": "FallDown Alarm", + "alarmLowBattery": "LowBattery Alarm", + "alarmMotion": "Motion Alarm", + "alarmFault": "Fault Alarm", "notificationType": "Type of Notification", "notificationWeb": "Send via Web", "notificationMail": "Send via Mail" -- cgit v1.2.3 From b6f3291589d950e1a91a8b8491e8bea59e7259bd Mon Sep 17 00:00:00 2001 From: ninioe Date: Tue, 19 Jul 2016 15:53:13 +0300 Subject: automated check fix --- src/org/traccar/Main.java | 6 +++--- src/org/traccar/database/DataManager.java | 2 +- src/org/traccar/protocol/H02ProtocolDecoder.java | 11 +++++------ 3 files changed, 9 insertions(+), 10 deletions(-) (limited to 'src/org/traccar/database/DataManager.java') diff --git a/src/org/traccar/Main.java b/src/org/traccar/Main.java index baad9d040..454124fbf 100644 --- a/src/org/traccar/Main.java +++ b/src/org/traccar/Main.java @@ -23,8 +23,8 @@ import java.util.TimerTask; import java.util.Locale; public final class Main { - static final long cleanDelay = 10*1000; - static final long cleanPeriod = 24*60*60*1000; + static final long CLEAN_DELAY = 10 * 1000; + static final long CLEAN_PERIOD = 24 * 60 * 60 * 1000; private Main() { } @@ -50,7 +50,7 @@ public final class Main { Log.warning(error); } } - }, cleanDelay, cleanPeriod); + }, CLEAN_DELAY, CLEAN_PERIOD); Runtime.getRuntime().addShutdownHook(new Thread() { @Override diff --git a/src/org/traccar/database/DataManager.java b/src/org/traccar/database/DataManager.java index 3c8529eff..691c31643 100644 --- a/src/org/traccar/database/DataManager.java +++ b/src/org/traccar/database/DataManager.java @@ -411,7 +411,7 @@ public class DataManager { for (Device device : getAllDevices()) { Date lastUpdate = device.getLastUpdate(); - if(lastUpdate != null){ + if (lastUpdate != null) { Date dateBefore = new Date(lastUpdate.getTime() - histDays * 24 * 3600 * 1000); diff --git a/src/org/traccar/protocol/H02ProtocolDecoder.java b/src/org/traccar/protocol/H02ProtocolDecoder.java index 033f6476d..f366d8100 100644 --- a/src/org/traccar/protocol/H02ProtocolDecoder.java +++ b/src/org/traccar/protocol/H02ProtocolDecoder.java @@ -25,7 +25,6 @@ import org.traccar.helper.BitUtil; import org.traccar.helper.DateBuilder; import org.traccar.helper.Parser; import org.traccar.helper.PatternBuilder; -import org.traccar.model.Event; import org.traccar.model.Position; import java.net.SocketAddress; @@ -68,15 +67,15 @@ public class H02ProtocolDecoder extends BaseProtocolDecoder { if (!BitUtil.check(status, 0) || !BitUtil.check(status, 1) || !BitUtil.check(status, 3) || !BitUtil.check(status, 4) || !BitUtil.check(status, 7)) { - if (!BitUtil.check(status, 0)){ + if (!BitUtil.check(status, 0)) { position.set(Position.KEY_ALARM, Position.ALARM_VIBRATION);//theft alarm in protocol - } else if (!BitUtil.check(status, 1)){ + } else if (!BitUtil.check(status, 1)) { position.set(Position.KEY_ALARM, "robbery"); - } else if (!BitUtil.check(status, 3)){ + } else if (!BitUtil.check(status, 3)) { position.set(Position.KEY_ALARM, "illegal ignition"); - } else if (!BitUtil.check(status, 4)){ + } else if (!BitUtil.check(status, 4)) { position.set(Position.KEY_ALARM, "entering"); - } else if (!BitUtil.check(status, 7)){ + } else if (!BitUtil.check(status, 7)) { position.set(Position.KEY_ALARM, "out"); } -- cgit v1.2.3 From 2e7987b5df7611299aa76bcc9eca3424ce31d204 Mon Sep 17 00:00:00 2001 From: ninioe Date: Thu, 21 Jul 2016 07:58:28 +0300 Subject: protect Device positionId on clear history --- debug.xml | 2 +- src/org/traccar/database/DataManager.java | 1 + web/app/controller/Root.js | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) (limited to 'src/org/traccar/database/DataManager.java') diff --git a/debug.xml b/debug.xml index 19e81db07..346eda292 100644 --- a/debug.xml +++ b/debug.xml @@ -324,7 +324,7 @@ - DELETE FROM positions WHERE deviceid = :deviceId and servertime < :serverTime; + DELETE FROM positions WHERE id != :positionId and deviceid = :deviceId and servertime < :serverTime; diff --git a/src/org/traccar/database/DataManager.java b/src/org/traccar/database/DataManager.java index 691c31643..710eceebb 100644 --- a/src/org/traccar/database/DataManager.java +++ b/src/org/traccar/database/DataManager.java @@ -416,6 +416,7 @@ public class DataManager { Date dateBefore = new Date(lastUpdate.getTime() - histDays * 24 * 3600 * 1000); QueryBuilder.create(dataSource, sql) + .setLong("positionId", device.getPositionId()) .setLong("deviceId", device.getId()) .setDate("serverTime", dateBefore) .executeUpdate(); diff --git a/web/app/controller/Root.js b/web/app/controller/Root.js index 90923fe53..fd30fe7c9 100644 --- a/web/app/controller/Root.js +++ b/web/app/controller/Root.js @@ -81,7 +81,7 @@ Ext.define('Traccar.controller.Root', { this.asyncUpdate(true); } }); - Ext.get('attribution').remove(); + if (Ext.get('attribution') !== null) Ext.get('attribution').remove(); if (this.isPhone) { Ext.create('widget.mainMobile'); } else { -- cgit v1.2.3