81 lines
2.7 KiB
Java
81 lines
2.7 KiB
Java
|
package org.gcube.vremanagement.contextmanager.handlers.impl;
|
||
|
|
||
|
import java.util.ArrayList;
|
||
|
import java.util.Collections;
|
||
|
import java.util.HashMap;
|
||
|
import java.util.List;
|
||
|
import java.util.Map;
|
||
|
|
||
|
import javax.enterprise.inject.Default;
|
||
|
import javax.inject.Singleton;
|
||
|
|
||
|
import org.gcube.vremanagement.contextmanager.exceptions.ContextAlreadyExistsException;
|
||
|
import org.gcube.vremanagement.contextmanager.handlers.ContextContainer;
|
||
|
import org.gcube.vremanagement.contextmanager.model.exceptions.InvalidContextException;
|
||
|
import org.gcube.vremanagement.contextmanager.model.types.Context;
|
||
|
|
||
|
@Singleton
|
||
|
@Default
|
||
|
public class ContextContainerImpl implements ContextContainer {
|
||
|
|
||
|
|
||
|
private Map<String, List<String>> resourceMap = new HashMap<>();
|
||
|
|
||
|
private static ContextTree contextTree = new ContextTree() {
|
||
|
|
||
|
@Override
|
||
|
public void init() {
|
||
|
|
||
|
}
|
||
|
};
|
||
|
|
||
|
public List<String> getAvailableContexts() {
|
||
|
return contextTree.getContexts();
|
||
|
}
|
||
|
|
||
|
public void addContext(Context toAdd) throws InvalidContextException, ContextAlreadyExistsException{
|
||
|
contextTree.createItem(toAdd==null?null:toAdd.getId(), toAdd);
|
||
|
}
|
||
|
|
||
|
public void removeContext(String contextId) throws InvalidContextException {
|
||
|
TreeItem item = contextTree.removeItem(contextId);
|
||
|
if (item==null) throw new InvalidContextException("context with id "+contextId+" not found");
|
||
|
resourceMap.remove(item.getContext().getId());
|
||
|
}
|
||
|
|
||
|
public Context getContextById(String id) throws InvalidContextException {
|
||
|
Context context = contextTree.getContext(id);
|
||
|
if (context==null) throw new InvalidContextException("context with id "+id+" not found");
|
||
|
return context;
|
||
|
}
|
||
|
|
||
|
public synchronized void addResource(String contextId, String resourceId) throws InvalidContextException {
|
||
|
Context context = contextTree.getContext(contextId);
|
||
|
if (context==null) throw new InvalidContextException("context with id "+contextId+" not found");
|
||
|
|
||
|
if (!resourceMap.containsKey(contextId))
|
||
|
resourceMap.put(contextId, new ArrayList<>());
|
||
|
resourceMap.get(contextId).add(resourceId);
|
||
|
|
||
|
}
|
||
|
|
||
|
public synchronized void removeResource(String contextId, String resourceId) throws InvalidContextException {
|
||
|
Context context = contextTree.getContext(contextId);
|
||
|
if (context==null) throw new InvalidContextException("context with id "+contextId+" not found");
|
||
|
|
||
|
if (resourceMap.containsKey(contextId))
|
||
|
resourceMap.get(contextId).remove(resourceId);
|
||
|
}
|
||
|
|
||
|
public List<String> getResources(String contextId) throws InvalidContextException {
|
||
|
Context context = contextTree.getContext(contextId);
|
||
|
if (context==null) throw new InvalidContextException("context with id "+contextId+" not found");
|
||
|
if (resourceMap.containsKey(contextId))
|
||
|
return resourceMap.get(contextId);
|
||
|
else return Collections.emptyList();
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
|