diff --git a/build.gradle.kts b/build.gradle.kts index 6a65576..8e8ab4b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -7,7 +7,7 @@ plugins { id("java") id("maven-publish") id("signing") - id("com.github.johnrengelman.shadow") version "8.1.1" + id("com.gradleup.shadow") version "9.0.0-beta4" id("com.vanniktech.maven.publish") version "0.28.0" } diff --git a/src/main/java/io/github/deathgod7/SE7ENLib/database/DatabaseInfo.java b/src/main/java/io/github/deathgod7/SE7ENLib/database/DatabaseInfo.java index 02dc639..173f694 100644 --- a/src/main/java/io/github/deathgod7/SE7ENLib/database/DatabaseInfo.java +++ b/src/main/java/io/github/deathgod7/SE7ENLib/database/DatabaseInfo.java @@ -86,12 +86,14 @@ public PoolSettings getPoolSettings() { * Database Info constructor for SQLite database * @param dbname name of the database file * @param dbdir path where the database file is located + * @param poolSettings {@link PoolSettings} the pool settings * @since 1.0 */ - public DatabaseInfo(String dbname, String dbdir) { + public DatabaseInfo(String dbname, String dbdir, PoolSettings poolSettings) { _dbType = DatabaseManager.DatabaseType.SQLite; _dbName = dbname; _dirDB = dbdir; + _poolSettings = poolSettings; } /** diff --git a/src/main/java/io/github/deathgod7/SE7ENLib/database/dbtype/mysql/MySQL.java b/src/main/java/io/github/deathgod7/SE7ENLib/database/dbtype/mysql/MySQL.java index 8569801..67b8682 100644 --- a/src/main/java/io/github/deathgod7/SE7ENLib/database/dbtype/mysql/MySQL.java +++ b/src/main/java/io/github/deathgod7/SE7ENLib/database/dbtype/mysql/MySQL.java @@ -165,6 +165,7 @@ private boolean connectMySQL() { hikariConfig.addDataSourceProperty("cachePrepStmts", "true"); hikariConfig.addDataSourceProperty("prepStmtCacheSize", "250"); hikariConfig.addDataSourceProperty("prepStmtCacheSqlLimit", "2048"); + hikariConfig.setLeakDetectionThreshold(2000); PoolSettings poolSettings = this.dbInfo.getPoolSettings(); if (poolSettings != null) { @@ -191,18 +192,16 @@ public void loadMysqlTables() { String query = "SELECT table_name FROM information_schema.tables " + "WHERE table_schema = '"+ this.getDBName() +"' AND table_type = 'base table' " + "ORDER BY table_name"; - try { - Connection con = this.getConnection(); + try (Connection con = this.getConnection()) { PreparedStatement ps = con.prepareStatement(query); ResultSet rs = ps.executeQuery(); while (rs.next()) { String tablename = rs.getString(1); tables.put(tablename, this.loadTable(tablename)); } - // close the fricking connection - DatabaseManager.getInstance().closeConnection(ps,rs); - DatabaseManager.getInstance().closeConnection(con); + // DatabaseManager.getInstance().closeConnection(ps,rs); + // DatabaseManager.getInstance().closeConnection(con); } catch (SQLException ex) { Logger.log("[ERROR] " + ex.getMessage()); } @@ -219,9 +218,7 @@ public Table loadTable(String tablename) { LinkedHashMap columns = new LinkedHashMap<>(); String primarykey = ""; - try { - Connection con = this.getConnection(); - + try (Connection con = this.getConnection()) { PreparedStatement ps = con.prepareStatement(query); ResultSet rs = ps.executeQuery(); @@ -248,10 +245,9 @@ public Table loadTable(String tablename) { columns.put(name, column); } - // close the fricking connection here too you dumb human - DatabaseManager.getInstance().closeConnection(ps,rs); - DatabaseManager.getInstance().closeConnection(con); + // DatabaseManager.getInstance().closeConnection(ps,rs); + // DatabaseManager.getInstance().closeConnection(con); } catch (SQLException ex) { Logger.log("[ERROR] " + ex.getMessage()); @@ -264,6 +260,7 @@ public Table loadTable(String tablename) { return new Table(tablename, primaryKey, columns.values()); } + private int getLimitFromText(String input) { // Define a regular expression pattern to match the integer within parentheses Pattern pattern = Pattern.compile("\\((\\d+)\\)"); diff --git a/src/main/java/io/github/deathgod7/SE7ENLib/database/dbtype/sqlite/SQLite.java b/src/main/java/io/github/deathgod7/SE7ENLib/database/dbtype/sqlite/SQLite.java index 1251c25..c20460f 100644 --- a/src/main/java/io/github/deathgod7/SE7ENLib/database/dbtype/sqlite/SQLite.java +++ b/src/main/java/io/github/deathgod7/SE7ENLib/database/dbtype/sqlite/SQLite.java @@ -125,11 +125,12 @@ public void removeTable(String tablename) { * Create a new SQLite object * @param dbName {@link String} The name of the database file * @param directory {@link String} The directory of the database file + * @param poolSettings {@link PoolSettings} The pool settings */ - public SQLite(String dbName, String directory){ + public SQLite(String dbName, String directory, PoolSettings poolSettings){ this.dbName = dbName; this.dirDB = directory; - this.dbInfo = new DatabaseInfo(dbName, directory); + this.dbInfo = new DatabaseInfo(dbName, directory, poolSettings); if (connectSQLite()) { Logger.log("[OBJECT CREATION INFO] MySQL connected successfully"); }else { @@ -176,6 +177,7 @@ private boolean connectSQLite() { hikariConfig.addDataSourceProperty("cachePrepStmts", "true"); hikariConfig.addDataSourceProperty("prepStmtCacheSize", "250"); hikariConfig.addDataSourceProperty("prepStmtCacheSqlLimit", "2048"); + hikariConfig.setLeakDetectionThreshold(2000); PoolSettings poolSettings = this.dbInfo.getPoolSettings(); if (poolSettings != null) { @@ -202,12 +204,12 @@ public void loadSqliteTables() { String sqlitever; int[] sqliteverformatted = new int[3]; - try { + try (Connection con = this.getConnection()) { // Crrate a query String query = "SELECT sqlite_version()"; // Create a statement - PreparedStatement ps = this.getConnection().prepareStatement(query); + PreparedStatement ps = con.prepareStatement(query); // Execute the query to retrieve the SQLite version ResultSet resultSet = ps.executeQuery(); @@ -215,7 +217,6 @@ public void loadSqliteTables() { // Retrieve the result if (resultSet.next()) { sqlitever = resultSet.getString(1); - ps.close(); } } catch (SQLException ex) { Logger.log("[ERROR] " + ex.getMessage()); @@ -228,8 +229,7 @@ public void loadSqliteTables() { String query = "SELECT tbl_name FROM " + schematable + " WHERE type = 'table' AND name NOT LIKE 'sqlite_%' " + "ORDER BY tbl_name"; - try { - Connection con = this.getConnection(); + try (Connection con = this.getConnection()) { PreparedStatement ps = con.prepareStatement(query); ResultSet rs = ps.executeQuery(); while (rs.next()) { @@ -238,8 +238,8 @@ public void loadSqliteTables() { } // close the fricking connection .... even for sqlite - DatabaseManager.getInstance().closeConnection(ps,rs); - DatabaseManager.getInstance().closeConnection(con); + // DatabaseManager.getInstance().closeConnection(ps,rs); + // DatabaseManager.getInstance().closeConnection(con); } catch (SQLException ex) { Logger.log("[ERROR] " + ex.getMessage()); } @@ -282,8 +282,8 @@ public Table loadTable(String tablename) { } // close the fricking connection again .... even for sqlite - DatabaseManager.getInstance().closeConnection(ps,rs); - DatabaseManager.getInstance().closeConnection(con); + // DatabaseManager.getInstance().closeConnection(ps,rs); + // DatabaseManager.getInstance().closeConnection(con); } catch (SQLException ex) { Logger.log("[ERROR] " + ex.getMessage()); diff --git a/src/main/java/io/github/deathgod7/SE7ENLib/database/handler/MongoOperations.java b/src/main/java/io/github/deathgod7/SE7ENLib/database/handler/MongoOperations.java index b472142..48269ec 100644 --- a/src/main/java/io/github/deathgod7/SE7ENLib/database/handler/MongoOperations.java +++ b/src/main/java/io/github/deathgod7/SE7ENLib/database/handler/MongoOperations.java @@ -294,7 +294,7 @@ public boolean createTable(Table table, DatabaseManager.DatabaseType dbtype) { return false; // Define schema rules for the collection - List allCols = table.getColumns(); + List allCols = new ArrayList<>(table.getColumns()); if (!table.getPrimaryKey().getName().equals("_id")) { return false; @@ -400,8 +400,6 @@ public boolean insertData(String tablename, List columns) { return false; } - - MongoCollection collection = db.getCollection(tablename); Document doc = getColsAsDocument(columns); diff --git a/src/main/java/io/github/deathgod7/SE7ENLib/database/handler/SQLOperations.java b/src/main/java/io/github/deathgod7/SE7ENLib/database/handler/SQLOperations.java index b5e220c..a23f9e3 100644 --- a/src/main/java/io/github/deathgod7/SE7ENLib/database/handler/SQLOperations.java +++ b/src/main/java/io/github/deathgod7/SE7ENLib/database/handler/SQLOperations.java @@ -148,14 +148,13 @@ else if (dbtype == DatabaseType.MySQL && table.getPrimaryKey().isAutoIncrement() Logger.log("[CREATE TABLE QUERY] " + query); - try { - Connection con = (Connection) DatabaseManager.getInstance().getConnection(); + try (Connection con = (Connection) DatabaseManager.getInstance().getConnection()) { PreparedStatement ps = con.prepareStatement(query.toString()); ps.executeUpdate(); // take his wife to gulag - DatabaseManager.getInstance().closeConnection(ps, null); - DatabaseManager.getInstance().closeConnection(con); + // DatabaseManager.getInstance().closeConnection(ps, null); + // DatabaseManager.getInstance().closeConnection(con); DatabaseManager dbm = DatabaseManager.getInstance(); DatabaseType dbType = dbm.getDbInfo().getDbType(); @@ -189,14 +188,13 @@ public boolean dropTable(String tablename) { Logger.log("[DROP TABLE QUERY] " + query); - try { - Connection con = (Connection) DatabaseManager.getInstance().getConnection(); + try (Connection con = (Connection) DatabaseManager.getInstance().getConnection()){ PreparedStatement ps = con.prepareStatement(query.toString()); ps.executeUpdate(); // take him to gulag too - DatabaseManager.getInstance().closeConnection(ps, null); - DatabaseManager.getInstance().closeConnection(con); + // DatabaseManager.getInstance().closeConnection(ps, null); + // DatabaseManager.getInstance().closeConnection(con); DatabaseManager dbm = DatabaseManager.getInstance(); DatabaseType dbType = dbm.getDbInfo().getDbType(); @@ -249,8 +247,7 @@ public boolean insertData(String tablename, List columns) { Logger.log("[INSERT DATA QUERY] " + query); - try { - Connection con = (Connection) DatabaseManager.getInstance().getConnection(); + try (Connection con = (Connection) DatabaseManager.getInstance().getConnection()) { PreparedStatement s = con.prepareStatement(query.toString()); for (int i = 0; i < columns.size(); i++) { switch (columns.get(i).getDataType()) { @@ -317,8 +314,8 @@ public boolean insertData(String tablename, List columns) { s.executeUpdate(); // here take back your connection you damn...m...f - DatabaseManager.getInstance().closeConnection(s, null); - DatabaseManager.getInstance().closeConnection(con); + // DatabaseManager.getInstance().closeConnection(s, null); + // DatabaseManager.getInstance().closeConnection(con); return true; } catch (SQLException e) { Logger.log("[ERROR] " + e.getMessage()); @@ -368,14 +365,13 @@ public boolean updateData(String tablename, Column primaryKey, List colu Logger.log("[UPDATE DATA QUERY] " + query); - try { - Connection con = (Connection) DatabaseManager.getInstance().getConnection(); + try (Connection con = (Connection) DatabaseManager.getInstance().getConnection()) { PreparedStatement s = con.prepareStatement(query.toString()); s.executeUpdate(); // again closing as promised xD - DatabaseManager.getInstance().closeConnection(s, null); - DatabaseManager.getInstance().closeConnection(con); + // DatabaseManager.getInstance().closeConnection(s, null); + // DatabaseManager.getInstance().closeConnection(con); return true; } catch (SQLException e) { Logger.log("[ERROR] " + e.getMessage()); @@ -398,8 +394,7 @@ public boolean deleteData(String tablename, Column primaryKey) { Logger.log("[DELETE DATA QUERY] " + query); - try { - Connection con = (Connection) DatabaseManager.getInstance().getConnection(); + try (Connection con = (Connection) DatabaseManager.getInstance().getConnection()) { PreparedStatement s = con.prepareStatement(query); switch (primaryKey.getDataType()) { case VARCHAR: @@ -463,8 +458,8 @@ public boolean deleteData(String tablename, Column primaryKey) { s.executeUpdate(); // close all the fricking con - DatabaseManager.getInstance().closeConnection(s, null); - DatabaseManager.getInstance().closeConnection(con); + // DatabaseManager.getInstance().closeConnection(s, null); + // DatabaseManager.getInstance().closeConnection(con); return true; } catch (SQLException e) { Logger.log("[ERROR] " + e.getMessage()); @@ -491,8 +486,7 @@ public List getExactData(String tablename, Column primaryKey) { Logger.log("[GET EXACT DATA QUERY] " + query); - try { - Connection con = (Connection) DatabaseManager.getInstance().getConnection(); + try (Connection con = (Connection) DatabaseManager.getInstance().getConnection()) { PreparedStatement s = con.prepareStatement(query); switch (primaryKey.getDataType()) { @@ -600,19 +594,19 @@ public List getExactData(String tablename, Column primaryKey) { result.add(rCol); } - - // close the PS and RS - DatabaseManager.getInstance().closeConnection(s, rs); - DatabaseManager.getInstance().closeConnection(con); } catch (SQLException e) { - // close all the fricking con - DatabaseManager.getInstance().closeConnection(s, rs); - DatabaseManager.getInstance().closeConnection(con); + // DatabaseManager.getInstance().closeConnection(s, rs); + // DatabaseManager.getInstance().closeConnection(con); Logger.log("[ERROR] " + e.getMessage()); } } + // close the PS and RS + // DatabaseManager.getInstance().closeConnection(s, rs); + // DatabaseManager.getInstance().closeConnection(con); } catch (SQLException e) { Logger.log("[ERROR] " + e.getMessage()); + // close all the fricking con "PROPERLYYY" + // DatabaseManager.getInstance().closeConnection(con); } return result; @@ -637,8 +631,7 @@ public List> findData(String tablename, Column column) { Logger.log("[FIND DATA QUERY] " + query); - try { - Connection con = (Connection) DatabaseManager.getInstance().getConnection(); + try (Connection con = (Connection) DatabaseManager.getInstance().getConnection()) { PreparedStatement s = con.prepareStatement(query); switch (column.getDataType()) { @@ -704,7 +697,7 @@ public List> findData(String tablename, Column column) { ResultSet rs = s.executeQuery(); // primary key and so on - List allTableCols = table.getColumns(); + List allTableCols = new ArrayList<>(table.getColumns()); allTableCols.add(0, table.getPrimaryKey()); while (rs.next()) { @@ -748,10 +741,13 @@ public List> findData(String tablename, Column column) { } results.add(temp); } - DatabaseManager.getInstance().closeConnection(s, rs); - DatabaseManager.getInstance().closeConnection(con); + + // DatabaseManager.getInstance().closeConnection(s, rs); + // DatabaseManager.getInstance().closeConnection(con); } catch (SQLException e) { Logger.log("[ERROR] " + e.getMessage()); + + // DatabaseManager.getInstance().closeConnection(con); } return results; @@ -769,15 +765,14 @@ public List> getAllDatas(String tablename) { String safeTableName = this.sanitizeSQLQuery(tablename); Table table = DatabaseManager.getInstance().getTables().get(tablename); String query = "SELECT * FROM `" + safeTableName + "`;"; - try { - Logger.log("[GET ALL DATAS QUERY] " + query); + Logger.log("[GET ALL DATAS QUERY] " + query); - Connection con = (Connection) DatabaseManager.getInstance().getConnection(); + try (Connection con = (Connection) DatabaseManager.getInstance().getConnection();) { PreparedStatement s = con.prepareStatement(query); ResultSet rs = s.executeQuery(); // primary key and so on - List allTableCols = table.getColumns(); + List allTableCols = new ArrayList<>(table.getColumns()); allTableCols.add(0, table.getPrimaryKey()); while (rs.next()) { @@ -822,11 +817,13 @@ public List> getAllDatas(String tablename) { } allDatas.add(temp); } + // close both PS and RS - DatabaseManager.getInstance().closeConnection(s, rs); - DatabaseManager.getInstance().closeConnection(con); + // DatabaseManager.getInstance().closeConnection(s, rs); + // DatabaseManager.getInstance().closeConnection(con); } catch (SQLException e) { Logger.log("[ERROR] " + e.getMessage()); + // DatabaseManager.getInstance().closeConnection(con); } return allDatas; } diff --git a/src/test/java/io/github/deathgod7/SE7ENLib/Database/MySQL_Test.java b/src/test/java/io/github/deathgod7/SE7ENLib/Database/MySQL_Test.java index 821e4cf..247c6e5 100644 --- a/src/test/java/io/github/deathgod7/SE7ENLib/Database/MySQL_Test.java +++ b/src/test/java/io/github/deathgod7/SE7ENLib/Database/MySQL_Test.java @@ -6,9 +6,12 @@ import io.github.deathgod7.SE7ENLib.database.DatabaseInfo; import io.github.deathgod7.SE7ENLib.database.DatabaseManager; +import io.github.deathgod7.SE7ENLib.database.PoolSettings; import io.github.deathgod7.SE7ENLib.database.component.Column; import io.github.deathgod7.SE7ENLib.database.component.Table; import io.github.deathgod7.SE7ENLib.database.dbtype.mysql.MySQL; +import io.github.deathgod7.SE7ENLib.database.dbtype.sqlite.SQLite; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -19,14 +22,20 @@ public class MySQL_Test { @Test - //@Disabled + @Disabled @DisplayName("Test : MySQL database") public void MySQLDatabaseConnection() { - DatabaseInfo dbInfo = new DatabaseInfo("test", "http://localhost", "root", "", DatabaseManager.DatabaseType.MySQL, null); + + PoolSettings poolSettings = new PoolSettings(); + poolSettings.setMinIdleConnections(5); + poolSettings.setMaxPoolSize(10); + + DatabaseInfo dbInfo = new DatabaseInfo("se7en_plugin", "http://localhost", + "root", "", DatabaseManager.DatabaseType.MySQL, + poolSettings); DatabaseManager dbManager = new DatabaseManager(dbInfo); MySQL db = dbManager.getMySQL(); - Connection con = db.getConnection(); Column pk = new Column("id", DatabaseManager.DataType.INTEGER); pk.setAutoIncrement(true); @@ -51,36 +60,88 @@ public void MySQLDatabaseConnection() { Table table = new Table("tempdb", pk, tempp); db.createTable(table, DatabaseManager.getInstance().getDbInfo().getDbType()); -// for (Table tb: DatabaseManager.getInstance().getTables().values()) { -// System.out.println(tb.getName()); -// System.out.println(tb.getPrimaryKey().getName()); -// } +// writeDataTest(dbManager); + readAllDataTest(dbManager); + readDataTest(dbManager); +// updateDataTest(dbManager); + } - Column vpk = new Column("id", 2, DatabaseManager.DataType.INTEGER); - Column vfirst = new Column("varchars", "meow?data", DatabaseManager.DataType.VARCHAR); - Column vsecond = new Column("integars", 169, DatabaseManager.DataType.INTEGER); - Column vthird = new Column("floats", 25691.7, DatabaseManager.DataType.FLOAT); - Column vfourth = new Column("texts", "damn it reallyyy works...again v2", DatabaseManager.DataType.TEXT); + private void writeDataTest(DatabaseManager dbm) { + MySQL db = dbm.getMySQL(); - List vtempp = new ArrayList<>(); - vtempp.add(vfirst); - vtempp.add(vsecond); - vtempp.add(vthird); - vtempp.add(vfourth); + for (int i = 1; i <= 1000; i++) { + Column pk = new Column("id", i, DatabaseManager.DataType.INTEGER); + Column first = new Column("varchars", "meow?data", DatabaseManager.DataType.VARCHAR); + Column second = new Column("integars", 169, DatabaseManager.DataType.INTEGER); + Column third = new Column("floats", 25691.7, DatabaseManager.DataType.FLOAT); + Column fourth = new Column("texts", "damn it reallyyy works...again v2", DatabaseManager.DataType.TEXT); -// db.insertData("tempdb", vtempp); -// db.updateData("tempdb", vpk, vtempp); -// List> test = db.getAllDatas("tempdb"); + List tempp = new ArrayList<>(); + tempp.add(first); + tempp.add(second); + tempp.add(third); + tempp.add(fourth); -// for (List temp : test) { -// for (Column c: temp) { -// System.out.println(c.getName() + " : " + c.getValue()); -// } -// } + System.out.printf("Writing data %d\n", i); + System.out.println(tempp.toString()); + + db.insertData("tempdb", tempp); + } + } + private void readAllDataTest(DatabaseManager dbm) { + MySQL db = dbm.getMySQL(); + int count = 0; + for (List tt : db.getAllDatas("tempdb")) { + System.out.println("Row : " + ++count); + for (Column c: tt) { + System.out.println(c.getName() + " : " + c.getValue()); + } + } } + private void readDataTest(DatabaseManager dbm) { + MySQL db = dbm.getMySQL(); + + for (int i = 1; i <= 1000; i++) { + Column pk = new Column("id", i, DatabaseManager.DataType.INTEGER); + List tt = db.getExactData("tempdb", pk); + for (Column c: tt) { + System.out.println(c.getName() + " : " + c.getValue()); + } + System.out.println("---------------------"); + } + } + + private void updateDataTest(DatabaseManager dbm) { + MySQL db = dbm.getMySQL(); + + for (int i = 1; i <= 1000; i++) { + Column pk = new Column("id", i, DatabaseManager.DataType.INTEGER); + Column first = new Column("varchars", "After Test", DatabaseManager.DataType.VARCHAR); + Column second = new Column("integars", 100, DatabaseManager.DataType.INTEGER); + Column third = new Column("floats", 100.0, DatabaseManager.DataType.FLOAT); + Column fourth = new Column("texts", "All data updated!", DatabaseManager.DataType.TEXT); + + List tempp = new ArrayList<>(); + tempp.add(first); + tempp.add(second); + tempp.add(third); + tempp.add(fourth); + + System.out.printf("Updating data %d\n", i); + System.out.println(tempp.toString()); + + db.insertData("tempdb", tempp); + db.updateData("tempdb", pk, tempp); + + } + + + } + + } diff --git a/src/test/java/io/github/deathgod7/SE7ENLib/Database/SQLite_Test.java b/src/test/java/io/github/deathgod7/SE7ENLib/Database/SQLite_Test.java index a088fc8..3395b91 100644 --- a/src/test/java/io/github/deathgod7/SE7ENLib/Database/SQLite_Test.java +++ b/src/test/java/io/github/deathgod7/SE7ENLib/Database/SQLite_Test.java @@ -6,8 +6,10 @@ import io.github.deathgod7.SE7ENLib.database.DatabaseInfo; import io.github.deathgod7.SE7ENLib.database.DatabaseManager; +import io.github.deathgod7.SE7ENLib.database.PoolSettings; import io.github.deathgod7.SE7ENLib.database.component.Column; import io.github.deathgod7.SE7ENLib.database.component.Table; +import io.github.deathgod7.SE7ENLib.database.dbtype.mysql.MySQL; import io.github.deathgod7.SE7ENLib.database.dbtype.sqlite.SQLite; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.DisplayName; @@ -42,17 +44,16 @@ public void SQLiteDatabaseConnection() { boolean created = directory.mkdirs(); } - DatabaseInfo dbInfo = new DatabaseInfo("mydatabase", path); + PoolSettings poolSettings = new PoolSettings(); + poolSettings.setMinIdleConnections(20); + poolSettings.setMaxPoolSize(30); + + DatabaseInfo dbInfo = new DatabaseInfo("mydatabase", path, poolSettings); DatabaseManager dbManager = new DatabaseManager(dbInfo); SQLite db = dbManager.getSQLite(); - Connection con = db.getConnection(); - - - Column pk = new Column("id", DatabaseManager.DataType.INTEGER); - Column first = new Column("varchars", DatabaseManager.DataType.VARCHAR); first.setLimit(10); first.setDefaultValue("defaultv"); @@ -73,38 +74,84 @@ public void SQLiteDatabaseConnection() { Table table = new Table("tempdb", pk, tempp); db.createTable(table, DatabaseManager.getInstance().getDbInfo().getDbType()); + // write + writeDataTest(dbManager); + // read + readAllDataTest(dbManager); + readDataTest(dbManager); + // update + updateDataTest(dbManager); + } - Column vpk = new Column("id", 1, DatabaseManager.DataType.INTEGER); - Column vfirst = new Column("varchars", "meow?data", DatabaseManager.DataType.VARCHAR); - Column vsecond = new Column("integars", 169, DatabaseManager.DataType.INTEGER); - Column vthird = new Column("floats", 25691.7, DatabaseManager.DataType.FLOAT); - Column vfourth = new Column("texts", "damn it reallyyy works...again v2", DatabaseManager.DataType.TEXT); + private void writeDataTest(DatabaseManager dbm) { + SQLite db = dbm.getSQLite(); - List vtempp = new ArrayList<>(); - vtempp.add(vfirst); - vtempp.add(vsecond); - vtempp.add(vthird); - vtempp.add(vfourth); + for (int i = 1; i <= 1000; i++) { + Column pk = new Column("id", i, DatabaseManager.DataType.INTEGER); + Column first = new Column("varchars", "meow?data", DatabaseManager.DataType.VARCHAR); + Column second = new Column("integars", 169, DatabaseManager.DataType.INTEGER); + Column third = new Column("floats", 25691.7, DatabaseManager.DataType.FLOAT); + Column fourth = new Column("texts", "damn it reallyyy works...again v2", DatabaseManager.DataType.TEXT); - int count = 0; + List tempp = new ArrayList<>(); + tempp.add(first); + tempp.add(second); + tempp.add(third); + tempp.add(fourth); + System.out.printf("Writing data %d\n", i); + System.out.println(tempp.toString()); + + db.insertData("tempdb", tempp); + } + } + + private void readAllDataTest(DatabaseManager dbm) { + SQLite db = dbm.getSQLite(); + + int count = 0; for (List tt : db.getAllDatas("tempdb")) { System.out.println("Row : " + ++count); for (Column c: tt) { System.out.println(c.getName() + " : " + c.getValue()); } } + } + + private void readDataTest(DatabaseManager dbm) { + SQLite db = dbm.getSQLite(); + + for (int i = 1; i <= 1000; i++) { + Column pk = new Column("id", i, DatabaseManager.DataType.INTEGER); + List tt = db.getExactData("tempdb", pk); + for (Column c: tt) { + System.out.println(c.getName() + " : " + c.getValue()); + } + } + } + private void updateDataTest(DatabaseManager dbm) { + SQLite db = dbm.getSQLite(); + + for (int i = 1; i <= 1000; i++) { + Column pk = new Column("id", i, DatabaseManager.DataType.INTEGER); + Column first = new Column("varchars", "After Test", DatabaseManager.DataType.VARCHAR); + Column second = new Column("integars", 100, DatabaseManager.DataType.INTEGER); + Column third = new Column("floats", 100.0, DatabaseManager.DataType.FLOAT); + Column fourth = new Column("texts", "All data updated!", DatabaseManager.DataType.TEXT); -// db.insertData("tempdb", vtempp); - //db.updateData("tempdb", vpk, vtempp); -// List> test = db.findData("tempdb", vsecond); -// List> test = db.getAllDatas("tempdb"); + List tempp = new ArrayList<>(); + tempp.add(first); + tempp.add(second); + tempp.add(third); + tempp.add(fourth); -// for (List temp : test) { -// for (Column c: temp) { -// System.out.println(c.getName() + " : " + c.getValue()); -// } -// } + System.out.printf("Updating data %d\n", i); + System.out.println(tempp.toString()); + + db.insertData("tempdb", tempp); + db.updateData("tempdb", pk, tempp); + + } }