OSDN Git Service

[#34405] Define and use default table types not only getTableTypes (DatabaseInfoTree)
[stew/Stew4.git] / src / net / argius / stew / ConnectorMap.java
1 package net.argius.stew;
2
3 import java.util.*;
4
5 /**
6  * ConnectorMap provides a mapping to associate an Connector with its own ID. 
7  */
8 public final class ConnectorMap extends LinkedHashMap<String, Connector> {
9
10     /**
11      * A constructor.
12      */
13     public ConnectorMap() {
14         // empty
15     }
16
17     /**
18      * A constructor to create from a Properties.
19      * @param idList
20      * @param props
21      */
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);
35             put(id, connector);
36         }
37     }
38
39     /**
40      * A copy constructor.
41      * @param src
42      */
43     public ConnectorMap(ConnectorMap src) {
44         putAll(src);
45     }
46
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);
51     }
52
53     /**
54      * Returns the connector specified by ID.
55      * @param id
56      * @return
57      */
58     public Connector getConnector(String id) {
59         return get(id);
60     }
61
62     /**
63      * Sets a connector.
64      * @param id
65      * @param connector
66      */
67     public void setConnector(String id, Connector connector) {
68         put(id, connector);
69     }
70
71     /**
72      * Returns this map as Properties.
73      * @return
74      */
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()));
89         }
90         return props;
91     }
92
93 }