diff --git a/.gitignore b/.gitignore
index 915cbc2..e381f10 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,7 @@
# Project exclude paths
/out/
/target/
-/T-DataBasesAPI.iml
\ No newline at end of file
+/T-DataBasesAPI.iml
+/database.db
+/.idea/
+/javadocs/
diff --git a/pom.xml b/pom.xml
index 10bff2b..1912ab7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
pl.timsixth
T-DataBasesAPI
- 1.9.2
+ 1.10.0
diff --git a/src/main/java/pl/timsixth/databasesapi/DatabasesApiPlugin.java b/src/main/java/pl/timsixth/databasesapi/DatabasesApiPlugin.java
index 02e465d..ce6a8c2 100644
--- a/src/main/java/pl/timsixth/databasesapi/DatabasesApiPlugin.java
+++ b/src/main/java/pl/timsixth/databasesapi/DatabasesApiPlugin.java
@@ -1,6 +1,5 @@
package pl.timsixth.databasesapi;
-import lombok.SneakyThrows;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.plugin.PluginDescriptionFile;
@@ -9,14 +8,15 @@
import pl.timsixth.databasesapi.api.IDataBasesApi;
import pl.timsixth.databasesapi.config.ConfigFileSpigot;
import pl.timsixth.databasesapi.config.IConfigFile;
+import pl.timsixth.databasesapi.database.DatabaseConnector;
+import pl.timsixth.databasesapi.database.DatabaseFactory;
import pl.timsixth.databasesapi.database.ISQLDataBase;
-import pl.timsixth.databasesapi.database.ISQLite;
import pl.timsixth.databasesapi.database.migration.DataBaseMigrations;
import pl.timsixth.databasesapi.database.migration.Migrations;
-import pl.timsixth.databasesapi.database.type.MySQL;
-import pl.timsixth.databasesapi.database.type.SQLite;
import java.io.File;
+import java.io.IOException;
+import java.sql.SQLException;
public final class DatabasesApiPlugin extends JavaPlugin {
ISQLDataBase currentSQLDataBase;
@@ -32,7 +32,7 @@ public DatabasesApiPlugin(JavaPluginLoader loader, PluginDescriptionFile descrip
super(loader, description, dataFolder, file);
}
- @SneakyThrows
+
@Override
public void onEnable() {
configFile = new ConfigFileSpigot(this);
@@ -43,32 +43,17 @@ public void onEnable() {
getConfig().options().copyDefaults(true);
saveConfig();
- switch (configFile.getDataBaseType()) {
- case MYSQL:
- ISQLDataBase mysql = new MySQL();
- mysql.setDataBase(getConfig().getString("database"));
- mysql.setHostname(getConfig().getString("hostname"));
- mysql.setPassword(getConfig().getString("password"));
- mysql.setPort(getConfig().getInt("port"));
- mysql.setUsername(getConfig().getString("username"));
- mysql.openConnection();
- currentSQLDataBase = mysql;
- Bukkit.getConsoleSender().sendMessage(ChatColor.GREEN + "Successful connected to MySQL");
- break;
- case SQLITE:
- ISQLite sqlite = new SQLite(this);
- sqlite.setDataBase(getConfig().getString("database"));
- File database = sqlite.createDataBase(sqlite.getDataBase() + ".db");
- sqlite.openConnection(database);
- currentSQLDataBase = sqlite;
- Bukkit.getConsoleSender().sendMessage(ChatColor.GREEN + "Successful connected to SQLite");
- break;
- default:
- Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "This database doesn't exists");
- }
+ try {
+ currentSQLDataBase = (ISQLDataBase) DatabaseFactory.createDatabase(configFile.getDataBaseType(), this);
+ DatabaseConnector.connect(currentSQLDataBase);
- dataBaseMigrations.createMigrationsTable();
- dataBaseMigrations.checkMigrations();
+ Bukkit.getConsoleSender().sendMessage(ChatColor.GREEN + "Successful connected to " + configFile.getDataBaseType());
+
+ dataBaseMigrations.createMigrationsTable();
+ dataBaseMigrations.checkMigrations();
+ } catch (SQLException | IOException | ClassNotFoundException ex) {
+ Bukkit.getLogger().severe(ex.getMessage());
+ }
}
@Override
diff --git a/src/main/java/pl/timsixth/databasesapi/database/DatabaseConnector.java b/src/main/java/pl/timsixth/databasesapi/database/DatabaseConnector.java
new file mode 100644
index 0000000..930769f
--- /dev/null
+++ b/src/main/java/pl/timsixth/databasesapi/database/DatabaseConnector.java
@@ -0,0 +1,28 @@
+package pl.timsixth.databasesapi.database;
+
+import java.io.File;
+import java.io.IOException;
+import java.sql.SQLException;
+
+public final class DatabaseConnector {
+
+ /**
+ * Connects to database
+ *
+ * @param dataBase database to connect
+ * @throws SQLException when can not connect to database
+ * @throws IOException when can not create file
+ * @throws ClassNotFoundException when can not find database driver
+ */
+ public static void connect(IDataBase dataBase) throws SQLException, IOException, ClassNotFoundException {
+ if (dataBase instanceof ISQLite) {
+ ISQLite sqlLite = (ISQLite) dataBase;
+
+ File database = sqlLite.createDataBase(dataBase.getDataBase() + ".db");
+ sqlLite.openConnection(database);
+ return;
+ }
+
+ dataBase.openConnection();
+ }
+}
diff --git a/src/main/java/pl/timsixth/databasesapi/database/DatabaseFactory.java b/src/main/java/pl/timsixth/databasesapi/database/DatabaseFactory.java
new file mode 100644
index 0000000..6d31d67
--- /dev/null
+++ b/src/main/java/pl/timsixth/databasesapi/database/DatabaseFactory.java
@@ -0,0 +1,36 @@
+package pl.timsixth.databasesapi.database;
+
+import org.bukkit.configuration.file.FileConfiguration;
+import pl.timsixth.databasesapi.DatabasesApiPlugin;
+import pl.timsixth.databasesapi.database.type.MySQL;
+import pl.timsixth.databasesapi.database.type.SQLite;
+
+public final class DatabaseFactory {
+
+ /**
+ * Creates database instance
+ *
+ * @param dataBaseType type from config.yml
+ * @param databasesApiPlugin database api plugin, to get config
+ * @return created database instance
+ */
+ public static IDataBase createDatabase(DataBaseType dataBaseType, DatabasesApiPlugin databasesApiPlugin) {
+ FileConfiguration fileConfiguration = databasesApiPlugin.getConfig();
+
+ if (dataBaseType == DataBaseType.MYSQL) {
+ ISQLDataBase mysql = new MySQL();
+ mysql.setDataBase(fileConfiguration.getString("database"));
+ mysql.setHostname(fileConfiguration.getString("hostname"));
+ mysql.setPassword(fileConfiguration.getString("password"));
+ mysql.setPort(fileConfiguration.getInt("port"));
+ mysql.setUsername(fileConfiguration.getString("username"));
+
+ return mysql;
+ }
+
+ ISQLite sqlite = new SQLite(databasesApiPlugin);
+ sqlite.setDataBase(fileConfiguration.getString("database"));
+
+ return sqlite;
+ }
+}
diff --git a/src/main/java/pl/timsixth/databasesapi/database/structure/AbstractTable.java b/src/main/java/pl/timsixth/databasesapi/database/structure/AbstractTable.java
index f18e23b..53f1141 100644
--- a/src/main/java/pl/timsixth/databasesapi/database/structure/AbstractTable.java
+++ b/src/main/java/pl/timsixth/databasesapi/database/structure/AbstractTable.java
@@ -61,6 +61,11 @@ public ITable createColumn(String columnName, IDataType dataType, boolean nullab
return this;
}
+ @Override
+ public ITable createColumn(String columnName, IDataType type) {
+ return createColumn(columnName, type, false);
+ }
+
@Override
public boolean createTable(String name) {
if (columns.size() < 2) {
diff --git a/src/main/java/pl/timsixth/databasesapi/database/structure/ITable.java b/src/main/java/pl/timsixth/databasesapi/database/structure/ITable.java
index b2e3ca6..daf653e 100644
--- a/src/main/java/pl/timsixth/databasesapi/database/structure/ITable.java
+++ b/src/main/java/pl/timsixth/databasesapi/database/structure/ITable.java
@@ -71,4 +71,13 @@ public interface ITable {
* @return ITable
*/
ITable id();
+
+ /**
+ * Creates new column, nullable is set to false be default
+ *
+ * @param columnName column which will be set primaryKey
+ * @param type DataType which will be set to column @{@link IDataType}
+ * @return ITable
+ */
+ ITable createColumn(String columnName, IDataType type);
}
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index 5ac055c..5ac9cf6 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -3,6 +3,6 @@ username: 'root'
password: ''
database: 'servertestowy'
port: 3306
-type: MYSQL
+type: SQLITE
#Avaiable types of databases MYSQL,SQLITE.
#Please type this databases uppercase.
\ No newline at end of file
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 7913694..495ee36 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -1,4 +1,4 @@
name: T-DatabasesApi
main: pl.timsixth.databasesapi.DatabasesApiPlugin
-version: '1.9.2'
+version: '1.10.0'
author: timsixth
\ No newline at end of file