Skip to content

Commit 1af272a

Browse files
committed
feat: auto generating database.db on app startup if missing
Signed-off-by: Rajdeep Roy Chowdhury <rrajdeeproychowdhury@gmail.com>
1 parent 688f066 commit 1af272a

File tree

4 files changed

+119
-3
lines changed

4 files changed

+119
-3
lines changed

scripts/start.bat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
set JAVA_HOME="C:\Program Files\Java\jdk-11.0.16\lib"
2-
set PATH="C:\Program Files\Java\jdk-11.0.16\bin"
1+
set JAVA_HOME="C:\Program Files\Java\jdk-17\lib"
2+
set PATH="C:\Program Files\Java\jdk-17\bin"
33

44
java --module-path "C:\Users\rrajd\openjfx-19_windows-x64_bin-sdk\javafx-sdk-19\lib" ^
55
--add-modules javafx.controls,javafx.base,javafx.graphics,javafx.fxml ^

src/main/java/satyamconsignment/common/Constants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@
33
public class Constants {
44
public static final String REPORT_FILE_NAME = "report.pdf";
55
public static final String DATE_TIME_FORMAT = "dd-MM-yyyy";
6+
public static final String DATABASE_FILE_NAME = "database.db";
67
}

src/main/java/satyamconsignment/common/DatabaseHandler.java

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package satyamconsignment.common;
22

3+
import java.io.IOException;
4+
import java.nio.charset.StandardCharsets;
35
import java.sql.Connection;
46
import java.sql.DriverManager;
57
import java.sql.SQLException;
8+
import java.sql.Statement;
9+
import java.util.Objects;
610
import java.util.logging.Level;
711
import java.util.logging.Logger;
812

@@ -11,10 +15,45 @@ public final class DatabaseHandler {
1115
private static DatabaseHandler databaseHandler = null;
1216
private Connection conn = null;
1317

18+
private String getInitSQL() throws IOException {
19+
return new String(
20+
Objects.requireNonNull(
21+
DatabaseHandler.class.getResourceAsStream("/sql/init.sql")
22+
).readAllBytes(),
23+
StandardCharsets.UTF_8
24+
);
25+
}
26+
27+
private void initDatabase(Connection conn) {
28+
try {
29+
String initSQL = getInitSQL();
30+
try (Statement st = conn.createStatement()) {
31+
32+
for (String statement : initSQL.split(";")) {
33+
String cleanedStatement = statement.trim();
34+
if (!cleanedStatement.isEmpty()) {
35+
st.execute(cleanedStatement);
36+
}
37+
}
38+
39+
conn.commit();
40+
} catch (Exception e) {
41+
conn.rollback();
42+
throw e;
43+
} finally {
44+
conn.setAutoCommit(true);
45+
}
46+
} catch (Exception ex) {
47+
System.out.println(ex.toString());
48+
}
49+
50+
}
51+
1452
private DatabaseHandler() {
1553
try {
1654
Class.forName("org.sqlite.JDBC");
17-
conn = DriverManager.getConnection("jdbc:sqlite:database.db");
55+
conn = DriverManager.getConnection("jdbc:sqlite:" + Constants.DATABASE_FILE_NAME);
56+
initDatabase(conn);
1857
} catch (ClassNotFoundException | SQLException ex) {
1958
Utils.showAlert(ex.toString());
2059
Logger.getLogger(DatabaseHandler.class.getName()).log(Level.SEVERE, ex.toString(), ex);

src/main/resources/sql/init.sql

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
CREATE TABLE IF NOT EXISTS `Transport_Master_Table`
2+
(
3+
`name` TEXT NOT NULL,
4+
PRIMARY KEY (`name`)
5+
);
6+
CREATE TABLE IF NOT EXISTS `Supplier_Master_Table`
7+
(
8+
`Name` TEXT NOT NULL,
9+
PRIMARY KEY (`Name`)
10+
);
11+
CREATE TABLE IF NOT EXISTS "Payment_Entry_Table"
12+
(
13+
`Voucher No.` TEXT NOT NULL,
14+
`Voucher Date` TEXT NOT NULL,
15+
`Supplier Name` TEXT NOT NULL,
16+
`Total Amount` TEXT NOT NULL,
17+
PRIMARY KEY (`Voucher No.`)
18+
);
19+
CREATE TABLE IF NOT EXISTS "Payment_Entry_Extended_Table"
20+
(
21+
`Voucher No.` TEXT NOT NULL,
22+
`Buyer Name` TEXT NOT NULL,
23+
`Bill No.` TEXT NOT NULL,
24+
`Bill Date` TEXT NOT NULL,
25+
`Bill Amount` TEXT NOT NULL,
26+
`Due Amount` TEXT NOT NULL,
27+
`Amount Paid` TEXT NOT NULL,
28+
`Bank` TEXT NOT NULL,
29+
`DD No.` TEXT NOT NULL,
30+
`DD Date` TEXT NOT NULL
31+
);
32+
CREATE TABLE IF NOT EXISTS `LR_Table`
33+
(
34+
`Bill No.` TEXT NOT NULL,
35+
`LR No.` TEXT NOT NULL,
36+
`PM` TEXT NOT NULL
37+
);
38+
CREATE TABLE IF NOT EXISTS "Collection_Entry_Table"
39+
(
40+
`Voucher No.` TEXT NOT NULL,
41+
`Voucher Date` TEXT NOT NULL,
42+
`Buyer Name` TEXT NOT NULL,
43+
`Total Amount` TEXT NOT NULL,
44+
PRIMARY KEY (`Voucher No.`)
45+
);
46+
CREATE TABLE IF NOT EXISTS "Collection_Entry_Extended_Table"
47+
(
48+
`Voucher No.` TEXT NOT NULL,
49+
`Supplier Name` TEXT NOT NULL,
50+
`Bill No.` TEXT NOT NULL,
51+
`Bill Date` TEXT NOT NULL,
52+
`Bill Amount` TEXT NOT NULL,
53+
`Collection Due` TEXT NOT NULL,
54+
`Amount Collected` TEXT NOT NULL,
55+
`Bank` TEXT NOT NULL,
56+
`DD No.` TEXT NOT NULL,
57+
`DD Date` TEXT NOT NULL
58+
);
59+
CREATE TABLE IF NOT EXISTS `Buyer_Master_Table`
60+
(
61+
`Name` TEXT NOT NULL,
62+
PRIMARY KEY (`Name`)
63+
);
64+
CREATE TABLE IF NOT EXISTS "Bill_Entry_Table"
65+
(
66+
`Supplier Name` TEXT NOT NULL,
67+
`Buyer Name` TEXT NOT NULL,
68+
`Bill No.` TEXT NOT NULL,
69+
`Bill Date` TEXT NOT NULL,
70+
`Transport` TEXT NOT NULL,
71+
`LR Date` TEXT NOT NULL,
72+
`Bill Amount` TEXT NOT NULL,
73+
`Collection Due` TEXT NOT NULL,
74+
`Due` TEXT NOT NULL,
75+
PRIMARY KEY (`Bill No.`)
76+
);

0 commit comments

Comments
 (0)