From 2e769ee25bf7d134e4625cc5814661588adf7794 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Tue, 15 Feb 2022 23:17:31 -0800 Subject: Implement memory permissions --- .../java/org/traccar/storage/MemoryStorage.java | 36 ++++++++++++++++------ 1 file changed, 26 insertions(+), 10 deletions(-) (limited to 'src/main/java/org/traccar/storage') 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, Class>, Set>> permissions = new HashMap<>(); + @Override - public List getObjects(Class clazz, Request request) throws StorageException { + public List getObjects(Class clazz, Request request) { return null; } @Override - public long addObject(T entity, Request request) throws StorageException { + public long addObject(T entity, Request request) { return 0; } @Override - public void updateObject(T entity, Request request) throws StorageException { + public 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 getPermissions(Class ownerClass, Class propertyClass) throws StorageException { - return null; + private Set> 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 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())); } } -- cgit v1.2.3