Advertisement
Guest User

Untitled

a guest
May 18th, 2017
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 27.72 KB | None | 0 0
  1. // to compile this program you need to include hb15.zip
  2. // in the CLASSPATH environment variable
  3.  
  4. // We need to import the java.sql package to use JDBC
  5. import java.sql.*;
  6. import java.util.Vector;
  7.  
  8. // for reading from the command line
  9. import java.io.*;
  10.  
  11. // for the login window
  12. import javax.swing.*;
  13. import java.awt.*;
  14. import java.awt.event.*;
  15.  
  16. // for Format.printf() and Parameters.add()
  17. import com.braju.format.*;
  18.  
  19. /* 1) cheapest Ticket
  20. 2) AND AND
  21. 3) isAdmin changed to 7
  22. 4) show the Flight_No
  23. 5) Name and Password for reservation
  24. 6) Query execution: ";" needed?
  25. 7) Price in Ticket must be added.  === is this added in the tables yet?
  26. 9) Column count for the Bottom function is wrong. */
  27.  
  28. /*
  29.  * This class implements a graphical login window and a simple text
  30.  * interface for interacting with the branch table
  31.  */
  32. public class testtickles implements ActionListener
  33. {
  34.     // command line reader
  35.     private BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  36.  
  37.     private Connection con;
  38.  
  39.     // user is allowed 3 login attempts
  40.     private int loginAttempts = 0;
  41.  
  42.     // components of the login window
  43.     private JTextField usernameField;
  44.     private JPasswordField passwordField;
  45.     private JFrame mainFrame;
  46.  
  47.  
  48.     /*
  49.      * constructs login window and loads JDBC driver
  50.      */
  51.     public testtickles()
  52.     {
  53.         mainFrame = new JFrame("User Login");
  54.  
  55.         JLabel usernameLabel = new JLabel("Enter username: ");
  56.         JLabel passwordLabel = new JLabel("Enter password: ");
  57.  
  58.         usernameField = new JTextField(10);
  59.         passwordField = new JPasswordField(10);
  60.         passwordField.setEchoChar('*');
  61.  
  62.         JButton loginButton = new JButton("Log In");
  63.  
  64.         JPanel contentPane = new JPanel();
  65.         mainFrame.setContentPane(contentPane);
  66.  
  67.  
  68.         // layout components using the GridBag layout manager
  69.  
  70.         GridBagLayout gb = new GridBagLayout();
  71.         GridBagConstraints c = new GridBagConstraints();
  72.  
  73.         contentPane.setLayout(gb);
  74.         contentPane.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
  75.  
  76.         // place the username label
  77.         c.gridwidth = GridBagConstraints.RELATIVE;
  78.         c.insets = new Insets(10, 10, 5, 0);
  79.         gb.setConstraints(usernameLabel, c);
  80.         contentPane.add(usernameLabel);
  81.  
  82.         // place the text field for the username
  83.         c.gridwidth = GridBagConstraints.REMAINDER;
  84.         c.insets = new Insets(10, 0, 5, 10);
  85.         gb.setConstraints(usernameField, c);
  86.         contentPane.add(usernameField);
  87.  
  88.         // place password label
  89.         c.gridwidth = GridBagConstraints.RELATIVE;
  90.         c.insets = new Insets(0, 10, 10, 0);
  91.         gb.setConstraints(passwordLabel, c);
  92.         contentPane.add(passwordLabel);
  93.  
  94.         // place the password field
  95.         c.gridwidth = GridBagConstraints.REMAINDER;
  96.         c.insets = new Insets(0, 0, 10, 10);
  97.         gb.setConstraints(passwordField, c);
  98.         contentPane.add(passwordField);
  99.  
  100.         // place the login button
  101.         c.gridwidth = GridBagConstraints.REMAINDER;
  102.         c.insets = new Insets(5, 10, 10, 10);
  103.         c.anchor = GridBagConstraints.CENTER;
  104.         gb.setConstraints(loginButton, c);
  105.         contentPane.add(loginButton);
  106.  
  107.         // register password field and OK button with action event handler
  108.         passwordField.addActionListener(this);
  109.         loginButton.addActionListener(this);
  110.  
  111.         // anonymous inner class for closing the window
  112.         mainFrame.addWindowListener(new WindowAdapter()
  113.         {
  114.             public void windowClosing(WindowEvent e)
  115.             {
  116.                 System.exit(0);
  117.             }
  118.         });
  119.  
  120.         // size the window to obtain a best fit for the components
  121.         mainFrame.pack();
  122.  
  123.         // center the frame
  124.         Dimension d = mainFrame.getToolkit().getScreenSize();
  125.         Rectangle r = mainFrame.getBounds();
  126.         mainFrame.setLocation( (d.width - r.width)/2, (d.height - r.height)/2 );
  127.  
  128.         // make the window visible
  129.         mainFrame.setVisible(true);
  130.  
  131.         // place the cursor in the text field for the username
  132.         usernameField.requestFocus();
  133.  
  134.         try
  135.         {
  136.             // Load the Oracle JDBC driver
  137.             DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
  138.         }
  139.         catch (SQLException ex)
  140.         {
  141.             System.out.println("Message: " + ex.getMessage());
  142.             System.exit(-1);
  143.         }
  144.     }
  145.  
  146.  
  147.     /*
  148.      * connects to Oracle database named ug using user supplied username and password
  149.      */
  150.     private boolean connect(String username, String password)
  151.     {
  152.         //      String connectURL = "jdbc:oracle:thin:@dbhost.ugrad.cs.ubc.ca:1521:ug";
  153.         String connectURL = "jdbc:oracle:thin:@localhost:1521:ug";
  154.  
  155.         try
  156.         {
  157.             con = DriverManager.getConnection(connectURL,username,password);
  158.  
  159.             System.out.println("\nConnected to Oracle!");
  160.             return true;
  161.         }
  162.         catch (SQLException ex)
  163.         {
  164.             System.out.println("Message: " + ex.getMessage());
  165.             return false;
  166.         }
  167.     }
  168.  
  169.  
  170.     /*
  171.      * event handler for login window
  172.      */
  173.     public void actionPerformed(ActionEvent e)
  174.     {
  175.         if ( connect(usernameField.getText(), String.valueOf(passwordField.getPassword())) )
  176.         {
  177.             // if the username and password are valid,
  178.             // remove the login window and display a text menu
  179.             mainFrame.dispose();
  180.             showMenu();    
  181.         }
  182.         else
  183.         {
  184.             loginAttempts++;
  185.  
  186.             if (loginAttempts >= 3)
  187.             {
  188.                 mainFrame.dispose();
  189.                 System.exit(-1);
  190.             }
  191.             else
  192.             {
  193.                 // clear the password
  194.                 passwordField.setText("");
  195.             }
  196.         }            
  197.  
  198.     }
  199.  
  200.  
  201.     /*
  202.      * displays simple text interface
  203.      */
  204.     private void showMenu()
  205.     {
  206.         int choice;
  207.         boolean quit;
  208.  
  209.         quit = false;
  210.  
  211.         try
  212.         {
  213.             // disable auto commit mode
  214.             con.setAutoCommit(false);
  215.  
  216.             while (!quit)
  217.             {
  218.                 System.out.print("\n\nPlease choose one of the following: \n");
  219.                 System.out.print("1.  Insert Person\n");
  220.                 System.out.print("2.  Delete Person\n");
  221.                 System.out.print("3.  Update Person\n");
  222.                 System.out.print("4.  showReservations\n");
  223.                 System.out.print("5. insertReservation\n");
  224.                 System.out.print("6.  Quit\n>> ");
  225.  
  226.                 choice = Integer.parseInt(in.readLine());
  227.  
  228.                 System.out.println(" ");
  229.  
  230.                 switch(choice)
  231.                 {
  232.  
  233.  
  234.                 }
  235.             }
  236.  
  237.             con.close();
  238.             in.close();
  239.             System.out.println("\nGood Bye!\n\n");
  240.             System.exit(0);
  241.         }
  242.         catch (IOException e)
  243.         {
  244.             System.out.println("IOException!");
  245.  
  246.             try
  247.             {
  248.                 con.close();
  249.                 System.exit(-1);
  250.             }
  251.             catch (SQLException ex)
  252.             {
  253.                 System.out.println("Message: " + ex.getMessage());
  254.             }
  255.         }
  256.         catch (SQLException ex)
  257.         {
  258.             System.out.println("Message: " + ex.getMessage());
  259.         }
  260.     }
  261.  
  262.     /* Deleting a Ticket actually sets the Ticket's Canceled status to True (1).
  263.      *
  264.      */
  265.     private void deleteTicket(String Ticket_ID) {
  266.  
  267.         PreparedStatement  psDeleteTicket;
  268.         try
  269.         {          
  270.             psDeleteTicket = con.prepareStatement("UPDATE Ticket T SET T.Cancelled= "+1+" WHERE T.TicketID= "+Ticket_ID);
  271.             psDeleteTicket.executeUpdate();        
  272.             con.commit();
  273.             psDeleteTicket.close();
  274.         }
  275.         catch (SQLException ex)
  276.         {
  277.             System.out.println("Message: " + ex.getMessage());
  278.  
  279.             try
  280.             {
  281.                 con.rollback();
  282.             }
  283.             catch (SQLException ex2)
  284.             {
  285.                 System.out.println("Message: " + ex2.getMessage());
  286.                 System.exit(-1);
  287.             }
  288.         }
  289.     }
  290.  
  291.     /*Find the Number of Empty Seats Remaining of a Particular Class on a Particular Flight
  292.     SELECT  COUNT(Seat.Seat_No)
  293.     FROM        Seat
  294.     WHERE   Seat.Flight_No = 102 AND Seat.IsBusinessClass = 1 AND Seat.IsTaken = 0 */
  295.  
  296.     private int emptySeatsonFlight(int Flight_No, int isBusinessClass){
  297.         int SeatsRemaining = 0;
  298.  
  299.         Statement stmt;
  300.         ResultSet rs;
  301.         try
  302.         {
  303.  
  304.             stmt = con.createStatement();
  305.             rs = stmt.executeQuery("SELECT COUNT(Seat.Seat_No) FROM Seat WHERE Seat.Flight_No = "+Flight_No+" (AND isBusinessClass = "+ isBusinessClass +" AND Seat.IsTaken = 0");
  306.  
  307.             ResultSetMetaData rsmd1 = rs.getMetaData();
  308.             SeatsRemaining=Integer.parseInt(rs.getString(1));  
  309.             return SeatsRemaining;
  310.  
  311.  
  312.         }
  313.         catch (SQLException ex)
  314.         {
  315.             System.out.println("Message: " + ex.getMessage());
  316.  
  317.             try
  318.             {
  319.                 con.rollback();
  320.             }
  321.             catch (SQLException ex2)
  322.             {
  323.                 System.out.println("Message: " + ex2.getMessage());
  324.                 System.exit(-1);
  325.             }
  326.         }
  327.         return SeatsRemaining;
  328.     }
  329.  
  330.  
  331.     /*Returns the a tableData object of all the flights that satisfies the criteria  given.*/
  332.     private tableData queryFlights(
  333.             String DepartureAirport,
  334.             String DeptFromTimeStamp, String DeptToTimeStamp,
  335.             String ArrivalAirport, String ArriveFromTimeStamp, String ArriveToTimeStamp, // else do query 1
  336.             int SortByPrice,    // If this is 1, do query 2
  337.             int BusinessClassQuery, // If this is 1, do query 3
  338.             int EconomyClassQuery, // If this is 1, do query 4
  339.             int CheapestTicketQuery,
  340.             int ExpensiveTicketQuery) throws SQLException{ // If this is 1, do query 5
  341.  
  342.         Vector<String> FlightsResult = new Vector<String>();
  343.         Vector<String> FlightsResultSortByPrice = new Vector<String>();
  344.         Vector<String> FlightsResultBusiness = new Vector<String>();
  345.         Vector<String> FlightsResultEconomy = new Vector<String>();
  346.         Vector<String> FlightsResultCheapest = new Vector<String>();
  347.         Vector<String> FlightsResultExpensive = new Vector<String>();
  348.  
  349.         Statement stmt1;
  350.         Statement stmt2;
  351.         Statement stmt3;
  352.         Statement stmt4;
  353.         Statement stmt5;
  354.         Statement stmt6;
  355.  
  356.         ResultSet rs1;
  357.         ResultSet rs2;
  358.         ResultSet rs3;
  359.         ResultSet rs4;
  360.         ResultSet rs5;
  361.         ResultSet rs6;
  362.  
  363.         int columnCount_1;
  364.         int columnCount_2;
  365.         int columnCount_3;
  366.         int columnCount_4;
  367.         int columnCount_5;
  368.         int columnCount_6;
  369.  
  370.         int rowCount1 = 0;
  371.         int rowCount2 =0;
  372.         int rowCount3 =0;
  373.         int rowCount4 =0;
  374.         int rowCount5 =0;
  375.         int rowCount6 =0;
  376.  
  377.         String[] tableHeader1;
  378.         String[] tableHeader2;
  379.         String[] tableHeader3;
  380.         String[] tableHeader4;
  381.         String[] tableHeader5;
  382.         String[] tableHeader6;
  383.  
  384.  
  385.         stmt1 = con.createStatement();
  386.         stmt2 = con.createStatement();
  387.         stmt3 = con.createStatement();
  388.         stmt4 = con.createStatement();
  389.         stmt5 = con.createStatement();
  390.         stmt6 = con.createStatement();
  391.  
  392.         /*QuickSort*/
  393.         rs1 = stmt1.executeQuery("SELECT fa.Flight_No, fd.Depart_Timestamp, fd. Airport_ID, fa.Arrive_Timestamp, fa.Airport_ID, DISTINCT t.ticket_price, s.IsBusinessClass "+
  394.                 "FROM Ticket t, TicketForSeat ts, Seat s, FlightDeparture fd, FlightArrival fa "+ // From
  395.                 "WHERE t.Ticket_ID = ts.Ticket_ID " +   // Where
  396.                 "AND ts.Seat_No = s.Seat_No AND " +
  397.                 "s.Flight_No = fd.Flight_No AND " +
  398.                 "s.Flight_No = fa.Flight_No AND " +
  399.                 "fd.Airport_ID = "+DepartureAirport+" AND" +
  400.                 "fa.Airport_ID = "+ArrivalAirport+" AND"+
  401.                 "fa.Arrive_Timestamp > "+ ArriveFromTimeStamp+" AND"+
  402.                 "fa.Arrive_Timestamp < "+ArriveToTimeStamp+" AND"+
  403.                 "fd.Depart_Timestamp  >"+DeptFromTimeStamp+" AND"+
  404.                 "fd.Depart_Timestamp < "+DeptToTimeStamp+" AND"+
  405.         " s.IsTaken = 0");
  406.  
  407.         /*Sort by Price */
  408.         rs2 = stmt2.executeQuery(" SELECT fa.Flight_No, fd.Depart_Timestamp, fd. Airport_ID, fa.Arrive_Timestamp, fa.Airport_ID, DISTINCT t.ticket_price, s.IsBusinessClass "+
  409.                 "FROM Ticket t, TicketForSeat ts, Seat s, FlightDeparture fd, FlightArrival fa"+ // From
  410.                 "WHERE t.Ticket_ID = ts.Ticket_ID " +   // Where
  411.                 "AND ts.Seat_No = s.Seat_No AND" +
  412.                 "s.Flight_No = fd.Flight_No AND " +
  413.                 "s.Flight_No = fa.Flight_No AND" +
  414.                 "fd.Airport_ID = "+DepartureAirport+" AND" +
  415.                 "fa.Airport_ID = "+ArrivalAirport+" AND "+
  416.                 "fa.Arrive_Timestamp > "+ ArriveFromTimeStamp+" AND "+
  417.                 "fa.Arrive_Timestamp < "+ArriveToTimeStamp+" AND "+
  418.                 "fd.Depart_Timestamp  > "+DeptFromTimeStamp+" AND "+
  419.                 "fd.Depart_Timestamp < "+DeptToTimeStamp+" AND "+
  420.         "s.IsTaken = 0 SORT BY t.ticket_price ");
  421.  
  422.         /*Business Class Only */
  423.         rs3 = stmt3.executeQuery("SELECT fa.Flight_No, fd.Depart_Timestamp, fd. Airport_ID, fa.Arrive_Timestamp, fa.Airport_ID, DISTINCT t.ticket_price, s.IsBusinessClass"+
  424.                 "FROM Ticket t, TicketForSeat ts, Seat s, FlightDeparture fd, FlightArrival fa"+ // From
  425.                 "WHERE t.Ticket_ID = ts.Ticket_ID " +   // Where
  426.                 "AND ts.Seat_No = s.Seat_No AND" +
  427.                 "s.Flight_No = fd.Flight_No AND " +
  428.                 "s.Flight_No = fa.Flight_No AND" +
  429.                 "fd.Airport_ID = "+DepartureAirport+" AND" +
  430.                 "fa.Airport_ID = "+ArrivalAirport+" AND"+
  431.                 "fa.Arrive_Timestamp > "+ ArriveFromTimeStamp+" AND "+
  432.                 "fa.Arrive_Timestamp < "+ArriveToTimeStamp+" AND "+
  433.                 "fd.Depart_Timestamp  >"+DeptFromTimeStamp+" AND "+
  434.                 "fd.Depart_Timestamp < "+DeptToTimeStamp+" AND "+
  435.         "s.IsTaken = 0 AND s.IsBusinessClass = 1 SORT BY t.ticket_price ");
  436.  
  437.         /*Economy Class Only */
  438.         rs4 = stmt4.executeQuery("SELECT fa.Flight_No, fd.Depart_Timestamp, fd. Airport_ID, fa.Arrive_Timestamp, fa.Airport_ID, DISTINCT t.ticket_price, s.IsBusinessClass"+
  439.                 "FROM Ticket t, TicketForSeat ts, Seat s, FlightDeparture fd, FlightArrival fa"+ // From
  440.                 "WHERE t.Ticket_ID = ts.Ticket_ID " +   // Where
  441.                 "AND ts.Seat_No = s.Seat_No AND" +
  442.                 "s.Flight_No = fd.Flight_No AND " +
  443.                 "s.Flight_No = fa.Flight_No AND" +
  444.                 "fd.Airport_ID = "+DepartureAirport+" AND" +
  445.                 "fa.Airport_ID = "+ArrivalAirport+" AND"+
  446.                 "fa.Arrive_Timestamp > "+ ArriveFromTimeStamp+" AND "+
  447.                 "fa.Arrive_Timestamp < "+ArriveToTimeStamp+" AND "+
  448.                 "fd.Depart_Timestamp  >"+DeptFromTimeStamp+" AND "+
  449.                 "fd.Depart_Timestamp < "+DeptToTimeStamp+" AND "+
  450.         "s.IsTaken = 0 AND s.IsBusinessClass = 0 SORT BY t.ticket_price ");
  451.  
  452.         /*Cheapest Ticket out of All Flights*/
  453.         rs5 = stmt5.executeQuery("SELECT fa.Flight_No, fd.Depart_Timestamp, fd.Airport_ID, fa.Arrive_Timestamp, fa.Airport_ID, DISTINCT t.ticket_price, s.IsBusinessClass" +
  454.         "WHERE Ticket_Price = (SELECT min(ticket_price) FROM ticket");
  455.        
  456.         /*Expensive Ticket out of All Flights*/
  457.         rs6 = stmt5.executeQuery("SELECT fa.Flight_No, fd.Depart_Timestamp, fd.Airport_ID, fa.Arrive_Timestamp, fa.Airport_ID, DISTINCT t.ticket_price, s.IsBusinessClass" +
  458.         "WHERE Ticket_Price = (SELECT max(ticket_price) FROM ticket");
  459.  
  460.         ResultSetMetaData rsmd1 = rs1.getMetaData();
  461.         ResultSetMetaData rsmd2 = rs2.getMetaData();
  462.         ResultSetMetaData rsmd3 = rs3.getMetaData();
  463.         ResultSetMetaData rsmd4 = rs4.getMetaData();
  464.         ResultSetMetaData rsmd5 = rs5.getMetaData();
  465.         ResultSetMetaData rsmd6 = rs6.getMetaData();
  466.  
  467.         columnCount_1 = rsmd1.getColumnCount();
  468.         columnCount_2 = rsmd2.getColumnCount();
  469.         columnCount_3 = rsmd3.getColumnCount();
  470.         columnCount_4 = rsmd4.getColumnCount();
  471.         columnCount_5 = rsmd5.getColumnCount();
  472.         columnCount_6 = rsmd6.getColumnCount();
  473.  
  474.         while(rs1.next())
  475.         {
  476.             for(int i=1;i<columnCount_1+1;i++){
  477.                 FlightsResult.add(rs1.getString(i));
  478.                 rowCount1++;
  479.             }
  480.         }
  481.  
  482.         while(rs2.next())
  483.         {
  484.             for(int i=1;i<columnCount_2+1;i++){
  485.                 FlightsResultSortByPrice.add(rs2.getString(i));
  486.                 rowCount2++;
  487.             }
  488.         }
  489.  
  490.         while(rs3.next())
  491.         {
  492.             for(int i=1;i<columnCount_3+1;i++){
  493.                 FlightsResultBusiness.add(rs3.getString(i));
  494.                 rowCount3++;
  495.             }
  496.         }
  497.  
  498.         while(rs4.next())
  499.         {
  500.             for(int i=1;i<columnCount_4+1;i++){
  501.                 FlightsResultEconomy.add(rs4.getString(i));
  502.                 rowCount4++;
  503.             }
  504.         }
  505.  
  506.         while(rs5.next())
  507.         {
  508.             for(int i=1;i<columnCount_5+1;i++){
  509.                 FlightsResultCheapest.add(rs5.getString(i));
  510.                 rowCount5++;
  511.             }
  512.         }
  513.        
  514.         while(rs6.next())
  515.         {
  516.             for(int i=1;i<columnCount_6+1;i++){
  517.                 FlightsResultCheapest.add(rs6.getString(i));
  518.                 rowCount6++;
  519.             }
  520.         }
  521.  
  522.         tableHeader1 = new String[columnCount_1];
  523.         for (int i=0; i<columnCount_1; i++) {tableHeader1[i] = rsmd1.getColumnName(i+1);}
  524.  
  525.         tableHeader2 = new String[columnCount_2];
  526.         for (int i2=0; i2<columnCount_1; i2++) {tableHeader2[i2] = rsmd2.getColumnName(i2+1);}
  527.  
  528.         tableHeader3 = new String[columnCount_3];
  529.         for (int i3=0; i3<columnCount_1; i3++) {tableHeader3[i3] = rsmd3.getColumnName(i3+1);}
  530.  
  531.         tableHeader4 = new String[columnCount_4];
  532.         for (int i4=0; i4<columnCount_1; i4++) {tableHeader4[i4] = rsmd4.getColumnName(i4+1);}
  533.  
  534.         tableHeader5 = new String[columnCount_5];
  535.         for (int i5=0; i5<columnCount_1; i5++) {tableHeader5[i5] = rsmd5.getColumnName(i5+1);}
  536.        
  537.         tableHeader6 = new String[columnCount_5];
  538.         for (int i6=0; i6<columnCount_1; i6++) {tableHeader5[i6] = rsmd5.getColumnName(i6+1);}
  539.  
  540.  
  541.     if(SortByPrice==1){
  542.         tableData FlightsResutSortByPriceData= new tableData(tableHeader2, columnCount_2, rowCount2, FlightsResultSortByPrice);
  543.         return FlightsResutSortByPriceData;
  544.     }
  545.     else if(BusinessClassQuery==1){
  546.         tableData BusinessClassQueryData= new tableData(tableHeader3, columnCount_3, rowCount3, FlightsResultBusiness);
  547.         return BusinessClassQueryData;
  548.     }
  549.     else if(EconomyClassQuery==1){
  550.         tableData EconomyClassData = new tableData(tableHeader4, columnCount_4, rowCount4, FlightsResultEconomy);
  551.         return EconomyClassData;
  552.     }
  553.     else if(CheapestTicketQuery==1){
  554.         tableData CheapestTicketData = new tableData(tableHeader5, columnCount_5, rowCount5, FlightsResultCheapest);
  555.         return CheapestTicketData;
  556.     }
  557.     else if(ExpensiveTicketQuery==1){
  558.         tableData ExpensiveTicketData = new tableData(tableHeader6, columnCount_6, rowCount6, FlightsResultCheapest);
  559.         return ExpensiveTicketData;
  560.     }
  561.     else{
  562.         tableData FlightsResultData= new tableData(tableHeader1, columnCount_1, rowCount1, FlightsResult);
  563.         return FlightsResultData;
  564.     }
  565.  
  566.  
  567. }
  568.  
  569. private void deleteFlight(int Flight_No) {
  570.     PreparedStatement  psDeleteFlight;
  571.     PreparedStatement  psUpdateTickets;
  572.  
  573.     try
  574.     {
  575.         psDeleteFlight = con.prepareStatement("DELETE FROM Flight WHERE Flight_No = "+Flight_No);
  576.  
  577.         psUpdateTickets = con.prepareStatement("UPDATE Ticket T SET T.Cancelled= "+1+"WHERE T.TicketID= (SELECT T2.TicketID"+
  578.                 "FROM Ticket T2, TicketForSeat, Seat, FlightDeparture, FlightArrival"+
  579.                 "WHERE T2.TicketID = TicketForSeat.TicketID AND"+
  580.                 "TicketForSeat.Seat_No = Seat.Seat_No AND TicketForSeat.Flight_No = Seat.Flight_No AND Seat.Flight_No = "+Flight_No+" AND Seat.Flight_No = FlightDeparture.Flight_No AND  Seat.Flight_No = FlightArrival.Flight_No"); //and and
  581.  
  582.         psDeleteFlight.executeUpdate();
  583.         psUpdateTickets.executeUpdate();
  584.  
  585.         con.commit();
  586.         psDeleteFlight.close();
  587.         psUpdateTickets.close();
  588.     }
  589.     catch (SQLException ex)
  590.     {
  591.         System.out.println("Message: " + ex.getMessage());
  592.  
  593.         try
  594.         {
  595.             con.rollback();
  596.         }
  597.         catch (SQLException ex2)
  598.         {
  599.             System.out.println("Message: " + ex2.getMessage());
  600.             System.exit(-1);
  601.         }
  602.     }
  603. }
  604.  
  605. /* SELECT Name, Email, PhoneNum, DOB
  606. FROM Person, TicketForPerson tp, TickerForSeat ts, Seat s
  607. WHERE Person.cid = tp.cid AND tp.ticket_ID = ts.ticket_ID AND ts.seat_no = s.seat_no AND s.isbusinessclass = 1 ;
  608.  */
  609. public tableData firstClassPassengers() throws SQLException{
  610.  
  611.     Vector<String> firstClass = new Vector<String>();
  612.     int columnCount = 0;
  613.     int rowCount=0;
  614.    
  615.     String[] tableHeader;
  616.  
  617.     Statement stmt;
  618.     ResultSet rs;
  619.  
  620.  
  621.     stmt = con.createStatement();
  622.     rs = stmt.executeQuery("SELECT Name, Email,  PhoneNum, DOB " +
  623.             "FROM Person, TicketForPerson tp, TickerForSeat ts, Seat s " +
  624.             "WHERE Person.cid = tp.cid AND tp.ticket_ID = ts.ticket_ID AND ts.seat_no = s.seat_no AND s.isbusinessclass = 1");
  625.  
  626.     ResultSetMetaData rsmd = rs.getMetaData();
  627.     columnCount = rsmd.getColumnCount();
  628.  
  629.     while(rs.next())
  630.     {
  631.         for(int i=1;i<columnCount+1;i++){
  632.             firstClass .add(rs.getString(i));
  633.         }
  634.         rowCount++;
  635.     }
  636.    
  637.     tableHeader = new String[columnCount];
  638.  
  639.     for (int i=0; i<columnCount; i++) {tableHeader[i] = rsmd.getColumnName(i+1);}
  640.    
  641.     tableData firstClassData= new tableData(tableHeader, columnCount, rowCount, firstClass);
  642.     return firstClassData;
  643.  
  644. }
  645.  
  646.  
  647.  
  648.  
  649. private void insertPerson(int CID, String Name, String PhoneNum, String DOB, String Password, String Email, int isAdmin)
  650. {
  651.  
  652.     PreparedStatement  ps;
  653.  
  654.     try
  655.     {
  656.         ps = con.prepareStatement("INSERT INTO Person VALUES (?,?,?,?,?,?,?)");
  657.  
  658.         ps.setInt(1, CID);                                      // This must be ps.setInt      
  659.         ps.setString(2, Name);
  660.         ps.setString(3, PhoneNum);
  661.         ps.setString(4, DOB);
  662.         ps.setString(5, Password);
  663.         ps.setString(6, Email);
  664.         ps.setInt(7, isAdmin);        // changed to 7
  665.  
  666.         ps.executeUpdate();
  667.         con.commit();
  668.  
  669.         ps.close();
  670.     }
  671.     catch (SQLException ex)
  672.     {
  673.         System.out.println("Message: " + ex.getMessage());
  674.         try
  675.         {
  676.             // undo the insert
  677.             con.rollback();
  678.         }
  679.         catch (SQLException ex2)
  680.         {
  681.             System.out.println("Message: " + ex2.getMessage());
  682.             System.exit(-1);
  683.         }
  684.     }
  685. }
  686.  
  687. /*Assuming we know Email, Password, and Flight_No */
  688.  
  689. private void insertReservation(int Ticket_ID, int Email, int Price, int Password, String Payment_date, int Payment_ID, int Seat_No, int Flight_No)
  690. {
  691.  
  692.     PreparedStatement  psNewTicketForPerson;
  693.     PreparedStatement  psNewPaysFor;
  694.     PreparedStatement  psNewTransactTicket;
  695.     PreparedStatement  psNewTicket;
  696.     PreparedStatement  psNewTicketForSeat;
  697.     PreparedStatement  psUpdateSeat;
  698.     Statement stmt;
  699.     ResultSet rs;
  700.  
  701.  
  702.     try
  703.     {
  704.  
  705.         stmt = con.createStatement();
  706.         rs = stmt .executeQuery("SELECT Person.CID FROM Person WHERE Person.Email = "+Email+" AND Person.Password= "+Password);
  707.         int CID =  rs.getInt("CID");    //will this work? its getInt
  708.  
  709.  
  710.         psNewTicketForPerson = con.prepareStatement("INSERT INTO TicketForPerson VALUES (?,?)");
  711.         psNewTicketForPerson.setInt(1, Ticket_ID);  // int
  712.         psNewTicketForPerson.setInt(2, CID);            // int
  713.  
  714.         psNewPaysFor = con.prepareStatement("INSERT INTO PaysFor VALUES (?,?,?)");
  715.         psNewPaysFor.setString(1, Payment_date);    // String
  716.         psNewPaysFor.setInt(2, Payment_ID);             // int
  717.         psNewPaysFor.setInt(3,CID);                             // int
  718.  
  719.         psNewTransactTicket = con.prepareStatement("INSERT INTO TransactTicket VALUES (?,?)");
  720.         psNewTransactTicket.setInt(1,Ticket_ID);
  721.         psNewTransactTicket.setInt(2, Payment_ID);
  722.  
  723.         psNewTicket = con.prepareStatement("INSERT INTO Ticket VALUES (?,?)");
  724.         psNewTicket.setInt(1,Ticket_ID);
  725.         psNewTicket.setInt(1, Price);
  726.  
  727.         psNewTicketForSeat = con.prepareStatement("INSERT INTO TicketForSeat VALUES (?,?,?)");
  728.         psNewTicketForSeat.setInt(1,Ticket_ID);
  729.         psNewTicketForSeat.setInt(2,Seat_No);
  730.         psNewTicketForSeat.setInt(3,Flight_No);
  731.  
  732.         psUpdateSeat = con.prepareStatement("UPDATE Seat S SET S.IsTaken = 1 WHERE S.Seat_No = "+Seat_No+" and S.Flight_No = "+Flight_No);
  733.  
  734.         psNewTicketForPerson.executeUpdate();
  735.         psNewPaysFor.executeUpdate();
  736.         psNewTransactTicket.executeUpdate();
  737.         psNewTicket.executeUpdate();
  738.         psNewTicketForSeat.executeUpdate();
  739.         psUpdateSeat.executeUpdate();
  740.         // commit work
  741.         con.commit();
  742.  
  743.         psNewTicketForPerson.close();
  744.         psNewPaysFor.close();
  745.         psNewTransactTicket.close();
  746.         psNewTicket.close();
  747.         psNewTicketForSeat.close();
  748.         psUpdateSeat.close();
  749.         stmt.close();
  750.  
  751.     }
  752.     catch (SQLException ex)
  753.     {
  754.         System.out.println("Message: " + ex.getMessage());
  755.         try
  756.         {
  757.             // undo the insert
  758.             con.rollback();
  759.  
  760.         }
  761.         catch (SQLException ex2)
  762.         {
  763.             System.out.println("Message: " + ex2.getMessage());
  764.             System.exit(-1);
  765.         }
  766.     }
  767. }
  768.  
  769. private void deletePerson(String Email, String Password)
  770. {
  771.  
  772.     PreparedStatement  psDeletePerson;
  773.  
  774.  
  775.     try
  776.     {
  777.         //psSearchForPerson = con.prepareStatement("SELECT FROM Person WHERE )
  778.         psDeletePerson = con.prepareStatement("DELETE FROM Person WHERE Email = " +Email + " and Password = " +Password);
  779.  
  780.         int rowCount = psDeletePerson.executeUpdate();
  781.  
  782.         if (rowCount == 0)
  783.         {
  784.             System.out.println("\nPerson " + Email + " does not exist!");
  785.         }
  786.  
  787.         con.commit();
  788.  
  789.         psDeletePerson.close();
  790.     }
  791.     catch (SQLException ex)
  792.     {
  793.         System.out.println("Message: " + ex.getMessage());
  794.  
  795.         try
  796.         {
  797.             con.rollback();
  798.         }
  799.         catch (SQLException ex2)
  800.         {
  801.             System.out.println("Message: " + ex2.getMessage());
  802.             System.exit(-1);
  803.         }
  804.     }
  805. }
  806.  
  807.  
  808. /*
  809.  * updates the name of a branch
  810.  */
  811. private void updatePerson(String Name, String OldEmail, String OldPassword, String Email, String Password, String PhoneNum, String DOB)
  812. {
  813.     PreparedStatement ps;
  814.     try
  815.     {
  816.         ps = con.prepareStatement("UPDATE Person P SET P.Name = ?, P.Email = ?, P.Password = ?, P.PhoneNum = ?, P.DOB = ? WHERE P.OldEmail = ? and P.OldPassword = ?");
  817.         ps.setString(1, Name);
  818.         ps.setString(2, Email);
  819.         ps.setString(3, Password);
  820.         ps.setString(4, PhoneNum);
  821.         ps.setString(5, DOB);
  822.         ps.setString(6, OldEmail);
  823.         ps.setString(7, OldPassword);
  824.  
  825.         con.commit();
  826.  
  827.         ps.close();
  828.     }
  829.  
  830.     catch (SQLException ex)
  831.     {
  832.         System.out.println("Message: " + ex.getMessage());
  833.  
  834.         try
  835.         {
  836.             con.rollback();
  837.         }
  838.         catch (SQLException ex2)
  839.         {
  840.             System.out.println("Message: " + ex2.getMessage());
  841.             System.exit(-1);
  842.         }
  843.     }  
  844. }
  845.  
  846.  
  847. /*
  848.  * display information about branches
  849.  */
  850. private tableData showReservations(String Email, String Password) throws SQLException
  851. {
  852.     Vector<String> personvector = new Vector<String>();
  853.     int columnCount=0;
  854.     int rowCount=0;
  855.  
  856.     String FlightDepartsFrom__TimeStamp;
  857.     String FlightArrivesAt__TimeStamp;
  858.     String FlightDepartsFrom__Airport_ID;
  859.     String FlightArrivesAt__Airport_ID;
  860.     String FlightDepartsFrom__Flight_No;
  861.     String Seat__Seat_No;
  862.     String Seat__IsBusinessClass;
  863.     String Ticket__Ticket_ID;
  864.     String PaysFor__Payment_ID;
  865.     String Person__CID;
  866.     String Person__Email;
  867.     String Person__PhoneNum;
  868.     String Person__DOB;
  869.     String Person__Name;
  870.    
  871.     String[] tableHeader;
  872.    
  873.     Statement  stmt;
  874.     ResultSet  rs;
  875.  
  876.     stmt = con.createStatement();
  877.     rs = stmt.executeQuery(
  878.             "SELECT FlightDepartsFrom.TimeStamp, FlightArrivesAt.Timestamp, FlightDepartsFrom.Airport_ID, FlightArrivesAt.Airport_ID, FlightDepartsFrom.Flight_No, Seat.Seat_No, Seat.IsBusinessClass, Ticket.Ticket_ID, PaysFor.Payment_ID, Person.CID, Person.Email, Person.PhoneNum, Person.DOB, Person.Name " +
  879.             "FROM Person, TicketForPerson, PaysFor, TransactTicket, Ticket, TicketForSeat, Seat, FlightDeparture, FlightArrival, Airport " +
  880.             "WHERE Person.Password = "+Password+" AND Person.Email = "+Email+" AND TicketForPerson.CID = Person.CID AND " +
  881.             "TicketForPerson.Ticket_ID = Ticket.Ticket_ID AND " +
  882.             "PaysFor.CID = Person.CID AND " +
  883.             "TransactTicket.Payment_ID = PaysFor.Payment_ID AND " +
  884.             "TransactTicket.Ticket_ID = Ticket.Ticket_ID AND " +
  885.             "TicketForSeat.Ticket_ID = Ticket.Ticket_ID AND " +
  886.             "TicketForSeat.Seat_no = Seat.Seat_no AND " +
  887.             "TicketForSeat.Flight_no = Seat.Flight_no AND " +
  888.             "Seat.Flight_no = FlightDeparture.Flight_no AND " +
  889.             "FlightDeparture.Tail_no = Plane.Tail_no AND " +
  890.             "FlightDeparture.Airport_ID = Airport.Airport_ID AND " +
  891.             "FlightArrival.Tail_no = Plane.Tail_no AND " +
  892.     "FlightArrival.Airport_ID = Airport.Airport_ID");
  893.  
  894.     ResultSetMetaData rsmd = rs.getMetaData();
  895.     Parameters p = new Parameters();
  896.     columnCount = rsmd.getColumnCount();
  897.  
  898.     while(rs.next())
  899.     {
  900.  
  901.         FlightDepartsFrom__TimeStamp = rs.getString("FlightDepartsFrom.TimeStamp");
  902.         FlightArrivesAt__TimeStamp = rs.getString("FlightArrivesAt.TimeStamp");
  903.         FlightDepartsFrom__Airport_ID = rs.getString("FlightDepartsFrom__Airport_ID");
  904.         FlightArrivesAt__Airport_ID = rs.getString("FlightArrivesAt.Airport_ID");
  905.         FlightDepartsFrom__Flight_No = rs.getString("FlightDepartsFrom.Flight_No");
  906.         Seat__Seat_No = rs.getString("Seat.Seat_No");
  907.         Seat__IsBusinessClass = rs.getString("Seat.IsBusinessClass");              
  908.         Ticket__Ticket_ID = rs.getString("Ticket.Ticket_ID");              
  909.         PaysFor__Payment_ID = rs.getString("PaysFor.Payment_ID");              
  910.         Person__CID = rs.getString("Person.CID");              
  911.         Person__Email = rs.getString("Person.Email");
  912.         Person__PhoneNum = rs.getString("Person.PhoneNum");            
  913.         Person__DOB = rs.getString("Person.DOB");              
  914.         Person__Name = rs.getString("Person.Name");
  915.  
  916.         personvector.add(FlightDepartsFrom__TimeStamp);
  917.         personvector.add(FlightArrivesAt__TimeStamp);
  918.         personvector.add(FlightDepartsFrom__Airport_ID);
  919.         personvector.add(FlightArrivesAt__Airport_ID);
  920.         personvector.add(FlightDepartsFrom__Flight_No);
  921.         personvector.add(Seat__Seat_No);
  922.         personvector.add(Seat__IsBusinessClass);
  923.         personvector.add(Ticket__Ticket_ID);
  924.         personvector.add(PaysFor__Payment_ID);
  925.         personvector.add(Person__CID);
  926.         personvector.add(Person__Email);
  927.         personvector.add(Person__PhoneNum);
  928.         personvector.add(Person__DOB);
  929.         personvector.add(Person__Name);
  930.  
  931.         rowCount++;
  932.         stmt.close();
  933.     }
  934.    
  935.     tableHeader = new String[columnCount];
  936.     for (int i=0; i<columnCount; i++) {tableHeader[i] = rsmd.getColumnName(i+1);}
  937.    
  938.     tableData queryFlightsData = new tableData(tableHeader, columnCount, rowCount, personvector);
  939.     return queryFlightsData;
  940.  
  941. }
  942.  
  943.  
  944. public static void main(String args[])
  945. {
  946.     new testtickles();
  947. }
  948. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement