diff --git a/src/main/java/datamodel/Database.java b/src/main/java/datamodel/Database.java index 163e336..f619557 100755 --- a/src/main/java/datamodel/Database.java +++ b/src/main/java/datamodel/Database.java @@ -1,7 +1,6 @@ package datamodel; import java.sql.*; -import java.util.ArrayList; /** * Database is a class that specifies the interface to the * movie database. Uses JDBC and the MySQL Connector/J driver. @@ -50,28 +49,6 @@ public class Database { } return true; } - - // Reads a file from the resources folder and returns the content as a string - private String readResourceFile(String fileName) { - String content = ""; - try { - content = new String(getClass().getResourceAsStream(fileName).readAllBytes()); - } catch (Exception e) { - e.printStackTrace(); - } - return content; - } - - public void runMigration() { - // This path needs to start with a / - String migration = readResourceFile("/migration.sql"); - try { - Statement stmt = conn.createStatement(); - stmt.executeUpdate(migration); - } catch (SQLException e) { - e.printStackTrace(); - } - } /** * Close the connection to the database. @@ -98,97 +75,14 @@ public class Database { return conn != null; } - // Gets the Show object with the given title and date public Show getShowData(String mTitle, String mDate) { Integer mFreeSeats = 42; String mVenue = "Kino 2"; - - if(!isConnected()) { - System.err.println("getShowData: no connection to database"); - return null; - } - - try { - Statement stmt = conn.createStatement(); - // ResultSet rs = stmt.executeQuery("SELECT * FROM Showings WHERE title = '" + mTitle + "' AND date = '" + mDate + "'"); - ResultSet rs = stmt.executeQuery("SELECT *, Theaters.name AS theater_name FROM Showings JOIN Movies ON Showings.movie_id = Movies.movie_id JOIN Theaters ON Showings.theater_id = Theaters.theater_id"); - if (rs.next()) { - mFreeSeats = rs.getInt("total_seats"); - mVenue = rs.getString("theater_name"); - } else { - System.err.println("getShowData: no show found"); - return null; - } - } catch (SQLException e) { - e.printStackTrace(); - } + + /* --- TODO: add code for database query --- */ return new Show(mTitle, mDate, mVenue, mFreeSeats); } - public ArrayList getAllShows() { - ArrayList shows = new ArrayList(); - - if(!isConnected()) { - System.err.println("getAllShows: no connection to database"); - return shows; - } - - try { - Statement stmt = conn.createStatement(); - ResultSet rs = stmt.executeQuery("SELECT *, Theaters.name AS theater_name FROM Showings JOIN Movies ON Showings.movie_id = Movies.movie_id JOIN Theaters ON Showings.theater_id = Theaters.theater_id"); - while (rs.next()) { - String mTitle = rs.getString("name"); - String mDate = rs.getString("show_date"); - Integer mFreeSeats = rs.getInt("total_seats"); - String mVenue = rs.getString("theater_name"); - shows.add(new Show(mTitle, mDate, mVenue, mFreeSeats)); - } - } catch (SQLException e) { - e.printStackTrace(); - } - - return shows; - } - - public ArrayList getDatesForMovie(String mTitle) { - ArrayList dates = new ArrayList(); - - if(!isConnected()) { - System.err.println("getDatesForMovie: no connection to database"); - return dates; - } - - try { - Statement stmt = conn.createStatement(); - ResultSet rs = stmt.executeQuery("SELECT show_date FROM Showings JOIN Movies ON Showings.movie_id = Movies.movie_id WHERE name = '" + mTitle + "'"); - while (rs.next()) { - dates.add(rs.getString("show_date")); - } - } catch (SQLException e) { - e.printStackTrace(); - } - - return dates; - } - - public boolean login(String username) { - if(!isConnected()) { - System.err.println("login: no connection to database"); - return false; - } - - try { - Statement stmt = conn.createStatement(); - ResultSet rs = stmt.executeQuery("SELECT * FROM users WHERE username = '" + username + "'"); - if (rs.next()) { - return true; - } - } catch (SQLException e) { - e.printStackTrace(); - } - return false; - } - /* --- TODO: insert more own code here --- */ } diff --git a/src/main/java/gui/BookingTab.java b/src/main/java/gui/BookingTab.java index 276f547..1fd41cc 100755 --- a/src/main/java/gui/BookingTab.java +++ b/src/main/java/gui/BookingTab.java @@ -92,11 +92,14 @@ public class BookingTab { } private void fillNamesList() { - System.out.println("Filling names list"); List allmovies = new ArrayList(); - - // Spooky functional voodoo - db.getAllShows().stream().map(Show::getTitle).distinct().forEach(allmovies::add); + + // query the database via db + /* --- TODO: replace with own code --- */ + allmovies.add("Pulp Fiction"); + allmovies.add("The Big Lebowski"); + allmovies.add("Whiplash"); + /* --- END TODO --- */ moviesList.setItems(FXCollections.observableList(allmovies)); // remove any selection @@ -106,7 +109,11 @@ public class BookingTab { private void fillDatesList(String m) { List alldates = new ArrayList(); if(m!=null) { - db.getDatesForMovie(m).forEach(alldates::add); + // query the database via db + /* --- TODO: replace with own code --- */ + alldates.add("2016-02-01"); + alldates.add("2016-01-15"); + /* --- END TODO --- */ } datesList.setItems(FXCollections.observableList(alldates)); // remove any selection diff --git a/src/main/java/gui/LoginTab.java b/src/main/java/gui/LoginTab.java index 05cbbac..a1da2e7 100755 --- a/src/main/java/gui/LoginTab.java +++ b/src/main/java/gui/LoginTab.java @@ -31,21 +31,22 @@ public class LoginTab { } else { String uname = username.getText(); - // Check if the user exists in the database - if(!db.login(uname)) { - Alert alert = new Alert(AlertType.ERROR); - alert.setTitle("Login fail"); - alert.setHeaderText(null); - alert.setContentText("User "+uname+" not found!"); - alert.showAndWait(); - return; - } + /* --- TODO: add code to query the database credentials --- */ + // could be if(!db.login(uname)) alert... + // inform the user that there is no check against the database + Alert alert = new Alert(AlertType.INFORMATION); + alert.setTitle("Login fail"); + alert.setHeaderText(null); + alert.setContentText("No user check implemented yet!"); + alert.showAndWait(); + /* --- END TODO --- */ + // setting the user name CurrentUser.instance().loginAs(uname); // inform the user about logging in - actiontarget.setText(String.format("User %s logged in.", uname)); + actiontarget.setText("Sign in user "+uname); // inform booking tab of user change bookingTabCtrl.userChanged(); diff --git a/src/main/java/gui/MainApplication.java b/src/main/java/gui/MainApplication.java index 4d77118..d607036 100755 --- a/src/main/java/gui/MainApplication.java +++ b/src/main/java/gui/MainApplication.java @@ -48,7 +48,6 @@ public class MainApplication extends Application { alert.setContentText("Could not connect to the database! Check console for details."); alert.showAndWait(); } - db.runMigration(); } catch(Exception e) { e.printStackTrace(); } diff --git a/src/main/resources/application.css b/src/main/resources/application.css index 70d1304..d21e50b 100755 --- a/src/main/resources/application.css +++ b/src/main/resources/application.css @@ -34,9 +34,9 @@ root { display: block; } -/* .root { +.root { -fx-background-image: url("background.jpg"); -} */ +} .label { -fx-font-size: 12px; diff --git a/src/main/resources/migration.sql b/src/main/resources/migration.sql deleted file mode 100644 index aadf70d..0000000 --- a/src/main/resources/migration.sql +++ /dev/null @@ -1,63 +0,0 @@ -PRAGMA foreign_keys = OFF; - -DROP TABLE IF EXISTS Users; -DROP TABLE IF EXISTS Reservations; -DROP TABLE IF EXISTS Showings; -DROP TABLE IF EXISTS Movies; -DROP TABLE IF EXISTS Theaters; - -PRAGMA foreign_keys = ON; - -CREATE TABLE IF NOT EXISTS Users ( - id INTEGER PRIMARY KEY, - username VARCHAR(50), - address VARCHAR(255), - telephone VARCHAR(20) -); - -CREATE TABLE IF NOT EXISTS Theaters ( - theater_id INTEGER PRIMARY KEY, - name VARCHAR(100) UNIQUE, - total_seats INTEGER -); - -CREATE TABLE IF NOT EXISTS Movies ( - movie_id INTEGER PRIMARY KEY, - name VARCHAR(255) UNIQUE -); - -CREATE TABLE IF NOT EXISTS Showings ( - showing_id INTEGER PRIMARY KEY, - movie_id INTEGER REFERENCES Movies(movie_id), - theater_id INTEGER REFERENCES Theaters(theater_id), - show_date DATE -); - -CREATE TABLE IF NOT EXISTS Reservations ( - reservation_id INTEGER PRIMARY KEY, - username VARCHAR(50) REFERENCES Users(id), - showing_id INTEGER REFERENCES Showings(showing_id), - reservation_number VARCHAR(50) UNIQUE NOT NULL DEFAULT (hex(randomblob(2))) -- 4 characters -); - -INSERT INTO Theaters (name, total_seats) VALUES ('Theater 1', 100); -INSERT INTO Theaters (name, total_seats) VALUES ('Theater 2', 150); - -INSERT INTO Movies (name) VALUES ('Movie 1'); -INSERT INTO Movies (name) VALUES ('Movie 2'); -INSERT INTO Movies (name) VALUES ('Movie 3'); - -INSERT INTO Users (username, address, telephone) VALUES ('user1', 'address1', '1234567890'); -INSERT INTO Users (username, address, telephone) VALUES ('user2', 'address2', '1234567890'); -INSERT INTO Users (username, address, telephone) VALUES ('user3', 'address3', '1234567890'); - -INSERT INTO Showings (movie_id, theater_id, show_date) VALUES (1, 1, '2024-04-01'); -INSERT INTO Showings (movie_id, theater_id, show_date) VALUES (2, 1, '2024-02-24'); -INSERT INTO Showings (movie_id, theater_id, show_date) VALUES (3, 1, '2024-08-12'); -INSERT INTO Showings (movie_id, theater_id, show_date) VALUES (1, 2, '2024-03-04'); -INSERT INTO Showings (movie_id, theater_id, show_date) VALUES (2, 2, '2024-01-10'); - -INSERT INTO Reservations (username, showing_id) VALUES (1, 1); -INSERT INTO Reservations (username, showing_id) VALUES (2, 2); -INSERT INTO Reservations (username, showing_id) VALUES (3, 3); -INSERT INTO Reservations (username, showing_id) VALUES (1, 4); \ No newline at end of file