From be38338a401f4444672a37df208c6125bd679d20 Mon Sep 17 00:00:00 2001 From: camjan Date: Thu, 21 May 2015 00:55:11 +0200 Subject: [PATCH] DB server side improved some problems when showing bookings remain --- .../src/gui/ModifyOfferGUI.java | 1 - .../src/gui/listOfBookingRequestsGUI.java | 45 +++++++++---------- ruralHouses client/src/gui/listOfOffers.java | 28 ++++++++++-- .../src/businessLogic/LoginManager.java | 17 +++---- ruralHouses/src/dataAccess/DB4oManager.java | 22 +++++---- ruralHousesDB/src/dataAccess/DB4oManager.java | 17 +++++++ .../src/dataAccess/DB4oServerManager.java | 7 ++- ruralHousesDB/src/domain/Account.java | 19 +++----- 8 files changed, 95 insertions(+), 61 deletions(-) create mode 100644 ruralHousesDB/src/dataAccess/DB4oManager.java diff --git a/ruralHouses client/src/gui/ModifyOfferGUI.java b/ruralHouses client/src/gui/ModifyOfferGUI.java index 3e7a6c6..1f082d0 100644 --- a/ruralHouses client/src/gui/ModifyOfferGUI.java +++ b/ruralHouses client/src/gui/ModifyOfferGUI.java @@ -151,7 +151,6 @@ public class ModifyOfferGUI extends JFrame { try { vo = om.getRuralHouseOffers((RuralHouse) jComboBox1.getSelectedItem()); } catch (RemoteException e) { - // TODO Auto-generated catch block e.printStackTrace(); } comboBox_o.removeAllItems(); diff --git a/ruralHouses client/src/gui/listOfBookingRequestsGUI.java b/ruralHouses client/src/gui/listOfBookingRequestsGUI.java index ba96f0d..aab2736 100644 --- a/ruralHouses client/src/gui/listOfBookingRequestsGUI.java +++ b/ruralHouses client/src/gui/listOfBookingRequestsGUI.java @@ -62,10 +62,8 @@ public class listOfBookingRequestsGUI extends JFrame { setContentPane(contentPane); contentPane.setLayout(null); - BookingInterface bm = null; - try { - bm = (BookingInterface) Naming + bookM = (BookingInterface) Naming .lookup(___IntNames.BookingManager); } catch (Exception e1) { @@ -73,11 +71,11 @@ public class listOfBookingRequestsGUI extends JFrame { + e1.toString()); } try { - this.bookings = bm.getOffersbookings(this.off); + this.bookings = bookM.getOffersbookings(this.off); } catch (RemoteException e1) { e1.printStackTrace(); } - + JLabel lblNewLabel = new JLabel(); lblNewLabel.setFont(new Font("Tahoma", Font.PLAIN, 27)); lblNewLabel.setBounds(23, 41, 536, 33); @@ -101,17 +99,11 @@ public class listOfBookingRequestsGUI extends JFrame { table.setModel(tableModel); + JButton btnDenyAddition = new JButton("Deny Booking"); JButton btnNewButton = new JButton("Confirm Booking"); btnNewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - 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) { @@ -121,8 +113,19 @@ public class listOfBookingRequestsGUI extends JFrame { } catch (RemoteException e1) { e1.printStackTrace(); } - contentPane.setVisible(false); - + int rows = table.getModel().getRowCount(); + for(int i = rows - 1; i >=0; i--){ + ((DefaultTableModel) table.getModel()).removeRow(i); + } + Vector row = new Vector(); + 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); + btnNewButton.setEnabled(false); + btnDenyAddition.setEnabled(false); } } @@ -131,17 +134,9 @@ public class listOfBookingRequestsGUI extends JFrame { btnNewButton.setBounds(33, 396, 169, 25); contentPane.add(btnNewButton); - JButton btnDenyAddition = new JButton("Deny Booking"); btnDenyAddition.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { - 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 { @@ -166,7 +161,7 @@ public class listOfBookingRequestsGUI extends JFrame { btnNewButton.setEnabled(false); } } - + btnDenyAddition.setBounds(390, 395, 169, 25); contentPane.add(btnDenyAddition); diff --git a/ruralHouses client/src/gui/listOfOffers.java b/ruralHouses client/src/gui/listOfOffers.java index 7d61def..4d065bb 100644 --- a/ruralHouses client/src/gui/listOfOffers.java +++ b/ruralHouses client/src/gui/listOfOffers.java @@ -6,6 +6,8 @@ import java.awt.Font; import java.awt.Rectangle; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.rmi.Naming; +import java.rmi.RemoteException; import java.util.Enumeration; import java.util.Vector; @@ -18,6 +20,10 @@ import javax.swing.border.EmptyBorder; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableModel; +import common.HouseInterface; +import common.OfferInterface; + +import configuration.___IntNames; import domain.Offer; import domain.Owner; import domain.RuralHouse; @@ -56,8 +62,23 @@ public class listOfOffers extends JFrame { setContentPane(contentPane); contentPane.setLayout(null); this.offers = new Vector(); - for (RuralHouse rh: this.owner.getRuralHouses()){ - this.offers.addAll(rh.getAllOffers()); + HouseInterface hm = null; + try { + hm = (HouseInterface) Naming + .lookup(___IntNames.HouseManager); + } catch (Exception e1) { + System.out.println("Error accessing remote authentication: " + + e1.toString()); + } + Vector Hlist = null; + try { + Hlist = hm.getHouses(owner, null, null, 0, 0, 0, 0, 0); + } catch (RemoteException e1) { + e1.printStackTrace(); + } + for (RuralHouse rh: Hlist){ + for(Offer of : rh.getAllOffers()) + this.offers.add(of); } JLabel lblNewLabel = new JLabel(); lblNewLabel.setFont(new Font("Tahoma", Font.PLAIN, 27)); @@ -85,13 +106,12 @@ public class listOfOffers extends JFrame { tableModel = new DefaultTableModel(null, new String[] { "Offer #", "FirstDay", "LastDay", "Price" ,"RuralHouse"}); - // Maybe there is a better way to avoid interaction. - // table.setEnabled(false); table.setModel(tableModel); table.addMouseListener( new MouseAdapter(){ @Override public void mouseClicked(MouseEvent arg0) { int row = table.getSelectedRow(); + System.out.println(row); listOfBookingRequestsGUI feat = new listOfBookingRequestsGUI(offers.get(row)); feat.setVisible(true); } diff --git a/ruralHouses/src/businessLogic/LoginManager.java b/ruralHouses/src/businessLogic/LoginManager.java index f3c4600..97dd009 100644 --- a/ruralHouses/src/businessLogic/LoginManager.java +++ b/ruralHouses/src/businessLogic/LoginManager.java @@ -1,6 +1,5 @@ package businessLogic; - import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; import java.util.Vector; @@ -10,7 +9,6 @@ import common.LoginInterface; import dataAccess.DB4oManager; import domain.Account; - public class LoginManager extends UnicastRemoteObject implements LoginInterface { /** @@ -19,7 +17,7 @@ public class LoginManager extends UnicastRemoteObject implements LoginInterface private static final long serialVersionUID = 1L; DB4oManager dbMngr; - public LoginManager() throws RemoteException { + public LoginManager() throws RemoteException { super(); try { dbMngr = DB4oManager.getInstance(); @@ -30,18 +28,21 @@ public class LoginManager extends UnicastRemoteObject implements LoginInterface @Override public Account checkCredentials(String usr, String pwd) { - Account ac = new Account(SecurityManager.getInstance().calculateHash(usr)); + Account ac = new Account(SecurityManager.getInstance().calculateHash( + usr)); try { Vector account = dbMngr.getAccount(ac); - if (SecurityManager.getInstance().isExpectedPassword(pwd.toCharArray(), account - .get(0).getSalt(), account.get(0).getPassword())) { - + if (account.isEmpty()) + return null; + if (SecurityManager.getInstance().isExpectedPassword( + pwd.toCharArray(), account.get(0).getSalt(), + account.get(0).getPassword())) { + return account.get(0); } return null; } catch (Exception e) { - // TODO Auto-generated catch block e.printStackTrace(); } return null; diff --git a/ruralHouses/src/dataAccess/DB4oManager.java b/ruralHouses/src/dataAccess/DB4oManager.java index fa85cfa..403c916 100644 --- a/ruralHouses/src/dataAccess/DB4oManager.java +++ b/ruralHouses/src/dataAccess/DB4oManager.java @@ -103,18 +103,23 @@ public class DB4oManager { configurationCS.common().activationDepth(c.getActivationDepth()); configurationCS.common().updateDepth(c.getUpdateDepth()); configurationCS.common().objectClass(Owner.class).cascadeOnDelete(true); - configurationCS.common().objectClass(Booking.class).cascadeOnDelete(true); + configurationCS.common().objectClass(Booking.class) + .cascadeOnDelete(true); configurationCS.common().objectClass(RuralHouse.class) .cascadeOnDelete(true); - configurationCS.common().objectClass(Account.class).cascadeOnDelete(true); + configurationCS.common().objectClass(Account.class) + .cascadeOnDelete(true); configurationCS.common().objectClass(Offer.class).cascadeOnDelete(true); configurationCS.common().objectClass(Owner.class).cascadeOnUpdate(true); - configurationCS.common().objectClass(Booking.class).cascadeOnUpdate(true); + configurationCS.common().objectClass(Booking.class) + .cascadeOnUpdate(true); configurationCS.common().objectClass(RuralHouse.class) .cascadeOnUpdate(true); - configurationCS.common().objectClass(Account.class).cascadeOnUpdate(true); + configurationCS.common().objectClass(Account.class) + .cascadeOnUpdate(true); configurationCS.common().objectClass(Offer.class).cascadeOnUpdate(true); - configurationCS.common().objectClass(Account.class).cascadeOnUpdate(true); + configurationCS.common().objectClass(Account.class) + .cascadeOnUpdate(true); db = Db4oClientServer.openClient(configurationCS, c.getDatabaseNode(), c.getDatabasePort(), c.getUser(), c.getPassword()); @@ -345,7 +350,8 @@ public class DB4oManager { RuralHouse rh = (RuralHouse) result.next(); Offer offer; - offer = (Offer)db.queryByExample(new Offer(0, rh, firstDate, lastDate, 0)).get(0); + offer = (Offer) db.queryByExample( + new Offer(0, rh, firstDate, lastDate, 0)).get(0); if (offer != null) { offer.createBooking(theDB4oManagerAux.bookingNumber++, cl); @@ -392,8 +398,6 @@ public class DB4oManager { } } - - public boolean existsOverlappingOffer(RuralHouse rh, Date firstDay, Date lastDay) throws RemoteException, OverlappingOfferExists { @@ -625,7 +629,7 @@ public class DB4oManager { openSDB(); else openDB(); - + try { Offer of = (Offer) db.queryByExample( new Offer(0, o.getRuralHouse(), null, null, 0)).get(0); diff --git a/ruralHousesDB/src/dataAccess/DB4oManager.java b/ruralHousesDB/src/dataAccess/DB4oManager.java new file mode 100644 index 0000000..1c6bdba --- /dev/null +++ b/ruralHousesDB/src/dataAccess/DB4oManager.java @@ -0,0 +1,17 @@ +package dataAccess; + + +public class DB4oManager { + + + class DB4oManagerAux { + int bookingNumber; + int offerNumber; + + DB4oManagerAux(int bookingNumber, int offerNumber) { + this.bookingNumber = bookingNumber; + this.offerNumber = offerNumber; + } + } + +} diff --git a/ruralHousesDB/src/dataAccess/DB4oServerManager.java b/ruralHousesDB/src/dataAccess/DB4oServerManager.java index ea75334..adf3dca 100644 --- a/ruralHousesDB/src/dataAccess/DB4oServerManager.java +++ b/ruralHousesDB/src/dataAccess/DB4oServerManager.java @@ -99,13 +99,18 @@ public class DB4oServerManager extends JDialog { configurationCS.common().activationDepth(c.getActivationDepth()); configurationCS.common().updateDepth(c.getUpdateDepth()); configurationCS.common().objectClass(Owner.class).cascadeOnDelete(true); + configurationCS.common().objectClass(Booking.class).cascadeOnDelete(true); + configurationCS.common().objectClass(RuralHouse.class) + .cascadeOnDelete(true); + configurationCS.common().objectClass(Account.class).cascadeOnDelete(true); + configurationCS.common().objectClass(Offer.class).cascadeOnDelete(true); + configurationCS.common().objectClass(Owner.class).cascadeOnUpdate(true); configurationCS.common().objectClass(Booking.class).cascadeOnUpdate(true); configurationCS.common().objectClass(RuralHouse.class) .cascadeOnUpdate(true); configurationCS.common().objectClass(Account.class).cascadeOnUpdate(true); configurationCS.common().objectClass(Offer.class).cascadeOnUpdate(true); configurationCS.common().objectClass(Account.class).cascadeOnUpdate(true); - server = Db4oClientServer.openServer(configurationCS, c.getDb4oFilename(),c.getDatabasePort()); diff --git a/ruralHousesDB/src/domain/Account.java b/ruralHousesDB/src/domain/Account.java index f401391..385edee 100644 --- a/ruralHousesDB/src/domain/Account.java +++ b/ruralHousesDB/src/domain/Account.java @@ -3,39 +3,34 @@ package domain; import java.io.Serializable; import java.util.Arrays; - public class Account implements Serializable { /** * */ private static final long serialVersionUID = 1L; - private byte[] username; private byte[] password; private byte[] salt; - private Owner owner; private boolean admin = false; - public Account(byte[] usr){ - - + public Account(byte[] usr) { + } - public Account(String usr, String pass, boolean isAdmin) { - + public Account(Owner own) { } - public Account(String usr, String pass, Owner ow) { - + public Account(String usr, String pass, boolean isAdmin) { } + public Account(String usr, String pass, Owner ow) { - + } public byte[] getUsername() { return username; @@ -53,7 +48,6 @@ public class Account implements Serializable { return admin; } - public void setAdmin(boolean admin) { this.admin = admin; } @@ -65,7 +59,6 @@ public class Account implements Serializable { public void setSalt(byte[] salt) { this.salt = salt; } - @Override public boolean equals(Object obj) { -- 2.20.1