aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/org/traccar/Main.java17
-rw-r--r--src/org/traccar/database/DataManager.java25
-rw-r--r--src/org/traccar/model/Position.java1
-rw-r--r--src/org/traccar/protocol/H02ProtocolDecoder.java15
-rw-r--r--src/org/traccar/web/WebServer.java7
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"});
}