diff options
author | Valerii Vyshniak <valeravi@vi-soft.com.ua> | 2017-11-23 12:23:05 +0100 |
---|---|---|
committer | Valerii Vyshniak <valeravi@vi-soft.com.ua> | 2017-11-23 12:23:05 +0100 |
commit | 3efb847ba93f5983cb8235d7b14ae6b116417407 (patch) | |
tree | cd6564be739301124ab21f6ec57c056dfd847ec4 /test/org/traccar/TestIdentityManager.java | |
parent | d0a55d5a5c52e2f668e7c74952fca59019b0c405 (diff) | |
download | trackermap-server-3efb847ba93f5983cb8235d7b14ae6b116417407.tar.gz trackermap-server-3efb847ba93f5983cb8235d7b14ae6b116417407.tar.bz2 trackermap-server-3efb847ba93f5983cb8235d7b14ae6b116417407.zip |
Added possibility to test with different Device attributes
Diffstat (limited to 'test/org/traccar/TestIdentityManager.java')
-rw-r--r-- | test/org/traccar/TestIdentityManager.java | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/test/org/traccar/TestIdentityManager.java b/test/org/traccar/TestIdentityManager.java new file mode 100644 index 000000000..82bcf5c63 --- /dev/null +++ b/test/org/traccar/TestIdentityManager.java @@ -0,0 +1,122 @@ +package org.traccar; + +import org.traccar.database.*; +import org.traccar.model.*; +import java.util.concurrent.ConcurrentHashMap; + +import java.util.Map; + +public final class TestIdentityManager implements IdentityManager { + + private static Map<Long, Device> devicesById = new ConcurrentHashMap<>(); + + private static final long TEST_DEVICE_ID_START = 100; + private static final String TEST_DEVICE_DEFAULT_UNIQUE_ID_PREFIX = "555"; + private static long newDeviceId = TEST_DEVICE_ID_START; + + public TestIdentityManager() { + } + + public static Device createTestDevice() { + Device device = new Device(); + device.setId(newDeviceId); + device.setName("TestDevice" + newDeviceId); + device.setUniqueId(TEST_DEVICE_DEFAULT_UNIQUE_ID_PREFIX + newDeviceId); + devicesById.put(newDeviceId, device); + newDeviceId++; + return device; + } + + private Device createDefaultTestDevice() { + Device device = new Device(); + device.setId(1); + device.setName("test"); + device.setUniqueId("123456789012345"); + return device; + } + + @Override + public Device getById(long id) { + return id < TEST_DEVICE_ID_START ? createDefaultTestDevice() : devicesById.get(id); + } + + @Override + public Device getByUniqueId(String uniqueId) { + if (uniqueId.length() > TEST_DEVICE_DEFAULT_UNIQUE_ID_PREFIX.length() + && uniqueId.substring(0, TEST_DEVICE_DEFAULT_UNIQUE_ID_PREFIX.length()) + .equals(TEST_DEVICE_DEFAULT_UNIQUE_ID_PREFIX)) { + try { + long id = Long.parseLong( + uniqueId.substring(TEST_DEVICE_DEFAULT_UNIQUE_ID_PREFIX.length(), uniqueId.length())); + if (id >= TEST_DEVICE_ID_START) { + return devicesById.get(id); + } + } catch (NumberFormatException e) {} + } + return createDefaultTestDevice(); + } + + @Override + public Position getLastPosition(long deviceId) { + return null; + } + + @Override + public boolean isLatestPosition(Position position) { + return true; + } + + @Override + public boolean lookupAttributeBoolean( + long deviceId, String attributeName, boolean defaultValue, boolean lookupConfig) { + if (deviceId < TEST_DEVICE_ID_START) { + return defaultValue; + } + + Object result = devicesById.get(deviceId).getAttributes().get(attributeName); + if (result != null) { + return result instanceof String ? Boolean.parseBoolean((String) result) : (Boolean) result; + } + return defaultValue; + } + + @Override + public String lookupAttributeString( + long deviceId, String attributeName, String defaultValue, boolean lookupConfig) { + if (deviceId < TEST_DEVICE_ID_START) { + return "alarm,result"; + } + + Object result = devicesById.get(deviceId).getAttributes().get(attributeName); + return result != null ? (String) result : defaultValue; + } + + @Override + public int lookupAttributeInteger( + long deviceId, String attributeName, int defaultValue, boolean lookupConfig) { + if (deviceId < TEST_DEVICE_ID_START) { + return defaultValue; + } + + Object result = devicesById.get(deviceId).getAttributes().get(attributeName); + if (result != null) { + return result instanceof String ? Integer.parseInt((String) result) : ((Number) result).intValue(); + } + return defaultValue; + } + + @Override + public long lookupAttributeLong( + long deviceId, String attributeName, long defaultValue, boolean lookupConfig) { + if (deviceId < TEST_DEVICE_ID_START) { + return defaultValue; + } + + Object result = devicesById.get(deviceId).getAttributes().get(attributeName); + if (result != null) { + return result instanceof String ? Long.parseLong((String) result) : ((Number) result).longValue(); + } + return defaultValue; + } + +} |