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);
37 } 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");
65 public static ObjectContainer getContainer() {
71 * This method finds all existing owners
74 public Vector<Owner> getOwners() throws RemoteException,
76 DB4oManager.openDatabase("open");
77 ObjectContainer db=DB4oManager.getContainer();
80 Owner proto = new Owner(null,null);
81 ObjectSet<Owner> result = db.queryByExample(proto);
82 Vector<Owner> owners=new Vector<Owner>();
83 while(result.hasNext())
84 owners.add((Owner)result.next());
91 public Vector<Account> getAccount(String usr, String pwd) throws RemoteException,
93 DB4oManager.openDatabase("open");
94 ObjectContainer db=DB4oManager.getContainer();
97 Account proto = new Account(usr,pwd, new Owner(null,null));
98 ObjectSet<Account> result = db.queryByExample(proto);
99 Vector<Account> accounts=new Vector<Account>();
100 while(result.hasNext())
101 accounts.add((Account)result.next());
108 public Vector<RuralHouse> getAllRuralHouses() throws RemoteException,
110 DB4oManager.openDatabase("open");
111 ObjectContainer db=DB4oManager.getContainer();
113 RuralHouse proto = new RuralHouse(0,null,null,null);
114 ObjectSet<RuralHouse> result = db.queryByExample(proto);
115 Vector<RuralHouse> ruralHouses=new Vector<RuralHouse>();
116 while(result.hasNext())
117 ruralHouses.add((RuralHouse)result.next());
125 * This method creates an offer with a house number, first day, last day and price
126 * precondition: There are no overlapping offers
128 * number, start day, last day and price
131 public Offer createOffer(RuralHouse ruralHouse, Date firstDay, Date lastDay,
132 float price) throws RemoteException, Exception {
133 DB4oManager.openDatabase("open");
134 ObjectContainer db=DB4oManager.getContainer();
137 RuralHouse proto = new RuralHouse(ruralHouse.getHouseNumber(), null,
138 ruralHouse.getDescription(), ruralHouse.getTown());
139 ObjectSet<RuralHouse> result = db.queryByExample(proto);
140 RuralHouse rh=(RuralHouse)result.next();
141 o=rh.createOffer(firstDay, lastDay, price);
151 public RuralHouse getRuralHouse(RuralHouse rh){
153 DB4oManager.openDatabase("open");
155 ObjectContainer db=DB4oManager.getContainer();
156 RuralHouse proto = new RuralHouse(rh.getHouseNumber(), null,
157 rh.getDescription(), rh.getTown());
158 ObjectSet<RuralHouse> result = db.queryByExample(proto);
159 return rh=(RuralHouse)result.next();
160 } catch (Exception exc) {
161 exc.printStackTrace();
169 public Booking createBooking(Offer offer, String clientTelephoneNumber)
170 throws OfferCanNotBeBooked {
171 DB4oManager.openDatabase("open");
175 b=offer.createBook(clientTelephoneNumber);
181 } catch (Exception exc) {
182 exc.printStackTrace();
191 * This method returns the instance of the DB4oManager class
193 * @return the db4o manager
195 public static DB4oManager getInstance() {
196 return theDB4oManager;