4 import java.rmi.RemoteException;
6 import java.util.Vector;
7 //import java.util.Enumeration;
8 //import java.util.Vector;
11 import businessLogic.BookingManager;
15 import configuration.Config;
17 import exceptions.OfferCanNotBeBooked;
19 public class DB4oManager {
21 private static ObjectContainer db;
22 private static DB4oManager theDB4oManager=new DB4oManager();
24 private DB4oManager() {
25 Config c=Config.getInstance();
26 String dataBaseOpenMode=c.getDataBaseOpenMode();
27 DB4oManager.openDatabase(dataBaseOpenMode);
30 public static void openDatabase(String mode) {
31 Config c=Config.getInstance();
32 String db4oFileName=c.getDb4oFilename();
33 if (mode.compareTo("open")==0) {
34 db=Db4o.openFile(Db4o.newConfiguration(), db4oFileName);
35 db.ext().configure().updateDepth(5);
36 System.out.println("DataBase Opened");
38 } else if (mode.compareTo("initialize")==0){
39 new File(db4oFileName).delete();
40 db=Db4o.openFile(Db4o.newConfiguration(), db4oFileName);
41 db.ext().configure().updateDepth(5);
42 Owner jon = new Owner("Jon");
43 Owner alfredo = new Owner("Alfredo");
44 jon.addRuralHouse(1, "Ezkioko etxea","Ezkio");
45 jon.addRuralHouse(2, "Eskiatzeko etxea","Jaca");
46 jon.setBankAccount("1349 5677 21 2133567777");
47 alfredo.addRuralHouse(3, "Casa del abuelo","Pitillas");
48 alfredo.addRuralHouse(4, "Refugio","Murgia");
49 alfredo.setBankAccount("4144 0087 23 9700002133");
50 Account jonAcc = new Account("userJon", "passJon",jon);
51 Account alfredoAcc = new Account("userAlfredo", "passAlfredo",alfredo);
57 System.out.println("DataBase Initialized");
61 public static ObjectContainer getContainer() {
64 public static void close(){
66 System.out.println("DataBase closed");
70 * This method finds all existing owners
73 public Vector<Owner> getOwners() throws RemoteException,
75 ObjectContainer db=DB4oManager.getContainer();
78 Owner proto = new Owner(null,null);
79 ObjectSet result = db.queryByExample(proto);
80 Vector<Owner> owners=new Vector<Owner>();
81 while(result.hasNext())
82 owners.add((Owner)result.next());
89 public Vector<Account> getAccount(String usr, String pwd) throws RemoteException,
91 ObjectContainer db=DB4oManager.getContainer();
94 Account proto = new Account(usr,pwd, new Owner(null,null));
95 ObjectSet result = db.queryByExample(proto);
96 Vector<Account> accounts=new Vector<Account>();
97 while(result.hasNext())
98 accounts.add((Account)result.next());
105 public Vector<RuralHouse> getAllRuralHouses() throws RemoteException,
107 ObjectContainer db=DB4oManager.getContainer();
109 RuralHouse proto = new RuralHouse(0,null,null,null);
110 ObjectSet result = db.queryByExample(proto);
111 Vector<RuralHouse> ruralHouses=new Vector<RuralHouse>();
112 while(result.hasNext())
113 ruralHouses.add((RuralHouse)result.next());
121 * This method creates an offer with a house number, first day, last day and price
122 * precondition: There are no overlapping offers
124 * number, start day, last day and price
127 public Offer createOffer(RuralHouse ruralHouse, Date firstDay, Date lastDay,
128 float price) throws RemoteException, Exception {
129 ObjectContainer db=DB4oManager.getContainer();
130 RuralHouse proto = new RuralHouse(ruralHouse.getHouseNumber(), null,
131 ruralHouse.getDescription(), ruralHouse.getTown());
132 ObjectSet result = db.queryByExample(proto);
133 RuralHouse rh=(RuralHouse)result.next();
134 Offer o=rh.createOffer(firstDay, lastDay, price);
140 public RuralHouse getRuralHouse(RuralHouse rh){
142 ObjectContainer db=DB4oManager.getContainer();
143 RuralHouse proto = new RuralHouse(rh.getHouseNumber(), null,
144 rh.getDescription(), rh.getTown());
145 ObjectSet result = db.queryByExample(proto);
146 return rh=(RuralHouse)result.next();
147 } catch (Exception exc) {
148 exc.printStackTrace();
153 public Booking createBooking(Offer offer, String clientTelephoneNumber)
154 throws OfferCanNotBeBooked {
158 b=offer.createBook(clientTelephoneNumber);
164 } catch (Exception exc) {
165 exc.printStackTrace();
171 * This method returns the instance of the DB4oManager class
173 * @return the db4o manager
175 public static DB4oManager getInstance() {
176 return theDB4oManager;