Merged the two branches, DB separated
[RRRRHHHH_Code] / ruralHouses / src / gui / listOfBookingRequestsGUI.java
index 7495777..423ea4d 100644 (file)
@@ -1,9 +1,13 @@
 package gui;
 
+import java.awt.Color;
+import java.awt.Component;
 import java.awt.Font;
 import java.awt.Rectangle;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.rmi.Naming;
+import java.rmi.RemoteException;
 import java.util.Enumeration;
 import java.util.Vector;
 
@@ -14,13 +18,14 @@ import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JTable;
 import javax.swing.border.EmptyBorder;
+import javax.swing.table.DefaultTableCellRenderer;
 import javax.swing.table.DefaultTableModel;
 
-import businessLogic.AdminManager;
-import businessLogic.HouseManager;
-import businessLogic.HouseManagerInterface;
-import domain.Administrator;
-import domain.RuralHouse;
+import common.BookingInterface;
+
+import configuration.___IntNames;
+import domain.Booking;
+import domain.Offer;
 
 public class listOfBookingRequestsGUI extends JFrame {
 
@@ -30,16 +35,20 @@ public class listOfBookingRequestsGUI extends JFrame {
        private static final long serialVersionUID = 1L;
        private JPanel contentPane;
        private JTable table;
+       private Offer off;
+       private BookingInterface bookM = null;
        private DefaultTableModel tableModel;
-       private AdminManager am = new AdminManager();
-       private Vector<RuralHouse> houses;
-       /**
+       private Vector<Booking> bookings = new Vector<Booking>();
+
+       /**
         * Create the frame.
         */
-       public listOfBookingRequestsGUI() {
-               setTitle("Adding requests");
+       public listOfBookingRequestsGUI(Offer of) {
+               setTitle("Adding requests");
+               this.off = of;
+
                try {
-                       this.houses= am.getAdditionRequests();
+
                        init();
                } catch (Exception e) {
                        e.printStackTrace();
@@ -47,87 +56,142 @@ public class listOfBookingRequestsGUI extends JFrame {
        }
 
        private void init() throws Exception {
-               setBounds(100, 100, 600, 450);
+               setBounds(100, 100, 600, 500);
                contentPane = new JPanel();
                contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
                setContentPane(contentPane);
                contentPane.setLayout(null);
 
+               this.bookings = this.off.getBookings();
                JLabel lblNewLabel = new JLabel();
                lblNewLabel.setFont(new Font("Tahoma", Font.PLAIN, 27));
                lblNewLabel.setBounds(23, 41, 536, 33);
                contentPane.add(lblNewLabel);
-               if (houses.isEmpty())
-                       lblNewLabel.setText("There are not houses to be added");
-               else
-                       lblNewLabel.setText("List of houses to be added:");
                JScrollPane scrollPane = new JScrollPane();
                scrollPane.setBounds(new Rectangle(45, 305, 320, 116));
                scrollPane.setBounds(23, 113, 536, 271);
                contentPane.add(scrollPane);
 
                table = new JTable() {
-               private static final long serialVersionUID = 1L;
+                       private static final long serialVersionUID = 1L;
 
-               public boolean isCellEditable(int row, int column) {                
-                       return false;               
-               };
-           };
+                       public boolean isCellEditable(int row, int column) {
+                               return false;
+                       };
+               };
                scrollPane.setViewportView(table);
-               tableModel = new DefaultTableModel(null, new String[] {
-                               "House Name", "Bedrooms", "Kitchens", "Baths", "Parkings",
-                               "Livings" });
-               
-               //Maybe there is a better way to avoid interaction.
-               //table.setEnabled(false);
+               tableModel = new DefaultTableModel(null,
+                               new String[] { "Booking Number", "Booking Date", "Name",
+                                               "E-mail", "Telephone" });
+
                table.setModel(tableModel);
-               
-               JButton btnNewButton = new JButton("Confirm Addition");
+
+               JButton btnNewButton = new JButton("Confirm Booking");
                btnNewButton.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
-                               if (table.getRowCount()!=0 && table.getSelectedRow() != -1) {
-                                       HouseManagerInterface hm = new HouseManager();
-                                       RuralHouse rh = houses.get(table.getSelectedRow());
-                                       //TODO when the house is not added show a warning to the user. Method below returns a boolean stating that.
-                                       hm.registerNewHouse(rh);
-                                       am.removeHouseAdditionRequests(rh);
-                                       Administrator.saveInstance();
-                                       ((DefaultTableModel)table.getModel()).removeRow(houses.indexOf(rh));
-                                       houses.remove(rh);
+                               try {
+                                       bookM = (BookingInterface) Naming
+                                                       .lookup(___IntNames.BookingManager);
+                               } catch (Exception e1) {
+                                       System.out
+                                                       .println("Error accessing remote authentication: "
+                                                                       + e1.toString());
+                               }
+                               if (table.getRowCount() != 0 && table.getSelectedRow() != -1) {
+                                       if (table.getRowCount() != 0
+                                                       && table.getSelectedRow() != -1) {
+                                               Booking book = bookings.get(table.getSelectedRow());
+                                               try {
+                                                       bookM.acceptBooking(book);
+                                               } catch (RemoteException e1) {
+                                                       e1.printStackTrace();
+                                               }
+                                               contentPane.setVisible(false);
+
+                                       }
+
                                }
                        }
                });
-               btnNewButton.setBounds(88, 396, 169, 25);
+               btnNewButton.setBounds(33, 396, 169, 25);
                contentPane.add(btnNewButton);
-               
-               JButton btnDenyAddition = new JButton("Deny Addition");
+
+               JButton btnDenyAddition = new JButton("Deny Booking");
                btnDenyAddition.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent arg0) {
-                               if (table.getRowCount()!=0 && table.getSelectedRow() != -1) {
-                                       RuralHouse rh = houses.get(table.getSelectedRow());
-                                       am.removeHouseAdditionRequests(rh);
-                                       Administrator.saveInstance();
-                                       ((DefaultTableModel)table.getModel()).removeRow(houses.indexOf(rh));
-                                       houses.remove(rh);
+                               try {
+                                       bookM = (BookingInterface) Naming
+                                                       .lookup(___IntNames.BookingManager);
+                               } catch (Exception e1) {
+                                       System.out
+                                                       .println("Error accessing remote authentication: "
+                                                                       + e1.toString());
+                               }
+                               if (table.getRowCount() != 0 && table.getSelectedRow() != -1) {
+                                       Booking book = bookings.get(table.getSelectedRow());
+                                       try {
+                                               bookM.denyBooking(book);
+                                       } catch (RemoteException e) {
+                                               e.printStackTrace();
+                                       }
+                                       ((DefaultTableModel) table.getModel()).removeRow(table
+                                                       .getSelectedRow());
+                                       bookings.remove(book);
+
                                }
                        }
                });
-               btnDenyAddition.setBounds(300, 396, 169, 25);
-               contentPane.add(btnDenyAddition);
-               Enumeration<RuralHouse> en = houses.elements();
-               RuralHouse rh;
+               if (bookings.isEmpty())
+                       lblNewLabel
+                                       .setText("There are not bookings to be confirmed or denied");
+               else {
+                       lblNewLabel.setText("List of bookings:");
+                       if (this.bookings.get(0).getOffer().isBooked()) {
+                               btnDenyAddition.setEnabled(false);
+                               btnNewButton.setEnabled(false);
+                       }
+               }
                
+               btnDenyAddition.setBounds(390, 395, 169, 25);
+               contentPane.add(btnDenyAddition);
+
+               Enumeration<Booking> en = this.bookings.elements();
+               Booking book;
                while (en.hasMoreElements()) {
-                       rh = en.nextElement();
+                       book = en.nextElement();
                        Vector<Object> row = new Vector<Object>();
-                       row.add(rh.getHouseName());
-                       row.add(rh.getFeatures().getnRooms());
-                       row.add(rh.getFeatures().getnKitchens());
-                       row.add(rh.getFeatures().getnBaths());
-                       row.add(rh.getFeatures().getnParkings());
-                       row.add(rh.getFeatures().getnLivings());
+                       row.add(book.getBookNumber());
+                       row.add(book.getBookDate());
+                       row.add(book.getClient().getName());
+                       row.add(book.getClient().getMailAccount());
+                       row.add(book.getClient().getTelephone());
                        tableModel.addRow(row);
                }
+               table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
+                       /**
+                        * 
+                        */
+                       private static final long serialVersionUID = 1L;
 
+                       @Override
+                       public Component getTableCellRendererComponent(JTable table,
+                                       Object value, boolean isSelected, boolean hasFocus,
+                                       int row, int col) {
+
+                               super.getTableCellRendererComponent(table, value, isSelected,
+                                               hasFocus, row, col);
+
+                               if (!bookings.get(row).getOffer().isBooked()) {
+                                       setBackground(Color.RED);
+                                       setForeground(Color.BLACK);
+                               } else {
+                                       setBackground(Color.GREEN);
+                                       setForeground(Color.BLACK);
+                               }
+
+                               return this;
+                       }
+               });
        }
+
 }