aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2014-04-22 22:18:41 +1200
committerAnton Tananaev <anton.tananaev@gmail.com>2014-04-22 22:18:41 +1200
commitbd9d93b7731b6d5cc0c7fd4287a36f52d00dc05c (patch)
treee688be8915539defd73e97f3fa03a3d662018f31
parent8214596eb5948e6e55de498eaedb67a1a0049481 (diff)
downloadtraccar-server-bd9d93b7731b6d5cc0c7fd4287a36f52d00dc05c.tar.gz
traccar-server-bd9d93b7731b6d5cc0c7fd4287a36f52d00dc05c.tar.bz2
traccar-server-bd9d93b7731b6d5cc0c7fd4287a36f52d00dc05c.zip
Improve device caching
-rw-r--r--default.cfg3
-rw-r--r--opengts.cfg3
-rw-r--r--setup/linux/traccar.cfg3
-rw-r--r--setup/macosx/traccar.cfg3
-rw-r--r--setup/windows/traccar.cfg3
-rw-r--r--src/org/traccar/model/DatabaseDataManager.java22
6 files changed, 3 insertions, 34 deletions
diff --git a/default.cfg b/default.cfg
index 45bfa87f3..a286bec1d 100644
--- a/default.cfg
+++ b/default.cfg
@@ -12,9 +12,6 @@
<entry key='database.user'>sa</entry>
<entry key='database.password'></entry>
- <!-- Database refresh delay in seconds -->
- <entry key='database.refreshDelay'>300</entry>
-
<!-->
id - Long
imei - String
diff --git a/opengts.cfg b/opengts.cfg
index c738fcf0e..da819e1e9 100644
--- a/opengts.cfg
+++ b/opengts.cfg
@@ -10,9 +10,6 @@
<entry key='database.user'>[USER]</entry>
<entry key='database.password'>[PASSWORD]</entry>
- <!-- Database refresh delay in seconds -->
- <entry key='database.refreshDelay'>300</entry>
-
<entry key='database.selectDevice'>
SELECT imeiNumber AS id, imeiNumber AS imei FROM Device WHERE imeiNumber &lt;&gt; '';
</entry>
diff --git a/setup/linux/traccar.cfg b/setup/linux/traccar.cfg
index 0e0349283..1cf16119b 100644
--- a/setup/linux/traccar.cfg
+++ b/setup/linux/traccar.cfg
@@ -11,9 +11,6 @@
<entry key='database.user'>sa</entry>
<entry key='database.password'></entry>
- <!-- Database refresh delay in seconds -->
- <entry key='database.refreshDelay'>300</entry>
-
<!-->
id - Long
imei - String
diff --git a/setup/macosx/traccar.cfg b/setup/macosx/traccar.cfg
index 0e0349283..1cf16119b 100644
--- a/setup/macosx/traccar.cfg
+++ b/setup/macosx/traccar.cfg
@@ -11,9 +11,6 @@
<entry key='database.user'>sa</entry>
<entry key='database.password'></entry>
- <!-- Database refresh delay in seconds -->
- <entry key='database.refreshDelay'>300</entry>
-
<!-->
id - Long
imei - String
diff --git a/setup/windows/traccar.cfg b/setup/windows/traccar.cfg
index 412a8d612..64c6fff1f 100644
--- a/setup/windows/traccar.cfg
+++ b/setup/windows/traccar.cfg
@@ -11,9 +11,6 @@
<entry key='database.user'>sa</entry>
<entry key='database.password'></entry>
- <!-- Database refresh delay in seconds -->
- <entry key='database.refreshDelay'>300</entry>
-
<!-->
id - Long
imei - String
diff --git a/src/org/traccar/model/DatabaseDataManager.java b/src/org/traccar/model/DatabaseDataManager.java
index ca5cb1372..3799c5461 100644
--- a/src/org/traccar/model/DatabaseDataManager.java
+++ b/src/org/traccar/model/DatabaseDataManager.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 - 2013 Anton Tananaev (anton.tananaev@gmail.com)
+ * Copyright 2012 - 2014 Anton Tananaev (anton.tananaev@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,11 +21,7 @@ import java.net.URL;
import java.net.URLClassLoader;
import java.sql.*;
import java.util.*;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import javax.xml.namespace.QName;
import javax.xml.xpath.XPath;
-import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.traccar.helper.AdvancedConnection;
@@ -70,14 +66,6 @@ public class DatabaseDataManager implements DataManager {
}
}
- // Refresh delay
- String refreshDelay = properties.getProperty("database.refreshDelay");
- if (refreshDelay != null) {
- devicesRefreshDelay = Long.valueOf(refreshDelay) * 1000;
- } else {
- devicesRefreshDelay = new Long(300) * 1000; // Magic number
- }
-
// Connect database
String url = properties.getProperty("database.url");
String user = properties.getProperty("database.user");
@@ -126,19 +114,15 @@ public class DatabaseDataManager implements DataManager {
* Devices cache
*/
private Map<String, Device> devices;
- private Calendar devicesLastUpdate;
- private Long devicesRefreshDelay;
@Override
public Device getDeviceByImei(String imei) throws SQLException {
- if ((devices == null) || (Calendar.getInstance().getTimeInMillis() - devicesLastUpdate.getTimeInMillis() > devicesRefreshDelay)) {
- List<Device> list = getDevices();
+ if (devices == null || !devices.containsKey(imei)) {
devices = new HashMap<String, Device>();
- for (Device device: list) {
+ for (Device device: getDevices()) {
devices.put(device.getImei(), device);
}
- devicesLastUpdate = Calendar.getInstance();
}
return devices.get(imei);