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... | ||||
| 
 | ||||
|         	// inform the user that there is no check against the database | ||||
| 	        Alert alert = new Alert(AlertType.INFORMATION); | ||||
| 			// 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("No user check implemented yet!"); | ||||
| 		        alert.setContentText("User "+uname+" not found!"); | ||||
| 		        alert.showAndWait(); | ||||
| 	        /* --- END TODO --- */ | ||||
| 				return; | ||||
| 			} | ||||
| 
 | ||||
|             // 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…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Imbus
						Imbus