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) { return null; } @Override public long addObject(T entity, Request request) { return 0; } @Override public void updateObject(T entity, Request request) { } @Override public void removeObject(Class clazz, Request request) { } private Set> getPermissionsSet(Class ownerClass, Class propertyClass) { return permissions.computeIfAbsent(new Pair<>(ownerClass, propertyClass), k -> new HashSet<>()); } @Override 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 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())); } }