db #1
							
								
								
									
										306
									
								
								src/main/java/com/bib/essensbestellungsverwaltung/Database.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										306
									
								
								src/main/java/com/bib/essensbestellungsverwaltung/Database.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,306 @@ | ||||
| package com.bib.essensbestellungsverwaltung; | ||||
| /** | ||||
|  * @author Malte Schulze Hobeling | ||||
|  */ | ||||
|  | ||||
| import java.io.File; | ||||
| import java.io.IOException; | ||||
| import java.nio.file.Path; | ||||
| import java.sql.*; | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
|  | ||||
|  | ||||
| public class Database { | ||||
|     private static final String dbLocation = "jdbc:sqlite:"+Path.of("").toAbsolutePath()+"/database.db"; | ||||
|     protected static void init(){ | ||||
|         File db = new File(Path.of("").toAbsolutePath()+"/database.db"); | ||||
|         try { | ||||
|             db.createNewFile(); | ||||
|         } catch (IOException e) { | ||||
|             throw new RuntimeException(e); | ||||
|         } | ||||
|     } | ||||
|     protected static Connection connect(){ | ||||
|         Connection conn = null; | ||||
|         try{ | ||||
|             conn = DriverManager.getConnection(dbLocation); | ||||
|         }catch (SQLException e){ | ||||
|             e.printStackTrace(); | ||||
|         } | ||||
|         return conn; | ||||
|     } | ||||
|  | ||||
|     protected static void createDb(){ | ||||
|         String[] sql = new String[14]; | ||||
|         sql[0] = """ | ||||
|                 CREATE TABLE IF NOT EXISTS address ( | ||||
|                 id integer PRIMARY KEY, | ||||
|                 street text, | ||||
|                 number text, | ||||
|                 plz text, | ||||
|                 city text | ||||
|                 );"""; | ||||
|         sql[1] = """ | ||||
|                 CREATE TABLE IF NOT EXISTS food_type ( | ||||
|                 id integer PRIMARY KEY, | ||||
|                 name text | ||||
|                 );"""; | ||||
|         sql[2] = """ | ||||
|                 CREATE TABLE IF NOT EXISTS allergy ( | ||||
|                 id integer PRIMARY KEY, | ||||
|                 name text | ||||
|                 );"""; | ||||
|         sql[3] = """ | ||||
|                 CREATE TABLE IF NOT EXISTS severity ( | ||||
|                 id integer PRIMARY KEY, | ||||
|                 severity integer | ||||
|                 );"""; | ||||
|         sql[4] = """ | ||||
|                 CREATE TABLE IF NOT EXISTS user ( | ||||
|                 id integer PRIMARY KEY, | ||||
|                 name text, | ||||
|                 firstname text, | ||||
|                 addressid integer, | ||||
|                 password text, | ||||
|                 email text UNIQUE, | ||||
|                 FOREIGN KEY(addressid) REFERENCES address(id) | ||||
|                 );"""; | ||||
|         sql[5] = """ | ||||
|                 CREATE TABLE IF NOT EXISTS child ( | ||||
|                 id integer PRIMARY KEY, | ||||
|                 name text, | ||||
|                 firstname text, | ||||
|                 addressid integer, | ||||
|                 FOREIGN KEY(addressid) REFERENCES address(id) | ||||
|                 );"""; | ||||
|         sql[6] = """ | ||||
|                 CREATE TABLE IF NOT EXISTS worker ( | ||||
|                 userid integer PRIMARY KEY, | ||||
|                 FOREIGN KEY(userid) REFERENCES user(id) | ||||
|                 );"""; | ||||
|         sql[7] = """ | ||||
|                 CREATE TABLE IF NOT EXISTS parent ( | ||||
|                 userid integer PRIMARY KEY, | ||||
|                 FOREIGN KEY(userid) REFERENCES user(id) | ||||
|                 );"""; | ||||
|         sql[8] = """ | ||||
|                 CREATE TABLE IF NOT EXISTS parent_child ( | ||||
|                 id integer PRIMARY KEY, | ||||
|                 parentuserid integer, | ||||
|                 childid integer, | ||||
|                 FOREIGN KEY(parentuserid) REFERENCES parent(userid), | ||||
|                 FOREIGN KEY(childid) REFERENCES child(id) | ||||
|                 );"""; | ||||
|         sql[9] = """ | ||||
|                 CREATE TABLE IF NOT EXISTS child_allergy ( | ||||
|                 id integer PRIMARY KEY, | ||||
|                 childid integer, | ||||
|                 allergyid integer, | ||||
|                 severityid integer, | ||||
|                 FOREIGN KEY(childid) REFERENCES child(id), | ||||
|                 FOREIGN KEY(allergyid) REFERENCES allergy(id), | ||||
|                 FOREIGN KEY(severityid) REFERENCES severity(id) | ||||
|                 );"""; | ||||
|         sql[10] = """ | ||||
|                 CREATE TABLE IF NOT EXISTS food ( | ||||
|                 id integer PRIMARY KEY, | ||||
|                 name text, | ||||
|                 description text, | ||||
|                 isdessert integer, | ||||
|                 food_typeid integer, | ||||
|                 FOREIGN KEY(food_typeid) REFERENCES food_type(id) | ||||
|                 );"""; | ||||
|         sql[11] = """ | ||||
|                 CREATE TABLE IF NOT EXISTS food_plan ( | ||||
|                 id integer PRIMARY KEY, | ||||
|                 date text, | ||||
|                 food1 integer, | ||||
|                 food2 integer, | ||||
|                 dessert1 integer, | ||||
|                 dessert2 integer, | ||||
|                 FOREIGN KEY(food1) REFERENCES food(id), | ||||
|                 FOREIGN KEY(food2) REFERENCES food(id), | ||||
|                 FOREIGN KEY(dessert1) REFERENCES food(id), | ||||
|                 FOREIGN KEY(dessert2) REFERENCES food(id) | ||||
|                 );"""; | ||||
|         sql[12] = """ | ||||
|                 CREATE TABLE IF NOT EXISTS food_restrictions ( | ||||
|                 id integer PRIMARY KEY, | ||||
|                 foodid integer, | ||||
|                 allergyid integer, | ||||
|                 FOREIGN KEY(foodid) REFERENCES food(id), | ||||
|                 FOREIGN KEY(allergyid) REFERENCES allergy(id) | ||||
|                 );"""; | ||||
|         sql[13] = """ | ||||
|                 CREATE TABLE IF NOT EXISTS food_selection ( | ||||
|                 id integer PRIMARY KEY, | ||||
|                 childid integer, | ||||
|                 food_planid integer, | ||||
|                 selection integer, | ||||
|                 FOREIGN KEY(childid) REFERENCES child(id), | ||||
|                 FOREIGN KEY(food_planid) REFERENCES food_plan(id) | ||||
|                 );"""; | ||||
|         try(Connection conn = connect(); Statement stmt = conn.createStatement()){ | ||||
|             for(int i = 0; i < sql.length; i++){ | ||||
|                 stmt.execute(sql[i]); | ||||
|             } | ||||
|         } catch (SQLException e) { | ||||
|             e.printStackTrace(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     protected static void fillSampleDb(){ | ||||
|         List<String> sqls = new ArrayList<>(); | ||||
|         sqls.add(""" | ||||
|                 INSERT OR IGNORE INTO food_type (id,name) | ||||
|                 VALUES ('1','Vegan');"""); | ||||
|         sqls.add(""" | ||||
|                 INSERT OR IGNORE INTO food_type (id,name) | ||||
|                 VALUES ('2','Vegetarisch');"""); | ||||
|         sqls.add(""" | ||||
|                 INSERT OR IGNORE INTO food_type (id,name) | ||||
|                 VALUES ('3','Fleischhaltig');"""); | ||||
|         sqls.add(""" | ||||
|                 INSERT OR IGNORE INTO allergy (id,name) | ||||
|                 VALUES('1','Eier');"""); | ||||
|         sqls.add(""" | ||||
|                 INSERT OR IGNORE INTO allergy (id,name) | ||||
|                 VALUES('2','Soja');"""); | ||||
|         sqls.add(""" | ||||
|                 INSERT OR IGNORE INTO allergy (id,name) | ||||
|                 VALUES('3','Milch');"""); | ||||
|         sqls.add(""" | ||||
|                 INSERT OR IGNORE INTO allergy (id,name) | ||||
|                 VALUES('4','Erdnüsse');"""); | ||||
|         sqls.add(""" | ||||
|                 INSERT OR IGNORE INTO allergy (id,name) | ||||
|                 VALUES('5','Weichtiere');"""); | ||||
|         sqls.add(""" | ||||
|                 INSERT OR IGNORE INTO allergy (id,name) | ||||
|                 VALUES('6','Krebstiere');"""); | ||||
|         sqls.add(""" | ||||
|                 INSERT OR IGNORE INTO allergy (id,name) | ||||
|                 VALUES('7','Getreide');"""); | ||||
|         sqls.add(""" | ||||
|                 INSERT OR IGNORE INTO allergy (id,name) | ||||
|                 VALUES('8','Senf');"""); | ||||
|         sqls.add(""" | ||||
|                 INSERT OR IGNORE INTO allergy (id,name) | ||||
|                 VALUES('9','Sesam');"""); | ||||
|         sqls.add(""" | ||||
|                 INSERT OR IGNORE INTO allergy (id,name) | ||||
|                 VALUES('10','Schwefeldioxid und Sulfit');"""); | ||||
|         sqls.add(""" | ||||
|                 INSERT OR IGNORE INTO allergy (id,name) | ||||
|                 VALUES('11','Nüsse');"""); | ||||
|         sqls.add(""" | ||||
|                 INSERT OR IGNORE INTO allergy (id,name) | ||||
|                 VALUES('12','Sellerie');"""); | ||||
|         sqls.add(""" | ||||
|                 INSERT OR IGNORE INTO allergy (id,name) | ||||
|                 VALUES('13','Fische');"""); | ||||
|         sqls.add(""" | ||||
|                 INSERT OR IGNORE INTO allergy (id,name) | ||||
|                 VALUES('14','Lupinen');"""); | ||||
|         sqls.add(""" | ||||
|                 INSERT OR IGNORE INTO allergy (id,name) | ||||
|                 VALUES('15','Nitrit-Pökelsalz');"""); | ||||
|         sqls.add(""" | ||||
|                 INSERT OR IGNORE INTO allergy (id,name) | ||||
|                 VALUES('16','Phosphat');"""); | ||||
|         sqls.add(""" | ||||
|                 INSERT OR IGNORE INTO allergy (id,name) | ||||
|                 VALUES('17','Nitrat');"""); | ||||
|         sqls.add(""" | ||||
|                 INSERT OR IGNORE INTO allergy (id,name) | ||||
|                 VALUES('18','Antioxidationsmittel');"""); | ||||
|         sqls.add(""" | ||||
|                 INSERT OR IGNORE INTO allergy (id,name) | ||||
|                 VALUES('19','Farbstoff');"""); | ||||
|         sqls.add(""" | ||||
|                 INSERT OR IGNORE INTO allergy (id,name) | ||||
|                 VALUES('20','Geschmacksverstärker');"""); | ||||
|         sqls.add(""" | ||||
|                 INSERT OR IGNORE INTO allergy (id,name) | ||||
|                 VALUES('21','Süßungsmittel');"""); | ||||
|         sqls.add(""" | ||||
|                 INSERT OR IGNORE INTO allergy (id,name) | ||||
|                 VALUES('22','Konservierungsstoff');"""); | ||||
|         try(Connection conn = connect(); Statement stmt = conn.createStatement()){ | ||||
|             for (String sql : sqls) { | ||||
|                 stmt.execute(sql); | ||||
|             } | ||||
|         }catch (SQLException e){ | ||||
|             e.printStackTrace(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     protected static boolean insert(String table, String header, String values){ | ||||
|         try (Connection conn = connect(); Statement stmt = conn.createStatement()){ | ||||
|             String sql = "INSERT OR IGNORE INTO " + table + " (" + header + ") VALUES(" + values + ");"; | ||||
|             stmt.execute(sql); | ||||
|         } catch (SQLException e) { | ||||
|             return false; | ||||
|         } | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|  | ||||
|     protected static void printSampleQuery(){ | ||||
|         String sql = """ | ||||
|                 SELECT * FROM food_type WHERE id > ?;"""; | ||||
|         String sql1 = """ | ||||
|                 SELECT * FROM allergy WHERE id > ?;"""; | ||||
|         try(Connection conn = connect()){ | ||||
|             PreparedStatement pstmt = conn.prepareStatement(sql); | ||||
|             PreparedStatement pstmt1 = conn.prepareStatement(sql1); | ||||
|             pstmt.setInt(1,0); | ||||
|             ResultSet rs = pstmt.executeQuery(); | ||||
|             System.out.println("food_type"); | ||||
|             while (rs.next()){ | ||||
|                 System.out.println("ID: " + rs.getInt("id") + ", Name: " + rs.getString("name")); | ||||
|             } | ||||
|             System.out.println("allergy"); | ||||
|             pstmt1.setInt(1,0); | ||||
|             rs = pstmt1.executeQuery(); | ||||
|             while (rs.next()){ | ||||
|                 System.out.println("ID: " + rs.getInt("id") + ", Name: " + rs.getString("name")); | ||||
|             } | ||||
|         }catch (SQLException e){ | ||||
|             e.printStackTrace(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     protected static void deleteSample(){ | ||||
|         String sql = """ | ||||
|                 DELETE FROM user WHERE id = ?;"""; | ||||
|         try(Connection conn = connect();PreparedStatement pstmt = conn.prepareStatement(sql)){ | ||||
|             pstmt.setInt(1,1); | ||||
|             pstmt.executeUpdate(); | ||||
|         }catch (SQLException e){ | ||||
|             e.printStackTrace(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /*        String sql = """ | ||||
|                 CREATE TABLE IF NOT EXISTS user ( | ||||
|                 id integer PRIMARY KEY, | ||||
|                 name text);"""; | ||||
|         String sql2 = "SELECT * FROM user WHERE id > ?"; | ||||
|         String sql3 = "INSERT INTO user (id,name) VALUES (1,'test1')"; | ||||
|         try(Connection conn = connect(); | ||||
|             Statement stmt = conn.createStatement()){ | ||||
|             stmt.execute(sql); | ||||
|             stmt.execute(sql3); | ||||
|             PreparedStatement pstmt = conn.prepareStatement(sql2); | ||||
|             pstmt.setInt(1,0); | ||||
|             ResultSet rs = pstmt.executeQuery(); | ||||
|             while (rs.next()){ | ||||
|                 System.out.println(rs.getInt("id")); | ||||
|             } | ||||
|         }catch (SQLException e){ | ||||
|             e.printStackTrace(); | ||||
|             return; | ||||
|         }   */ | ||||
| } | ||||
| @@ -6,10 +6,8 @@ import javafx.scene.Scene; | ||||
| import javafx.stage.Stage; | ||||
|  | ||||
| import java.io.IOException; | ||||
| import java.sql.*; | ||||
|  | ||||
| public class HelloApplication extends Application { | ||||
|     private static final String dbLocation = "jdbc:sqlite:"+HelloApplication.class.getResource("database/database.db"); | ||||
|     @Override | ||||
|     public void start(Stage stage) throws IOException { | ||||
|         FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource("hello-view.fxml")); | ||||
| @@ -20,36 +18,11 @@ public class HelloApplication extends Application { | ||||
|     } | ||||
|  | ||||
|     public static void main(String[] args) { | ||||
| /*        String sql = """ | ||||
|                 CREATE TABLE IF NOT EXISTS user ( | ||||
|                 id integer PRIMARY KEY, | ||||
|                 name text);"""; | ||||
|         String sql2 = "SELECT * FROM user WHERE id > ?"; | ||||
|         String sql3 = "INSERT INTO user (id,name) VALUES (1,'test1')"; | ||||
|         try(Connection conn = connect(); | ||||
|             Statement stmt = conn.createStatement()){ | ||||
|             stmt.execute(sql); | ||||
|             stmt.execute(sql3); | ||||
|             PreparedStatement pstmt = conn.prepareStatement(sql2); | ||||
|             pstmt.setInt(1,0); | ||||
|             ResultSet rs = pstmt.executeQuery(); | ||||
|             while (rs.next()){ | ||||
|                 System.out.println(rs.getInt("id")); | ||||
|             } | ||||
|         }catch (SQLException e){ | ||||
|             e.printStackTrace(); | ||||
|             return; | ||||
|         }   */ | ||||
|         Database.init(); | ||||
|         Database.createDb(); | ||||
|         Database.fillSampleDb(); | ||||
|         Database.printSampleQuery(); | ||||
|         //Database.deleteSample(); | ||||
|         launch(); | ||||
|     } | ||||
|  | ||||
|     private static Connection connect(){ | ||||
|         Connection conn = null; | ||||
|         try{ | ||||
|             conn = DriverManager.getConnection(dbLocation); | ||||
|         }catch (SQLException e){ | ||||
|             e.printStackTrace(); | ||||
|         } | ||||
|         return conn; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user