package com.hackerdude.apps.sqlide.plugins.usrmgr; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Properties; /** * This is a command factory that maintains a list of usermanager commands * for different supported drivers. */ public class UsrMgmtCommandFactory { private static final String PROPERTIES_SUFFIX = ".properties"; private static final String COMMANDS_FILE_PREFIX = "usermanager.commands."; private static final String PROP_SUPPORTED_DRIVERS = "usermanager.supporteddrivers.properties"; private static final HashMap USERMANAGER_COMMANDS = new HashMap(); private static final Properties PROPS_SUPPORTED_DRIVERS = new Properties(); static { try { InputStream stream = UsrMgmtCommandFactory.class.getResourceAsStream(PROP_SUPPORTED_DRIVERS); PROPS_SUPPORTED_DRIVERS.load(stream); } catch (IOException ex) { } } public static synchronized Properties getCommandsFor(String supportedDriver) { Properties props = get(supportedDriver); if ( props == null ) { props = read(supportedDriver); } return props; } private static synchronized Properties get(String supportedDriver) { Properties result = (Properties)USERMANAGER_COMMANDS.get(supportedDriver); return result; } private static synchronized Properties read(String supportedDriver) { Properties result = new Properties(); USERMANAGER_COMMANDS.put(supportedDriver,result); try { InputStream stream = UsrMgmtCommandFactory.class.getResourceAsStream(COMMANDS_FILE_PREFIX + supportedDriver + PROPERTIES_SUFFIX); if (stream != null) { result.load(stream); } } catch (IOException ex) { } return result; } public static String getSupportedDriver(String driverClassName) { return PROPS_SUPPORTED_DRIVERS.getProperty(driverClassName); } }