package tr.com.srdc.mdr.core.store; import tr.com.srdc.mdr.core.model.MDRException; import tr.com.srdc.triplestore.JenaStore; import tr.com.srdc.triplestore.TripleStoreProvider.TripleStoreType; import tr.com.srdc.triplestore.tdb.TDBStore; public class MDRDatabaseManager { private static MDRDatabaseManager instance; private static final String MDRJenaStoreName = "mdr"; private MDRDatabase mdrDatabase; private MDRDatabaseManager() { } public static MDRDatabaseManager getInstance() { if (instance == null) { instance = new MDRDatabaseManager(); } return instance; } /** * Create a {@link MDRDatabase} which is backed by a {@link TDBStore} by * default whose name is "mdr". * * @return * @throws MDRException */ public MDRDatabase createMDRDatabase() throws MDRException { return createMDRDatabase(TripleStoreType.JenaTDB, MDRJenaStoreName); } /** * Create a {@link MDRDatabase} which is backed by a {@link JenaStore} with * given storeType and storeName. * * @param storeType * @param storeName * @return * @throws MDRException */ public MDRDatabase createMDRDatabase(TripleStoreType storeType, String storeName) throws MDRException { if (mdrDatabase == null) { mdrDatabase = new MDRDatabase(storeType, storeName); } return mdrDatabase; } /** * Get the default {@link MDRDatabase} which is backed by a {@link TDBStore} * whose name is "mdr". * * @return * @throws MDRException */ public MDRDatabase getMDRDatabase() throws MDRException { if (mdrDatabase == null) { throw new MDRException( "Default MDRDatabase has not been created yet."); } return mdrDatabase; } public MDRDatabase getMDRDatabase(String name) { return mdrDatabase; } public void removeMDRDatabase() throws MDRException { mdrDatabase.remove(); mdrDatabase = null; } }