1 package net.argius.stew;
6 * ConnectorMap provides a mapping to associate an Connector with its own ID.
8 public final class ConnectorMap extends LinkedHashMap<String, Connector> {
13 public ConnectorMap() {
18 * A constructor to create from a Properties.
22 public ConnectorMap(List<String> idList, Properties props) {
23 for (String id : idList) {
24 Properties p = new Properties();
25 copyPropertyById(id, "name", props, p);
26 copyPropertyById(id, "driver", props, p);
27 copyPropertyById(id, "classpath", props, p);
28 copyPropertyById(id, "url", props, p);
29 copyPropertyById(id, "user", props, p);
30 copyPropertyById(id, "password", props, p);
31 copyPropertyById(id, "password.class", props, p);
32 copyPropertyById(id, "readonly", props, p);
33 copyPropertyById(id, "rollback", props, p);
34 Connector connector = new Connector(id, p);
43 public ConnectorMap(ConnectorMap src) {
47 private static void copyPropertyById(String id, String key, Properties src, Properties dst) {
48 String fullKey = id + '.' + key;
49 String value = src.getProperty(fullKey, "");
50 dst.setProperty(key, value);
54 * Returns the connector specified by ID.
58 public Connector getConnector(String id) {
67 public void setConnector(String id, Connector connector) {
72 * Returns this map as Properties.
75 public Properties toProperties() {
76 Properties props = new Properties();
77 for (String id : keySet()) {
78 Connector connector = getConnector(id);
79 Password password = connector.getPassword();
80 props.setProperty(id + ".name", connector.getName());
81 props.setProperty(id + ".driver", connector.getDriver());
82 props.setProperty(id + ".classpath", connector.getClasspath());
83 props.setProperty(id + ".url", connector.getUrl());
84 props.setProperty(id + ".user", connector.getUser());
85 props.setProperty(id + ".password", password.getTransformedString());
86 props.setProperty(id + ".password.class", password.getClass().getName());
87 props.setProperty(id + ".readonly", Boolean.toString(connector.isReadOnly()));
88 props.setProperty(id + ".rollback", Boolean.toString(connector.usesAutoRollback()));