package org.gcube.gcat.persistence.ckan; import java.util.HashMap; import java.util.Map; import org.gcube.common.authorization.utils.manager.SecretManager; import org.gcube.gcat.api.configuration.CatalogueConfiguration; import org.gcube.gcat.configuration.GCoreISConfigurationProxy; /** * @author Luca Frosini (ISTI - CNR) */ public class CatalogueConfigurationFactory { private static final Map catalogueConfigurations; static { catalogueConfigurations = new HashMap<>(); } protected static CatalogueConfiguration load(String context) { GCoreISConfigurationProxy gCoreISConfigurationProxy = new GCoreISConfigurationProxy(context); return gCoreISConfigurationProxy.getCatalogueConfiguration(); } public synchronized static CatalogueConfiguration getInstance() { String context = SecretManager.instance.get().getContext(); CatalogueConfiguration catalogueConfiguration = catalogueConfigurations.get(context); if(catalogueConfiguration == null) { catalogueConfiguration = load(context); catalogueConfigurations.put(context, catalogueConfiguration); } return catalogueConfiguration; } public synchronized static void renew() { String context = SecretManager.instance.get().getContext(); catalogueConfigurations.remove(context); CatalogueConfiguration catalogueConfiguration = load(context); catalogueConfigurations.put(context, catalogueConfiguration); } public synchronized static void purge() { // Remove the resource from IS String context = SecretManager.instance.get().getContext(); catalogueConfigurations.remove(context); GCoreISConfigurationProxy gCoreISConfigurationProxy = new GCoreISConfigurationProxy(context); gCoreISConfigurationProxy.delete(); } public synchronized static CatalogueConfiguration createOrUpdate(CatalogueConfiguration catalogueConfiguration) { String context = SecretManager.instance.get().getContext(); catalogueConfigurations.remove(context); GCoreISConfigurationProxy gCoreISConfigurationProxy = new GCoreISConfigurationProxy(context, catalogueConfiguration); catalogueConfiguration = gCoreISConfigurationProxy.createOrUpdate(); catalogueConfigurations.put(context, catalogueConfiguration); return catalogueConfiguration; } }