aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/traccar/storage/query/Columns.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/traccar/storage/query/Columns.java')
-rw-r--r--src/main/java/org/traccar/storage/query/Columns.java22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/main/java/org/traccar/storage/query/Columns.java b/src/main/java/org/traccar/storage/query/Columns.java
index 1a13665ee..196d2281c 100644
--- a/src/main/java/org/traccar/storage/query/Columns.java
+++ b/src/main/java/org/traccar/storage/query/Columns.java
@@ -1,5 +1,6 @@
package org.traccar.storage.query;
+import org.traccar.storage.QueryExtended;
import org.traccar.storage.QueryIgnore;
import java.lang.reflect.Method;
@@ -11,14 +12,17 @@ import java.util.stream.Collectors;
public abstract class Columns {
- public abstract List<String> getColumns(Class<?> clazz);
+ public abstract List<String> getColumns(Class<?> clazz, String type);
- protected List<String> getAllColumns(Class<?> clazz) {
+ protected List<String> getAllColumns(Class<?> clazz, String type) {
List<String> columns = new LinkedList<>();
Method[] methods = clazz.getMethods();
for (Method method : methods) {
- if (method.getName().startsWith("set") && method.getParameterTypes().length == 1
- && !method.isAnnotationPresent(QueryIgnore.class)) {
+ int parameterCount = type.equals("set") ? 1 : 0;
+ if (method.getName().startsWith(type) && method.getParameterTypes().length == parameterCount
+ && !method.isAnnotationPresent(QueryIgnore.class)
+ && !method.isAnnotationPresent(QueryExtended.class)
+ && !method.getName().equals("getClass")) {
columns.add(method.getName().substring(3).toLowerCase());
}
}
@@ -27,8 +31,8 @@ public abstract class Columns {
public static class All extends Columns {
@Override
- public List<String> getColumns(Class<?> clazz) {
- return getAllColumns(clazz);
+ public List<String> getColumns(Class<?> clazz, String type) {
+ return getAllColumns(clazz, type);
}
}
@@ -40,7 +44,7 @@ public abstract class Columns {
}
@Override
- public List<String> getColumns(Class<?> clazz) {
+ public List<String> getColumns(Class<?> clazz, String type) {
return columns;
}
}
@@ -53,8 +57,8 @@ public abstract class Columns {
}
@Override
- public List<String> getColumns(Class<?> clazz) {
- return getAllColumns(clazz).stream()
+ public List<String> getColumns(Class<?> clazz, String type) {
+ return getAllColumns(clazz, type).stream()
.filter(column -> !columns.contains(column))
.collect(Collectors.toList());
}