Half finished, loads of queries implemented
This commit is contained in:
parent
2a829509fc
commit
c789c24af3
4 changed files with 103 additions and 27 deletions
|
@ -1,6 +1,7 @@
|
|||
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.
|
||||
|
@ -97,14 +98,97 @@ 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";
|
||||
|
||||
/* --- 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);
|
||||
}
|
||||
|
||||
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 --- */
|
||||
}
|
||||
|
|
|
@ -92,14 +92,11 @@ public class BookingTab {
|
|||
}
|
||||
|
||||
private void fillNamesList() {
|
||||
System.out.println("Filling names list");
|
||||
List<String> allmovies = new ArrayList<String>();
|
||||
|
||||
// query the database via db
|
||||
/* --- TODO: replace with own code --- */
|
||||
allmovies.add("Pulp Fiction");
|
||||
allmovies.add("The Big Lebowski");
|
||||
allmovies.add("Whiplash");
|
||||
/* --- END TODO --- */
|
||||
|
||||
// Spooky functional voodoo
|
||||
db.getAllShows().stream().map(Show::getTitle).distinct().forEach(allmovies::add);
|
||||
|
||||
moviesList.setItems(FXCollections.observableList(allmovies));
|
||||
// remove any selection
|
||||
|
@ -109,11 +106,7 @@ public class BookingTab {
|
|||
private void fillDatesList(String m) {
|
||||
List<String> alldates = new ArrayList<String>();
|
||||
if(m!=null) {
|
||||
// query the database via db
|
||||
/* --- TODO: replace with own code --- */
|
||||
alldates.add("2016-02-01");
|
||||
alldates.add("2016-01-15");
|
||||
/* --- END TODO --- */
|
||||
db.getDatesForMovie(m).forEach(alldates::add);
|
||||
}
|
||||
datesList.setItems(FXCollections.observableList(alldates));
|
||||
// remove any selection
|
||||
|
|
|
@ -31,22 +31,21 @@ public class LoginTab {
|
|||
} else {
|
||||
String uname = username.getText();
|
||||
|
||||
/* --- TODO: add code to query the database credentials --- */
|
||||
// could be if(!db.login(uname)) alert...
|
||||
// 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;
|
||||
}
|
||||
|
||||
// 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("Sign in user "+uname);
|
||||
actiontarget.setText(String.format("User %s logged in.", uname));
|
||||
|
||||
// inform booking tab of user change
|
||||
bookingTabCtrl.userChanged();
|
||||
|
|
|
@ -34,9 +34,9 @@ root {
|
|||
display: block;
|
||||
}
|
||||
|
||||
.root {
|
||||
/* .root {
|
||||
-fx-background-image: url("background.jpg");
|
||||
}
|
||||
} */
|
||||
|
||||
.label {
|
||||
-fx-font-size: 12px;
|
||||
|
|
Loading…
Reference in a new issue