package com.hackerdude.apps.sqlide.dataaccess; import java.util.Hashtable; import com.hackerdude.apps.sqlide.xml.hostconfig.SqlideHostConfig; /** * Database Service. It Database Process creation. Eventually it will also * handle credentials and such. * */ public class DatabaseService { private static DatabaseService instance = null; private Hashtable serviceList = new Hashtable(); CredentialsProvider credentialsProvider; private DatabaseService() { } /** * Singleton access method. * @return The database service instance. */ public static synchronized DatabaseService getInstance() { if ( instance == null ) instance = new DatabaseService(); return instance; } /** * Creates or returns an existing database spec. It never constructs a * spec for the same instance twice. * * @param hostConfig * @return The specified database process. */ public synchronized DatabaseProcess getDatabaseProcess(SqlideHostConfig hostConfig) { String key = hostConfig.getFileName(); DatabaseProcess process = (DatabaseProcess)serviceList.get(key); if ( process == null ) { process = new DatabaseProcess(hostConfig, credentialsProvider); serviceList.put(key, process); } return process; } /** * Registers a credentials provider with the database service. * * @param provider The provider to register * @see CredentialsProvider */ public void setCredentialsProvider(CredentialsProvider provider) { this.credentialsProvider = provider; } }