4 import java.rmi.RemoteException;
6 import java.util.Vector;
7 //import java.util.Enumeration;
8 //import java.util.Vector;
10 import businessLogic.BookingManager;
14 import configuration.Config;
16 import exceptions.OfferCanNotBeBooked;
18 public class DB4oManager {
20 private static ObjectContainer db;
21 private static DB4oManager theDB4oManager = new DB4oManager();
26 private DB4oManager() {
27 Config c = Config.getInstance();
28 String dataBaseOpenMode = c.getDataBaseOpenMode();
29 DB4oManager.openDatabase(dataBaseOpenMode);
35 public static void openDatabase(String mode) {
36 Config c = Config.getInstance();
37 String db4oFileName = c.getDb4oFilename();
38 if (mode.compareTo("open") == 0) {
39 db = Db4o.openFile(Db4o.newConfiguration(), db4oFileName);
40 db.ext().configure().updateDepth(5);
42 } else if (mode.compareTo("initialize") == 0) {
44 new File(db4oFileName).delete();
45 db = Db4o.openFile(Db4o.newConfiguration(), db4oFileName);
46 db.ext().configure().updateDepth(5);
47 Owner jon = new Owner("Jon");
48 Owner alfredo = new Owner("Alfredo");
49 jon.addRuralHouse(1, "Ezkioko etxea", "Ezkio", 3, 3, 3, 3, 3);
50 jon.addRuralHouse(2, "Eskiatzeko etxea", "Jaca", 4, 4, 4, 4, 4);
51 jon.setBankAccount("1349 5677 21 2133567777");
52 alfredo.addRuralHouse(3, "Casa del abuelo", "Pitillas", 5, 5,
54 alfredo.addRuralHouse(4, "Murgia", 6, 6, 6, 6, 6);
55 alfredo.setBankAccount("4144 0087 23 9700002133");
56 Account jonAcc = new Account("userJon", "passJon", jon);
57 Account alfredoAcc = new Account("userAlfredo", "passAlfredo",
64 System.out.println("DataBase Initialized");
75 public static ObjectContainer getContainer() {
82 public void storeRuralHouses(RuralHouse rh) {
83 DB4oManager.openDatabase("open");
84 ObjectContainer db = DB4oManager.getContainer();
94 * This method finds all existing owners
97 public Vector<Owner> getOwners() throws RemoteException, Exception {
98 DB4oManager.openDatabase("open");
99 ObjectContainer db = DB4oManager.getContainer();
102 Owner proto = new Owner(null, null);
103 ObjectSet<Owner> result = db.queryByExample(proto);
104 Vector<Owner> owners = new Vector<Owner>();
105 while (result.hasNext())
106 owners.add((Owner) result.next());
117 * @throws RemoteException
120 public Vector<Account> getAccount(String usr, String pwd)
121 throws RemoteException, Exception {
122 DB4oManager.openDatabase("open");
123 ObjectContainer db = DB4oManager.getContainer();
126 Account proto = new Account(usr, pwd, new Owner(null, null));
127 ObjectSet<Account> result = db.queryByExample(proto);
128 Vector<Account> accounts = new Vector<Account>();
129 while (result.hasNext())
130 accounts.add((Account) result.next());
139 * @throws RemoteException
142 public Vector<RuralHouse> getAllRuralHouses() throws RemoteException,
144 DB4oManager.openDatabase("open");
145 ObjectContainer db = DB4oManager.getContainer();
147 RuralHouse proto = new RuralHouse(0, null, null, null, 0, 0, 0, 0,
149 ObjectSet<RuralHouse> result = db.queryByExample(proto);
150 Vector<RuralHouse> ruralHouses = new Vector<RuralHouse>();
151 while (result.hasNext())
152 ruralHouses.add((RuralHouse) result.next());
160 * This method creates an offer with a house number, first day, last day and
161 * price precondition: There are no overlapping offers
164 * number, start day, last day and price
167 public Offer createOffer(RuralHouse ruralHouse, Date firstDay,
168 Date lastDay, float price) throws RemoteException, Exception {
169 DB4oManager.openDatabase("open");
170 ObjectContainer db = DB4oManager.getContainer();
173 RuralHouse proto = new RuralHouse(ruralHouse.getHouseNumber(),
174 null, ruralHouse.getDescription(), ruralHouse.getTown(), 0,
176 ObjectSet<RuralHouse> result = db.queryByExample(proto);
177 RuralHouse rh = (RuralHouse) result.next();
178 o = rh.createOffer(firstDay, lastDay, price);
191 public RuralHouse getRuralHouse(RuralHouse rh) {
193 DB4oManager.openDatabase("open");
195 ObjectContainer db = DB4oManager.getContainer();
196 RuralHouse proto = new RuralHouse(rh.getHouseNumber(), null,
197 rh.getDescription(), rh.getTown(), 0, 0, 0, 0, 0);
198 ObjectSet<RuralHouse> result = db.queryByExample(proto);
199 return rh = (RuralHouse) result.next();
200 } catch (Exception exc) {
201 exc.printStackTrace();
210 * @param clientTelephoneNumber
212 * @throws OfferCanNotBeBooked
214 public Booking createBooking(Offer offer, String clientTelephoneNumber)
215 throws OfferCanNotBeBooked {
216 DB4oManager.openDatabase("open");
220 b = offer.createBook(clientTelephoneNumber);
226 } catch (Exception exc) {
227 exc.printStackTrace();
235 * This method returns the instance of the DB4oManager class
237 * @return the db4o manager
239 public static DB4oManager getInstance() {
240 return theDB4oManager;