From 2ac167d1035f98ed9c770159c6cb6c1af88ed931 Mon Sep 17 00:00:00 2001 From: Eneko Pinzolas Murua Date: Wed, 15 Apr 2015 15:53:44 +0200 Subject: [PATCH] admin completed --- .../src/businessLogic/LoginManager.java | 6 +- .../businessLogic/LoginManagerInterface.java | 4 +- .../__ApplicationFacadeInterface.java | 56 --------- .../businessLogic/__FacadeImplementation.java | 109 ------------------ ruralHouses/src/dataAccess/DB4oManager.java | 70 ++++++++++- ruralHouses/src/domain/Account.java | 10 +- ruralHouses/src/domain/Administrator.java | 41 ++++++- ruralHouses/src/gui/AdminMenuGUI.java | 4 +- ruralHouses/src/gui/LoginGUI.java | 31 +++-- ruralHouses/src/gui/ModifyHouseGUI.java | 1 + ruralHouses/src/gui/StartWindow.java | 2 + .../src/gui/listOfAdditionRequestsGUI.java | 2 + .../src/gui/listOfRemovalRequestsGUI.java | 2 + 13 files changed, 148 insertions(+), 190 deletions(-) delete mode 100644 ruralHouses/src/businessLogic/__ApplicationFacadeInterface.java delete mode 100644 ruralHouses/src/businessLogic/__FacadeImplementation.java diff --git a/ruralHouses/src/businessLogic/LoginManager.java b/ruralHouses/src/businessLogic/LoginManager.java index 72ce86b..b0aadd8 100644 --- a/ruralHouses/src/businessLogic/LoginManager.java +++ b/ruralHouses/src/businessLogic/LoginManager.java @@ -22,13 +22,13 @@ public class LoginManager implements LoginManagerInterface { } @Override - public Owner checkCredentials(String usr, String pwd) { + public Account checkCredentials(String usr, String pwd) { try { Vector account = dbMngr.getAccount(usr, pwd); if (account.isEmpty()) return null; else - return account.get(0).getOwner(); + return account.get(0); } catch (Exception e) { // TODO Auto-generated catch block @@ -36,5 +36,7 @@ public class LoginManager implements LoginManagerInterface { } return null; } + + } diff --git a/ruralHouses/src/businessLogic/LoginManagerInterface.java b/ruralHouses/src/businessLogic/LoginManagerInterface.java index b3362e0..682b500 100644 --- a/ruralHouses/src/businessLogic/LoginManagerInterface.java +++ b/ruralHouses/src/businessLogic/LoginManagerInterface.java @@ -1,10 +1,12 @@ package businessLogic; +import domain.Account; import domain.Owner; public interface LoginManagerInterface { - public Owner checkCredentials(String usr, String pwd); + public Account checkCredentials(String usr, String pwd); + diff --git a/ruralHouses/src/businessLogic/__ApplicationFacadeInterface.java b/ruralHouses/src/businessLogic/__ApplicationFacadeInterface.java deleted file mode 100644 index edea314..0000000 --- a/ruralHouses/src/businessLogic/__ApplicationFacadeInterface.java +++ /dev/null @@ -1,56 +0,0 @@ -package businessLogic; - -import java.rmi.Remote; -import java.rmi.RemoteException; -import java.sql.Date; -import java.util.Vector; - -import domain.Booking; -import domain.Offer; -import domain.Owner; -import domain.RuralHouse; -import exceptions.OfferCanNotBeBooked; - - -public interface __ApplicationFacadeInterface extends Remote { - - - /** - * This method creates an offer with a house number, first day, last day and price - * - * @param House - * number, start day, last day and price - * @return None - */ - - - Offer createOffer(RuralHouse ruralHouse, Date firstDay, Date lastDay, - float price) throws RemoteException, Exception; - - /** - * This method creates a book with a corresponding parameters - * - * @param First - * day, last day, house number and telephone - * @return a book - */ - Booking createBooking(RuralHouse ruralHouse, Date firstDay, Date lastDay, - String telephoneNumber) throws RemoteException, - OfferCanNotBeBooked; - - - /** - * This method retrieves the existing owners - * - * @return a Set of owners - */ - public Vector getOwners() throws RemoteException, - Exception; - - - - public void close() throws RemoteException; - - - -} \ No newline at end of file diff --git a/ruralHouses/src/businessLogic/__FacadeImplementation.java b/ruralHouses/src/businessLogic/__FacadeImplementation.java deleted file mode 100644 index 9f377d7..0000000 --- a/ruralHouses/src/businessLogic/__FacadeImplementation.java +++ /dev/null @@ -1,109 +0,0 @@ -package businessLogic; - -import java.rmi.RemoteException; -import java.rmi.server.UnicastRemoteObject; -import java.sql.Date; -import java.sql.SQLException; -import java.util.Vector; - -import dataAccess.DB4oManager; -import domain.Booking; -import domain.Offer; -import domain.Owner; -import domain.RuralHouse; -import exceptions.BadDates; -import exceptions.DB4oManagerCreationException; -import exceptions.OfferCanNotBeBooked; -import exceptions.OverlappingOfferExists; - - -public class __FacadeImplementation extends UnicastRemoteObject implements __ApplicationFacadeInterface { - - /** - * - */ - private static final long serialVersionUID = 1L; - - Vector owners; - Vector ruralHouses; - DB4oManager dB4oManager; - - - public __FacadeImplementation() throws RemoteException, InstantiationException, - IllegalAccessException, ClassNotFoundException, SQLException, DB4oManagerCreationException { - owners=null; - ruralHouses=null; - try{ - dB4oManager=DB4oManager.getInstance(); - } - catch (com.db4o.ext.DatabaseFileLockedException e) { - System.out.println("Error in FacadeImplementation: "+e.toString()); - throw e; - } - catch (Exception e) { - System.out.println("Error in FacadeImplementation: "+e.toString()); - throw new DB4oManagerCreationException(); - } - } - - - /** - * This method creates an offer with a house number, first day, last day and price - * - * @param House - * number, start day, last day and price - * @return the created offer, or null, or an exception - */ - public Offer createOffer(RuralHouse ruralHouse, Date firstDay, Date lastDay, - float price) throws OverlappingOfferExists, BadDates, RemoteException, Exception { - if (firstDay.compareTo(lastDay)>=0) throw new BadDates(); - ruralHouses=null; - owners=null; - boolean b = dB4oManager.existsOverlappingOffer(ruralHouse,firstDay,lastDay); // The ruralHouse object in the client may not be updated - if (!b) return dB4oManager.createOffer(ruralHouse,firstDay,lastDay,price); - return null; - } - - /** - * This method creates a book with a corresponding parameters - * - * @param First - * day, last day, house number and telephone - * @return a book - */ - public Booking createBooking(RuralHouse ruralHouse, Date firstDate, Date lastDate, String bookTelephoneNumber) - throws OfferCanNotBeBooked { - ruralHouses=null; - owners=null; - return dB4oManager.createBooking(ruralHouse,firstDate,lastDate,bookTelephoneNumber); - } - - - /** - * This method existing owners - * - */ - public Vector getOwners() throws RemoteException, - Exception { - - if (owners!=null) { System.out.println("Owners obtained directly from business logic layer"); - return owners; } - else return owners=dB4oManager.getOwners(); - } - - public Vector getAllRuralHouses() throws RemoteException, - Exception { - - if (ruralHouses!=null) { System.out.println("RuralHouses obtained directly from business logic layer"); - return ruralHouses; } - else return ruralHouses=dB4oManager.getAllRuralHouses(); - - } - - public void close() throws RemoteException{ - dB4oManager.close(); - - } - - } - diff --git a/ruralHouses/src/dataAccess/DB4oManager.java b/ruralHouses/src/dataAccess/DB4oManager.java index 6e24ece..cb923e1 100644 --- a/ruralHouses/src/dataAccess/DB4oManager.java +++ b/ruralHouses/src/dataAccess/DB4oManager.java @@ -5,6 +5,8 @@ import java.io.File; //import java.util.Vector; import java.rmi.RemoteException; import java.util.Date; +import java.util.LinkedList; +import java.util.List; import java.util.ListIterator; import java.util.Vector; @@ -14,9 +16,11 @@ import com.db4o.ObjectSet; import com.db4o.config.EmbeddedConfiguration; import com.db4o.cs.Db4oClientServer; import com.db4o.cs.config.ClientConfiguration; +import com.db4o.query.Predicate; import configuration.ConfigXML; import domain.Account; +import domain.Administrator; import domain.Booking; import domain.HouseFeatures; import domain.Offer; @@ -124,13 +128,16 @@ public class DB4oManager { Account jonAcc = new Account("userJon", "passJon", jon); Account alfredoAcc = new Account("userAlfredo", "passAlfredo", alfredo); + Account admin = new Account("admin","admin", true); + db.store(Administrator.giveAdmin()); db.store(jon); db.store(alfredo); db.store(jonAcc); db.store(alfredoAcc); + db.store(admin); db.commit(); } finally { - db.close(); + db.close(); } } @@ -230,6 +237,62 @@ public class DB4oManager { } } + + public LinkedList[] getAdminData(){ + if (c.isDatabaseLocal() == false) + openSDB(); + else + openDB(); + LinkedList[] ret = new LinkedList[2]; + + try { + + List admL = db.query(new Predicate(){ + public boolean match(Administrator admin){ + return true; + } + }); + + ret[0] = admL.get(0).getAddRequest(); + ret[1] = admL.get(0).getRemoveRequest(); + return ret; + } + finally { + db.close(); + + } + + } + + public void storeAdmin() { + if (c.isDatabaseLocal() == false) + openSDB(); + else + openDB(); + try { + + List admL = db.query(new Predicate(){ + public boolean match(Administrator admin){ + return true; + } + }); + + admL.get(0).setAddRequest(Administrator.getAddRequest()); + admL.get(0).setRemoveRequest(Administrator.getRemoveRequest()); + db.commit(); + + } + catch(Exception e){ + + } + finally { + db.close(); + } + + + } + + /** * This method creates a book with a corresponding parameters * @@ -247,6 +310,7 @@ public class DB4oManager { openDB(); Booking bok = null; + try { @@ -376,7 +440,7 @@ public class DB4oManager { openDB(); try { - Account proto = new Account(usr, pwd, new Owner(null, null)); + Account proto = new Account(usr, pwd, null); ObjectSet result = db.queryByExample(proto); Vector accounts = new Vector(); while (result.hasNext()) @@ -501,4 +565,6 @@ public class DB4oManager { } } + + } diff --git a/ruralHouses/src/domain/Account.java b/ruralHouses/src/domain/Account.java index 795f739..e0727a1 100644 --- a/ruralHouses/src/domain/Account.java +++ b/ruralHouses/src/domain/Account.java @@ -5,9 +5,9 @@ public class Account { private String username = ""; private String password = ""; private Owner owner; - private Administrator admin; + private boolean admin = false; - public Account(String usr, String pass, Administrator admin) { + public Account(String usr, String pass, boolean admin) { this.username = usr; this.password = pass; this.owner = null; @@ -19,7 +19,7 @@ public class Account { this.username = usr; this.password = pass; this.owner = ow; - this.admin = null; + this.admin = false; } @@ -35,11 +35,11 @@ public class Account { return owner; } - public Administrator getAdmin() { + public boolean getAdmin() { return admin; } - public void setAdmin(Administrator admin) { + public void setAdmin(boolean admin) { this.admin = admin; } diff --git a/ruralHouses/src/domain/Administrator.java b/ruralHouses/src/domain/Administrator.java index 15d5e48..6102430 100644 --- a/ruralHouses/src/domain/Administrator.java +++ b/ruralHouses/src/domain/Administrator.java @@ -2,13 +2,42 @@ package domain; import java.util.LinkedList; +import dataAccess.DB4oManager; + public class Administrator { - private static LinkedList addRequest = new LinkedList(); - private static LinkedList removeRequest = new LinkedList(); + private static LinkedList addRequest; + private static LinkedList removeRequest; private Administrator(){ + addRequest = new LinkedList(); + removeRequest = new LinkedList(); } + public static Administrator giveAdmin(){ + return new Administrator(); + } + + public static void getInstance(){ + try { + DB4oManager db4o = DB4oManager.getInstance(); + LinkedList[] temp = db4o.getAdminData(); + addRequest = temp[0]; + removeRequest = temp[1]; + } catch (Exception e) { + e.printStackTrace(); + } + + } + + public static void saveInstance(){ + try { + DB4oManager.getInstance().storeAdmin(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + public static LinkedList getAddRequest() { return addRequest; } @@ -16,4 +45,12 @@ public class Administrator { return removeRequest; } + public static void setAddRequest(LinkedList addRequest) { + Administrator.addRequest = addRequest; + } + + public static void setRemoveRequest(LinkedList removeRequest) { + Administrator.removeRequest = removeRequest; + } + } diff --git a/ruralHouses/src/gui/AdminMenuGUI.java b/ruralHouses/src/gui/AdminMenuGUI.java index 5408e60..7062a21 100644 --- a/ruralHouses/src/gui/AdminMenuGUI.java +++ b/ruralHouses/src/gui/AdminMenuGUI.java @@ -11,6 +11,8 @@ import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; +import domain.Administrator; + public class AdminMenuGUI extends JFrame { /** @@ -30,7 +32,7 @@ public class AdminMenuGUI extends JFrame { public AdminMenuGUI() { - + Administrator.getInstance(); this.setTitle("Owner Menu"); this.getContentPane().setLayout(null); setBounds(100, 100, 450, 473); diff --git a/ruralHouses/src/gui/LoginGUI.java b/ruralHouses/src/gui/LoginGUI.java index 7e8ec11..db04aff 100644 --- a/ruralHouses/src/gui/LoginGUI.java +++ b/ruralHouses/src/gui/LoginGUI.java @@ -15,8 +15,12 @@ import javax.swing.SwingConstants; import businessLogic.LoginManager; import businessLogic.LoginManagerInterface; +import domain.Account; import domain.Owner; +import javax.swing.JRadioButton; +import javax.swing.ButtonGroup; + public class LoginGUI extends JFrame { private static final long serialVersionUID= 1L; @@ -25,7 +29,7 @@ public class LoginGUI extends JFrame { private JPasswordField passwordField; private LoginManagerInterface loginManager = new LoginManager(); private JLabel loginFeedback; - + private final ButtonGroup buttonGroup = new ButtonGroup(); public LoginGUI() { super(); initialize(); @@ -80,19 +84,22 @@ public class LoginGUI extends JFrame { } private void jButton_ActionPerformed(ActionEvent e){ - Owner owner = loginManager.checkCredentials(usernameField.getText(),new String(passwordField.getPassword())); - if(owner==null){ - loginFeedback.setText("Incorrect username or password"); - }else{ - - + Account acc = loginManager.checkCredentials(usernameField.getText(),new String(passwordField.getPassword())); + if (acc.getAdmin()) { + this.setVisible(false); + Frame a = new AdminMenuGUI(); + a.setVisible(true); + } else { + if(acc.getOwner()==null){ + loginFeedback.setText("Incorrect username or password"); + }else{ this.setVisible(false); - Frame a = new OwnerMenuGUI(owner); - a.setVisible(true); - } - + Frame a = new OwnerMenuGUI(acc.getOwner()); + a.setVisible(true); + } + } + } - } // @jve:decl-index=0:visual-constraint="222,33" diff --git a/ruralHouses/src/gui/ModifyHouseGUI.java b/ruralHouses/src/gui/ModifyHouseGUI.java index 34f94c2..29bc627 100644 --- a/ruralHouses/src/gui/ModifyHouseGUI.java +++ b/ruralHouses/src/gui/ModifyHouseGUI.java @@ -111,6 +111,7 @@ public class ModifyHouseGUI extends JFrame { HouseManager hm = new HouseManager(); hm.removeHouse(rh, owner); + //TODO registernewhouse must check before if the house is created to delete it before creating it. hm.registerNewHouse(rh.getHouseName(), owner, description_f.getText(), diff --git a/ruralHouses/src/gui/StartWindow.java b/ruralHouses/src/gui/StartWindow.java index 288b011..842b818 100644 --- a/ruralHouses/src/gui/StartWindow.java +++ b/ruralHouses/src/gui/StartWindow.java @@ -17,6 +17,7 @@ import javax.swing.SwingConstants; import javax.swing.UIManager; import configuration.ConfigXML; +import domain.Administrator; public class StartWindow extends JFrame { @@ -94,6 +95,7 @@ public class StartWindow extends JFrame { addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { + System.exit(1); } }); diff --git a/ruralHouses/src/gui/listOfAdditionRequestsGUI.java b/ruralHouses/src/gui/listOfAdditionRequestsGUI.java index f1c19cf..dd728fe 100644 --- a/ruralHouses/src/gui/listOfAdditionRequestsGUI.java +++ b/ruralHouses/src/gui/listOfAdditionRequestsGUI.java @@ -19,6 +19,7 @@ import javax.swing.table.DefaultTableModel; import businessLogic.AdminManager; import businessLogic.HouseManager; import businessLogic.HouseManagerInterface; +import domain.Administrator; import domain.RuralHouse; public class listOfAdditionRequestsGUI extends JFrame { @@ -86,6 +87,7 @@ public class listOfAdditionRequestsGUI extends JFrame { hm.registerNewHouse(rh); houses.remove(rh); am.removeHouseAdditionRequests(rh); + Administrator.saveInstance(); } } }); diff --git a/ruralHouses/src/gui/listOfRemovalRequestsGUI.java b/ruralHouses/src/gui/listOfRemovalRequestsGUI.java index acad7bf..da70439 100644 --- a/ruralHouses/src/gui/listOfRemovalRequestsGUI.java +++ b/ruralHouses/src/gui/listOfRemovalRequestsGUI.java @@ -19,6 +19,7 @@ import javax.swing.table.DefaultTableModel; import businessLogic.AdminManager; import businessLogic.HouseManager; import businessLogic.HouseManagerInterface; +import domain.Administrator; import domain.RuralHouse; public class listOfRemovalRequestsGUI extends JFrame { @@ -87,6 +88,7 @@ public class listOfRemovalRequestsGUI extends JFrame { hm.removeHouse(rh, rh.getOwner()); houses.remove(rh); am.removeHouseDeletionRequests(rh); + Administrator.saveInstance(); } } }); -- 2.20.1