From f08bb5adf425269a00e760c669bdeeadc8c7e112 Mon Sep 17 00:00:00 2001 From: Abyss777 Date: Wed, 15 Jun 2016 14:22:23 +0500 Subject: - Work only with cached devices from everywhere - Some optimization --- src/org/traccar/database/DataManager.java | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (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 a32d31d68..f5df1b84b 100644 --- a/src/org/traccar/database/DataManager.java +++ b/src/org/traccar/database/DataManager.java @@ -342,11 +342,34 @@ public class DataManager implements IdentityManager { .executeQuery(GroupPermission.class); } - public Collection getAllDevices() throws SQLException { + private Collection getAllDevices() throws SQLException { return QueryBuilder.create(dataSource, getQuery("database.selectDevicesAll")) .executeQuery(Device.class); } + public Collection getAllDevicesCached() { + boolean forceUpdate; + devicesLock.readLock().lock(); + try { + forceUpdate = devicesById.values().isEmpty(); + } finally { + devicesLock.readLock().unlock(); + } + + try { + updateDeviceCache(forceUpdate); + } catch (SQLException e) { + Log.warning(e); + } + + devicesLock.readLock().lock(); + try { + return devicesById.values(); + } finally { + devicesLock.readLock().unlock(); + } + } + public Collection getDevices(long userId) throws SQLException { Collection devices = new ArrayList<>(); for (long id : Context.getPermissionsManager().getDevicePermissions(userId)) { -- cgit v1.2.3