diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/org/traccar/Main.java | 17 | ||||
-rw-r--r-- | src/org/traccar/database/DataManager.java | 25 | ||||
-rw-r--r-- | src/org/traccar/model/Position.java | 1 | ||||
-rw-r--r-- | src/org/traccar/protocol/H02ProtocolDecoder.java | 15 | ||||
-rw-r--r-- | src/org/traccar/web/WebServer.java | 7 |
5 files changed, 63 insertions, 2 deletions
diff --git a/src/org/traccar/Main.java b/src/org/traccar/Main.java index 1b8d93e34..eb3114210 100644 --- a/src/org/traccar/Main.java +++ b/src/org/traccar/Main.java @@ -16,7 +16,8 @@ package org.traccar; import org.traccar.helper.Log; - +import java.util.Timer; +import java.util.TimerTask; import java.util.Locale; public final class Main { @@ -35,6 +36,20 @@ 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 + try { + Context.getDataManager().clearPositionsHistory(); + } catch (Exception error) { + Log.warning(error); + } + } + }, 10*1000, 24*60*60*1000); + Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { 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); diff --git a/src/org/traccar/model/Position.java b/src/org/traccar/model/Position.java index 4e03b2097..c548c542f 100644 --- a/src/org/traccar/model/Position.java +++ b/src/org/traccar/model/Position.java @@ -28,6 +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_STATUS = "status"; public static final String KEY_ODOMETER = "odometer"; public static final String KEY_HOURS = "hours"; diff --git a/src/org/traccar/protocol/H02ProtocolDecoder.java b/src/org/traccar/protocol/H02ProtocolDecoder.java index ec5d3adef..6e1bb2d9d 100644 --- a/src/org/traccar/protocol/H02ProtocolDecoder.java +++ b/src/org/traccar/protocol/H02ProtocolDecoder.java @@ -64,8 +64,21 @@ 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, 3) || !BitUtil.check(status, 4) || !BitUtil.check(status, 7)) {//added by Erez position.set(Position.KEY_ALARM, true); + + if (!BitUtil.check(status, 0)){//added by Erez + position.set(Position.KEY_ALARM_TYPE, "theft alarm"); + } else if (!BitUtil.check(status, 1)){ + position.set(Position.KEY_ALARM_TYPE, "robbery alarm"); + } else if (!BitUtil.check(status, 3)){ + position.set(Position.KEY_ALARM_TYPE, "illegal ignition alarm"); + } else if (!BitUtil.check(status, 4)){ + position.set(Position.KEY_ALARM_TYPE, "entering alarm"); + } else if (!BitUtil.check(status, 7)){ + position.set(Position.KEY_ALARM_TYPE, "out alarm"); + } + } position.set(Position.KEY_IGNITION, !BitUtil.check(status, 10)); position.set(Position.KEY_STATUS, status); diff --git a/src/org/traccar/web/WebServer.java b/src/org/traccar/web/WebServer.java index 5527e80f3..73702cc3d 100644 --- a/src/org/traccar/web/WebServer.java +++ b/src/org/traccar/web/WebServer.java @@ -118,6 +118,13 @@ 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) + 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"}); } |