package com.nvarghese.beowulf.smf; import java.net.UnknownHostException; import java.util.concurrent.atomic.AtomicBoolean; import org.apache.commons.configuration.ConfigurationException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.code.morphia.Datastore; import com.nvarghese.beowulf.common.BeowulfCommonConfigManager; import com.nvarghese.beowulf.common.ds.DataStoreUtil; public class SmfManager { private SmfServer smfServer; private SmfSettings settings; private Datastore ds; private static AtomicBoolean initialized = new AtomicBoolean(false); private static volatile SmfManager instance; static Logger logger = LoggerFactory.getLogger(SmfManager.class); private SmfManager() { } public static void initialize(SmfServer smfServer, SmfSettings settings, boolean override) { synchronized (SmfManager.class) { if (instance == null || override == true) { instance = new SmfManager(); instance.smfServer = smfServer; instance.settings = settings; instance.initializeDatastore(); initialized.set(true); } } } private void initializeDatastore() { try { ds = DataStoreUtil.createOrGetDataStore(BeowulfCommonConfigManager.getDbUri(), BeowulfCommonConfigManager.getDbName()); } catch (ConfigurationException e) { logger.error("Failed to initialize data store. Reason: {}", e.getMessage(), e); } catch (UnknownHostException e) { logger.error("Failed to initialize data store. Reason: {}", e.getMessage(), e); } } public static SmfManager getInstance() { return instance; } public SmfServer getSmfServer() { return smfServer; } public SmfSettings getSettings() { return settings; } public static boolean isInitialized() { return initialized.get(); } public Datastore getDataStore() { return ds; } }