aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/traccar/config/ConfigKey.java
diff options
context:
space:
mode:
authorAnton Tananaev <anton@traccar.org>2022-06-18 10:00:52 -0700
committerAnton Tananaev <anton@traccar.org>2022-06-18 10:00:52 -0700
commitc248ed30047a0525bf792730a0fbd4de0c89ad8e (patch)
tree750adc33654a4f8947e09528cfb85534cfceb8f1 /src/main/java/org/traccar/config/ConfigKey.java
parent68826cdc767bae6b8b39e88667372f0c6161efa9 (diff)
downloadtrackermap-server-c248ed30047a0525bf792730a0fbd4de0c89ad8e.tar.gz
trackermap-server-c248ed30047a0525bf792730a0fbd4de0c89ad8e.tar.bz2
trackermap-server-c248ed30047a0525bf792730a0fbd4de0c89ad8e.zip
Refactor attribute lookup
Diffstat (limited to 'src/main/java/org/traccar/config/ConfigKey.java')
-rw-r--r--src/main/java/org/traccar/config/ConfigKey.java73
1 files changed, 61 insertions, 12 deletions
diff --git a/src/main/java/org/traccar/config/ConfigKey.java b/src/main/java/org/traccar/config/ConfigKey.java
index c046a46a5..b8151392c 100644
--- a/src/main/java/org/traccar/config/ConfigKey.java
+++ b/src/main/java/org/traccar/config/ConfigKey.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2019 - 2020 Anton Tananaev (anton@traccar.org)
+ * Copyright 2019 - 2022 Anton Tananaev (anton@traccar.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -15,30 +15,34 @@
*/
package org.traccar.config;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
-public class ConfigKey<T> {
+public abstract class ConfigKey<T> {
private final String key;
- private final List<KeyType> types;
+ private final Set<KeyType> types = new HashSet<>();
+ private final Class<T> valueClass;
private final T defaultValue;
- ConfigKey(String key, List<KeyType> types) {
- this(key, types, null);
- }
-
- ConfigKey(String key, List<KeyType> types, T defaultValue) {
+ ConfigKey(String key, List<KeyType> types, Class<T> valueClass, T defaultValue) {
this.key = key;
- this.types = types;
+ this.types.addAll(types);
+ this.valueClass = valueClass;
this.defaultValue = defaultValue;
}
- String getKey() {
+ public String getKey() {
return key;
}
- public List<KeyType> getTypes() {
- return types;
+ public boolean hasType(KeyType type) {
+ return types.contains(type);
+ }
+
+ public Class<T> getValueClass() {
+ return valueClass;
}
public T getDefaultValue() {
@@ -46,3 +50,48 @@ public class ConfigKey<T> {
}
}
+
+class StringConfigKey extends ConfigKey<String> {
+ StringConfigKey(String key, List<KeyType> types) {
+ super(key, types, String.class, null);
+ }
+ StringConfigKey(String key, List<KeyType> types, String defaultValue) {
+ super(key, types, String.class, defaultValue);
+ }
+}
+
+class BooleanConfigKey extends ConfigKey<Boolean> {
+ BooleanConfigKey(String key, List<KeyType> types) {
+ super(key, types, Boolean.class, null);
+ }
+ BooleanConfigKey(String key, List<KeyType> types, Boolean defaultValue) {
+ super(key, types, Boolean.class, defaultValue);
+ }
+}
+
+class IntegerConfigKey extends ConfigKey<Integer> {
+ IntegerConfigKey(String key, List<KeyType> types) {
+ super(key, types, Integer.class, null);
+ }
+ IntegerConfigKey(String key, List<KeyType> types, Integer defaultValue) {
+ super(key, types, Integer.class, defaultValue);
+ }
+}
+
+class LongConfigKey extends ConfigKey<Long> {
+ LongConfigKey(String key, List<KeyType> types) {
+ super(key, types, Long.class, null);
+ }
+ LongConfigKey(String key, List<KeyType> types, Long defaultValue) {
+ super(key, types, Long.class, defaultValue);
+ }
+}
+
+class DoubleConfigKey extends ConfigKey<Double> {
+ DoubleConfigKey(String key, List<KeyType> types) {
+ super(key, types, Double.class, null);
+ }
+ DoubleConfigKey(String key, List<KeyType> types, Double defaultValue) {
+ super(key, types, Double.class, defaultValue);
+ }
+}