Improve ConfigUtils.addPhrases and ConfigUtils.createSqlConnection methods

This commit is contained in:
Roman Zhuravlev 2023-07-24 02:11:46 +05:00
parent 3c6c655ff2
commit 06388d4f72

View file

@ -2,27 +2,41 @@ package org.zhdev.util;
import org.zhdev.config.ConfigSection; import org.zhdev.config.ConfigSection;
import org.zhdev.language.Language; import org.zhdev.language.Language;
import org.zhdev.sql.*; import org.zhdev.sql.H2SqlConnection;
import org.zhdev.sql.MySqlConnection;
import org.zhdev.sql.SqlConnection;
import org.zhdev.sql.SqliteConnection;
import java.io.File; import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.function.Function;
public class ConfigUtils { public class ConfigUtils {
public static void addPhrases(Language language, ConfigSection config) { public static void addPhrases(Language language, ConfigSection config, Function<String, String> function) {
for (String i : config) { for (String i : config) {
ConfigSection section = config.getSection(i); ConfigSection section = config.getSection(i);
if (section == null) continue; if (section == null) continue;
for (String j : section) { for (String j : section) {
language.addPhrase(i, j, section.getString(j)); String phrase = section.getString(j);
if (phrase == null) {
phrase = String.join("\n", CollectionUtils.mapToString(section.getList(j, Collections.emptyList()), ArrayList::new));
}
language.addPhrase(i, j, function.apply(phrase));
} }
} }
} }
public static void addPhrases(Language language, ConfigSection config) {
addPhrases(language, config, s -> s);
}
public static SqlConnection createSqlConnection(ConfigSection config, String pathPrefix) { public static SqlConnection createSqlConnection(ConfigSection config, String pathPrefix) {
String type = config.getString("type", "none").toLowerCase(); String type = config.getString("type", "none").toLowerCase();
SqlConnection connection; SqlConnection connection;
switch (type) { switch (type) {
case "h2": { case "h2": {
String path = config.getString("path"); String path = config.getString("path", "storage.h2");
String username = config.getString("username"); String username = config.getString("username");
String password = config.getString("password"); String password = config.getString("password");
connection = new H2SqlConnection(File.separatorChar + path, username, password); connection = new H2SqlConnection(File.separatorChar + path, username, password);
@ -39,7 +53,7 @@ public class ConfigUtils {
break; break;
} }
case "sqlite": { case "sqlite": {
String path = config.getString("path"); String path = config.getString("path", "database.db");
connection = new SqliteConnection(pathPrefix + File.separatorChar + path); connection = new SqliteConnection(pathPrefix + File.separatorChar + path);
break; break;
} }