Half finished, loads of queries implemented

This commit is contained in:
Imbus 2024-02-07 08:42:55 +01:00
parent 2a829509fc
commit c789c24af3
4 changed files with 103 additions and 27 deletions

View file

@ -1,6 +1,7 @@
package datamodel; package datamodel;
import java.sql.*; import java.sql.*;
import java.util.ArrayList;
/** /**
* Database is a class that specifies the interface to the * Database is a class that specifies the interface to the
* movie database. Uses JDBC and the MySQL Connector/J driver. * movie database. Uses JDBC and the MySQL Connector/J driver.
@ -97,14 +98,97 @@ public class Database {
return conn != null; return conn != null;
} }
// Gets the Show object with the given title and date
public Show getShowData(String mTitle, String mDate) { public Show getShowData(String mTitle, String mDate) {
Integer mFreeSeats = 42; Integer mFreeSeats = 42;
String mVenue = "Kino 2"; String mVenue = "Kino 2";
/* --- TODO: add code for database query --- */ 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();
}
return new Show(mTitle, mDate, mVenue, mFreeSeats); return new Show(mTitle, mDate, mVenue, mFreeSeats);
} }
public ArrayList<Show> getAllShows() {
ArrayList<Show> shows = new ArrayList<Show>();
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<String> getDatesForMovie(String mTitle) {
ArrayList<String> dates = new ArrayList<String>();
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 --- */ /* --- TODO: insert more own code here --- */
} }

View file

@ -92,14 +92,11 @@ public class BookingTab {
} }
private void fillNamesList() { private void fillNamesList() {
System.out.println("Filling names list");
List<String> allmovies = new ArrayList<String>(); List<String> allmovies = new ArrayList<String>();
// query the database via db // Spooky functional voodoo
/* --- TODO: replace with own code --- */ db.getAllShows().stream().map(Show::getTitle).distinct().forEach(allmovies::add);
allmovies.add("Pulp Fiction");
allmovies.add("The Big Lebowski");
allmovies.add("Whiplash");
/* --- END TODO --- */
moviesList.setItems(FXCollections.observableList(allmovies)); moviesList.setItems(FXCollections.observableList(allmovies));
// remove any selection // remove any selection
@ -109,11 +106,7 @@ public class BookingTab {
private void fillDatesList(String m) { private void fillDatesList(String m) {
List<String> alldates = new ArrayList<String>(); List<String> alldates = new ArrayList<String>();
if(m!=null) { if(m!=null) {
// query the database via db db.getDatesForMovie(m).forEach(alldates::add);
/* --- TODO: replace with own code --- */
alldates.add("2016-02-01");
alldates.add("2016-01-15");
/* --- END TODO --- */
} }
datesList.setItems(FXCollections.observableList(alldates)); datesList.setItems(FXCollections.observableList(alldates));
// remove any selection // remove any selection

View file

@ -31,22 +31,21 @@ public class LoginTab {
} else { } else {
String uname = username.getText(); String uname = username.getText();
/* --- TODO: add code to query the database credentials --- */ // Check if the user exists in the database
// could be if(!db.login(uname)) alert... if(!db.login(uname)) {
Alert alert = new Alert(AlertType.ERROR);
// inform the user that there is no check against the database
Alert alert = new Alert(AlertType.INFORMATION);
alert.setTitle("Login fail"); alert.setTitle("Login fail");
alert.setHeaderText(null); alert.setHeaderText(null);
alert.setContentText("No user check implemented yet!"); alert.setContentText("User "+uname+" not found!");
alert.showAndWait(); alert.showAndWait();
/* --- END TODO --- */ return;
}
// setting the user name // setting the user name
CurrentUser.instance().loginAs(uname); CurrentUser.instance().loginAs(uname);
// inform the user about logging in // inform the user about logging in
actiontarget.setText("Sign in user "+uname); actiontarget.setText(String.format("User %s logged in.", uname));
// inform booking tab of user change // inform booking tab of user change
bookingTabCtrl.userChanged(); bookingTabCtrl.userChanged();

View file

@ -34,9 +34,9 @@ root {
display: block; display: block;
} }
.root { /* .root {
-fx-background-image: url("background.jpg"); -fx-background-image: url("background.jpg");
} } */
.label { .label {
-fx-font-size: 12px; -fx-font-size: 12px;