2015-10-12 18:33:47 +02:00
|
|
|
/**
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
package org.gcube.vremanagement.executor.persistence;
|
|
|
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
import java.util.Map;
|
|
|
|
|
2016-02-09 15:20:26 +01:00
|
|
|
import org.gcube.vremanagement.executor.SmartExecutorInitializator;
|
2017-02-01 17:01:15 +01:00
|
|
|
import org.gcube.vremanagement.executor.persistence.orientdb.OrientDBPersistenceConnector;
|
2015-10-12 18:33:47 +02:00
|
|
|
import org.slf4j.Logger;
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
|
|
|
/**
|
2017-02-01 17:01:15 +01:00
|
|
|
* @author Luca Frosini (ISTI - CNR)
|
2015-10-12 18:33:47 +02:00
|
|
|
*
|
|
|
|
*/
|
|
|
|
public abstract class SmartExecutorPersistenceFactory {
|
|
|
|
|
|
|
|
private static final Logger logger = LoggerFactory.getLogger(SmartExecutorPersistenceFactory.class);
|
|
|
|
|
|
|
|
private static Map<String, SmartExecutorPersistenceConnector> persistenceConnectors;
|
|
|
|
|
|
|
|
static {
|
|
|
|
persistenceConnectors = new HashMap<String, SmartExecutorPersistenceConnector>();
|
|
|
|
}
|
|
|
|
|
2017-05-25 14:38:46 +02:00
|
|
|
private static SmartExecutorPersistenceConnector getPersistenceConnector(String scope) throws Exception {
|
2015-10-12 18:33:47 +02:00
|
|
|
if(scope==null){
|
|
|
|
String error = "No Scope available.";
|
|
|
|
logger.error(error);
|
|
|
|
throw new RuntimeException(error);
|
|
|
|
}
|
|
|
|
|
|
|
|
logger.trace("Retrieving {} for scope {}",
|
|
|
|
SmartExecutorPersistenceConnector.class.getSimpleName(), scope);
|
|
|
|
|
2017-05-25 14:38:46 +02:00
|
|
|
SmartExecutorPersistenceConnector persistence = persistenceConnectors.get(scope);
|
2015-10-12 18:33:47 +02:00
|
|
|
|
|
|
|
if(persistence==null){
|
|
|
|
logger.trace("Retrieving {} for scope {} not found on internal {}. Intializing it.",
|
2016-09-22 11:31:05 +02:00
|
|
|
SmartExecutorPersistenceConnector.class.getSimpleName(),
|
|
|
|
scope, Map.class.getSimpleName());
|
2015-10-12 18:33:47 +02:00
|
|
|
|
2017-02-01 17:01:15 +01:00
|
|
|
String className = OrientDBPersistenceConnector.class.getSimpleName();
|
2015-10-12 18:33:47 +02:00
|
|
|
SmartExecutorPersistenceConfiguration configuration =
|
2016-02-09 15:20:26 +01:00
|
|
|
new SmartExecutorPersistenceConfiguration(className);
|
|
|
|
|
2017-05-25 14:38:46 +02:00
|
|
|
persistence = new OrientDBPersistenceConnector(configuration);
|
2017-02-01 17:01:15 +01:00
|
|
|
persistenceConnectors.put(SmartExecutorInitializator.getCurrentScope(),
|
2016-09-22 11:31:05 +02:00
|
|
|
persistence);
|
2015-10-12 18:33:47 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
return persistence;
|
|
|
|
}
|
2015-11-30 12:25:05 +01:00
|
|
|
|
2017-05-25 14:38:46 +02:00
|
|
|
/**
|
|
|
|
* @return the persistenceConnector
|
|
|
|
*/
|
|
|
|
public static synchronized SmartExecutorPersistenceConnector getPersistenceConnector() throws Exception {
|
|
|
|
String scope = SmartExecutorInitializator.getCurrentScope();
|
|
|
|
return getPersistenceConnector(scope);
|
|
|
|
}
|
|
|
|
|
2015-11-30 12:25:05 +01:00
|
|
|
public static synchronized void closePersistenceConnector() throws Exception {
|
2017-02-01 17:01:15 +01:00
|
|
|
String scope = SmartExecutorInitializator.getCurrentScope();
|
2016-09-22 11:31:05 +02:00
|
|
|
SmartExecutorPersistenceConnector persistence =
|
|
|
|
getPersistenceConnector(scope);
|
2015-11-30 12:25:05 +01:00
|
|
|
if(persistence!=null){
|
|
|
|
persistence.close();
|
2016-02-16 11:49:49 +01:00
|
|
|
persistenceConnectors.remove(scope);
|
2015-11-30 12:25:05 +01:00
|
|
|
}
|
|
|
|
}
|
2015-10-12 18:33:47 +02:00
|
|
|
|
|
|
|
}
|