Javaでコマンドラインから読み込もうとしています。
コマンドラインからこれらのパラメータを渡していると仮定します-
TABLE1 TABLE2 TABLE3
次に、コマンドプロンプトから読み取った後、tableNames
リストには上記の3つのテーブル名がすべて含まれます。
private static List<String> tableNames= new ArrayList<String>();
次に、これをループして、プロパティファイルから対応する値をロードすることにより、tableNames
すべてをに入れる必要があります。ConcurrentHashMap
だから私はそれをこのようにやっています。
private static ConcurrentHashMap< String,
ConcurrentHashMap< String, String >> tableList = new ConcurrentHashMap<>();
private static ConcurrentHashMap<String,
String > databaseDetails = new ConcurrentHashMap<>();
prop.load(MainTest.class.getClassLoader().getResourceAsStream("config.properties"));
for (String arg : tableNames) {
String url = (String) prop.get(arg + ".url");
String user = (String) prop.get(arg + ".user");
String password = (String) prop.get(arg + ".password");
String driver = (String) prop.get(arg + ".driver");
String suffix = (String) prop.get(arg + ".suffix");
String sql = (String) prop.get(arg + ".sql");
databaseDetails.put("URL",url);
databaseDetails.put("USER",user);
databaseDetails.put("PASSWORD",password);
databaseDetails.put("DRIVER",driver);
databaseDetails.put("SUFFIX",suffix);
databaseDetails.put("SQL",sql);
tableList.put(arg,databaseDetails);
}
これがマップのマップに値を配置する正しい方法であるかどうかわかりませんか?または、これを少し改善できますか?