check for folder connector with same name
This commit is contained in:
parent
db30621608
commit
af9290cbca
|
@ -2,9 +2,7 @@ package org.gcube.data.access.storagehub.handlers.plugins;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
import javax.enterprise.inject.Default;
|
|
||||||
import javax.enterprise.inject.Instance;
|
import javax.enterprise.inject.Instance;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
@ -20,6 +18,7 @@ import org.gcube.common.storagehub.model.items.ExternalFolder;
|
||||||
import org.gcube.common.storagehub.model.items.Item;
|
import org.gcube.common.storagehub.model.items.Item;
|
||||||
import org.gcube.common.storagehub.model.plugins.FolderManager;
|
import org.gcube.common.storagehub.model.plugins.FolderManager;
|
||||||
import org.gcube.common.storagehub.model.plugins.FolderManagerConnector;
|
import org.gcube.common.storagehub.model.plugins.FolderManagerConnector;
|
||||||
|
import org.gcube.common.storagehub.model.storages.StorageBackend;
|
||||||
import org.gcube.data.access.storagehub.handlers.items.Node2ItemConverter;
|
import org.gcube.data.access.storagehub.handlers.items.Node2ItemConverter;
|
||||||
import org.gcube.data.access.storagehub.storage.backend.impl.GcubeFolderManager;
|
import org.gcube.data.access.storagehub.storage.backend.impl.GcubeFolderManager;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
@ -27,37 +26,44 @@ import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
public class FolderPluginHandler {
|
public class FolderPluginHandler {
|
||||||
|
|
||||||
private static Logger log = LoggerFactory.getLogger(FolderPluginHandler.class);
|
private static Logger log = LoggerFactory.getLogger(FolderPluginHandler.class);
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
Node2ItemConverter node2Item;
|
Node2ItemConverter node2Item;
|
||||||
|
|
||||||
private GcubeFolderManager defaultManager = new GcubeFolderManager();
|
private GcubeFolderManager defaultManager = new GcubeFolderManager();
|
||||||
|
|
||||||
public FolderManager getDefault() {
|
public FolderManager getDefault() {
|
||||||
return defaultManager;
|
return defaultManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
Instance<FolderManagerConnector> connectors;
|
Instance<FolderManagerConnector> connectors;
|
||||||
|
|
||||||
private Map<String, FolderManagerConnector> connectorsMap;
|
private Map<String, FolderManagerConnector> connectorsMap;
|
||||||
|
|
||||||
|
private Map<String, StorageBackend> storagesMap;
|
||||||
|
|
||||||
FolderPluginHandler(){
|
FolderPluginHandler(){
|
||||||
if (connectors !=null)
|
if (connectors !=null)
|
||||||
connectorsMap = connectors.stream().collect(Collectors.toMap(FolderManagerConnector::getName, e -> e ));
|
for (FolderManagerConnector connector : connectors) {
|
||||||
|
if (connectorsMap.containsKey(connector.getName()))
|
||||||
|
throw new RuntimeException("multiple connectors with the same name found");
|
||||||
|
connectorsMap.put(connector.getName(), connector);
|
||||||
|
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
log.info("connectors are null");
|
log.info("connectors are null");
|
||||||
connectorsMap = Collections.emptyMap();
|
connectorsMap = Collections.emptyMap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public FolderManagerConnector getConnector(String name) throws PluginNotFoundException {
|
public FolderManagerConnector getConnector(String name) throws PluginNotFoundException {
|
||||||
if (!connectorsMap.containsKey(name)) throw new PluginNotFoundException("plugin "+name+" not found");
|
if (!connectorsMap.containsKey(name)) throw new PluginNotFoundException("plugin "+name+" not found");
|
||||||
return connectorsMap.get(name);
|
return connectorsMap.get(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
public FolderManager getFolderManager(Item item) throws PluginInitializationException, PluginNotFoundException, RepositoryException, BackendGenericError{
|
public FolderManager getFolderManager(Item item) throws PluginInitializationException, PluginNotFoundException, RepositoryException, BackendGenericError{
|
||||||
if (!item.isExternalManaged())
|
if (!item.isExternalManaged())
|
||||||
return defaultManager;
|
return defaultManager;
|
||||||
|
@ -67,7 +73,7 @@ public class FolderPluginHandler {
|
||||||
String parentId = item.getParentId();
|
String parentId = item.getParentId();
|
||||||
Node node = session.getNodeByIdentifier(parentId);
|
Node node = session.getNodeByIdentifier(parentId);
|
||||||
parent = node2Item.getItem(node, Excludes.ALL);
|
parent = node2Item.getItem(node, Excludes.ALL);
|
||||||
|
|
||||||
if (parent !=null && parent instanceof ExternalFolder) {
|
if (parent !=null && parent instanceof ExternalFolder) {
|
||||||
ExternalFolder extParent = (ExternalFolder) parent;
|
ExternalFolder extParent = (ExternalFolder) parent;
|
||||||
String plugin = extParent.getManagedBy();
|
String plugin = extParent.getManagedBy();
|
||||||
|
|
Loading…
Reference in New Issue