diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2022-02-15 23:17:31 -0800 |
---|---|---|
committer | Anton Tananaev <anton.tananaev@gmail.com> | 2022-02-15 23:17:31 -0800 |
commit | 2e769ee25bf7d134e4625cc5814661588adf7794 (patch) | |
tree | dfb541ff84c848dc32d4e6a7c49973784c3b698c /src/main/java/org/traccar/storage | |
parent | dd8dbbf6fca2c61726431a8552640f2c1499b4a2 (diff) | |
download | trackermap-server-2e769ee25bf7d134e4625cc5814661588adf7794.tar.gz trackermap-server-2e769ee25bf7d134e4625cc5814661588adf7794.tar.bz2 trackermap-server-2e769ee25bf7d134e4625cc5814661588adf7794.zip |
Implement memory permissions
Diffstat (limited to 'src/main/java/org/traccar/storage')
-rw-r--r-- | src/main/java/org/traccar/storage/MemoryStorage.java | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/src/main/java/org/traccar/storage/MemoryStorage.java b/src/main/java/org/traccar/storage/MemoryStorage.java index 0a2e5a81f..9cfe30a2b 100644 --- a/src/main/java/org/traccar/storage/MemoryStorage.java +++ b/src/main/java/org/traccar/storage/MemoryStorage.java @@ -1,43 +1,59 @@ package org.traccar.storage; +import org.traccar.model.Pair; import org.traccar.model.Permission; import org.traccar.storage.query.Request; +import java.util.HashMap; +import java.util.HashSet; import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; public class MemoryStorage extends Storage { + private final Map<Pair<Class<?>, Class<?>>, Set<Pair<Long, Long>>> permissions = new HashMap<>(); + @Override - public <T> List<T> getObjects(Class<T> clazz, Request request) throws StorageException { + public <T> List<T> getObjects(Class<T> clazz, Request request) { return null; } @Override - public <T> long addObject(T entity, Request request) throws StorageException { + public <T> long addObject(T entity, Request request) { return 0; } @Override - public <T> void updateObject(T entity, Request request) throws StorageException { + public <T> void updateObject(T entity, Request request) { } @Override - public void removeObject(Class<?> clazz, Request request) throws StorageException { + public void removeObject(Class<?> clazz, Request request) { } - @Override - public List<Permission> getPermissions(Class<?> ownerClass, Class<?> propertyClass) throws StorageException { - return null; + private Set<Pair<Long, Long>> getPermissionsSet(Class<?> ownerClass, Class<?> propertyClass) { + return permissions.computeIfAbsent(new Pair<>(ownerClass, propertyClass), k -> new HashSet<>()); } @Override - public void addPermission(Permission permission) throws StorageException { - + public List<Permission> getPermissions(Class<?> ownerClass, Class<?> propertyClass) { + return getPermissionsSet(ownerClass, propertyClass).stream() + .map(pair -> new Permission(ownerClass, pair.getFirst(), propertyClass, pair.getSecond())) + .collect(Collectors.toList()); } @Override - public void removePermission(Permission permission) throws StorageException { + public void addPermission(Permission permission) { + getPermissionsSet(permission.getOwnerClass(), permission.getPropertyClass()) + .add(new Pair<>(permission.getOwnerId(), permission.getPropertyId())); + } + @Override + public void removePermission(Permission permission) { + getPermissionsSet(permission.getOwnerClass(), permission.getPropertyClass()) + .remove(new Pair<>(permission.getOwnerId(), permission.getPropertyId())); } } |