Skip to content

Commit acc2ef3

Browse files
authored
Merge pull request #3 from x7airworker/master
Use the new SQLDriverFactory
2 parents 0982c05 + 00c02f9 commit acc2ef3

File tree

2 files changed

+29
-27
lines changed

2 files changed

+29
-27
lines changed

src/main/java/org/javawebstack/framework/WebApplication.java

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,7 @@
2626
import org.javawebstack.injector.SimpleInjector;
2727
import org.javawebstack.orm.Repo;
2828
import org.javawebstack.orm.exception.ORMConfigurationException;
29-
import org.javawebstack.orm.wrapper.MySQL;
30-
import org.javawebstack.orm.wrapper.SQL;
31-
import org.javawebstack.orm.wrapper.SQLite;
29+
import org.javawebstack.orm.wrapper.*;
3230
import org.javawebstack.scheduler.job.JobQueue;
3331
import org.javawebstack.scheduler.job.local.LocalJobQueue;
3432
import org.javawebstack.scheduler.job.redis.RedisJobQueue;
@@ -48,7 +46,7 @@
4846
public abstract class WebApplication {
4947

5048
private Logger logger = Logger.getLogger("WebApp");
51-
private final SQL sql;
49+
private SQL sql;
5250
private final HTTPServer server;
5351
private final Injector injector;
5452
private final Faker faker = new Faker();
@@ -61,6 +59,7 @@ public abstract class WebApplication {
6159
private final I18N translation = new I18N();
6260
private JobQueue jobQueue;
6361
private Schedule schedule;
62+
private SQLDriverFactory sqlDriverFactory;
6463

6564
public WebApplication() {
6665
injector = new SimpleInjector();
@@ -81,29 +80,28 @@ public WebApplication() {
8180
injector.setInstance(Crypt.class, crypt);
8281

8382
modules.forEach(m -> m.setupConfig(this, config));
84-
if (config.get("database.driver", "none").equalsIgnoreCase("sqlite")) {
85-
sql = new SQLite(config.get("database.file", "db.sqlite"));
86-
} else if (config.get("database.driver", "none").equalsIgnoreCase("mysql")) {
87-
sql = new MySQL(
88-
config.get("database.host", "localhost"),
89-
config.getInt("database.port", 3306),
90-
config.get("database.name", "app"),
91-
config.get("database.user", "root"),
92-
config.get("database.password", "")
93-
);
94-
} else {
95-
sql = null;
96-
}
97-
if (sql != null) {
98-
try {
99-
for (Module m : modules)
100-
m.beforeSetupModels(this, sql);
101-
setupModels(sql);
102-
for (Module m : modules)
103-
m.setupModels(this, sql);
104-
} catch (ORMConfigurationException ex) {
105-
ex.printStackTrace();
106-
}
83+
sqlDriverFactory = new SQLDriverFactory(new HashMap<String, String>() {{
84+
put("file", config.get("database.file", "sb.sqlite"));
85+
put("host", config.get("database.host", "localhost"));
86+
put("port", config.get("database.port", "3306"));
87+
put("name", config.get("database.name", "app"));
88+
put("user", config.get("database.user", "root"));
89+
put("password", config.get("database.password", ""));
90+
}});
91+
modules.forEach(m -> m.setupDriverFactory(this, sqlDriverFactory));
92+
String driverName = config.get("database.driver", "none");
93+
try {
94+
sql = sqlDriverFactory.getDriver(driverName);
95+
96+
for (Module m : modules)
97+
m.beforeSetupModels(this, sql);
98+
setupModels(sql);
99+
for (Module m : modules)
100+
m.setupModels(this, sql);
101+
} catch (ORMConfigurationException ex) {
102+
ex.printStackTrace();
103+
} catch (SQLDriverNotFoundException e) {
104+
logger.warning("[SQL] Driver " + driverName + " not found!");
107105
}
108106
modelBindParamTransformer = new ModelBindParamTransformer();
109107

src/main/java/org/javawebstack/framework/module/Module.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.javawebstack.injector.Injector;
88
import org.javawebstack.orm.exception.ORMConfigurationException;
99
import org.javawebstack.orm.wrapper.SQL;
10+
import org.javawebstack.orm.wrapper.SQLDriverFactory;
1011

1112
public interface Module {
1213

@@ -31,6 +32,9 @@ default void setupConfig(WebApplication application, Config config) {
3132
default void setupInjection(WebApplication application, Injector injector) {
3233
}
3334

35+
default void setupDriverFactory(WebApplication application, SQLDriverFactory driverFactory) {
36+
}
37+
3438
default void setupModels(WebApplication application, SQL sql) throws ORMConfigurationException {
3539
}
3640

0 commit comments

Comments
 (0)