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 domain.Booking;
19 import domain.RuralHouse;
20 import exceptions.OfferCanNotBeBooked;
22 public class DB4oManager {
24 private static ObjectContainer db;
25 private static DB4oManager theDB4oManager=new DB4oManager();
27 private DB4oManager() {
28 Config c=Config.getInstance();
29 String dataBaseOpenMode=c.getDataBaseOpenMode();
30 DB4oManager.openDatabase(dataBaseOpenMode);
33 public static void openDatabase(String mode) {
34 Config c=Config.getInstance();
35 String db4oFileName=c.getDb4oFilename();
36 if (mode.compareTo("open")==0) {
37 db=Db4o.openFile(Db4o.newConfiguration(), db4oFileName);
38 db.ext().configure().updateDepth(5);
39 System.out.println("DataBase Opened");
41 } else if (mode.compareTo("initialize")==0){
42 new File(db4oFileName).delete();
43 db=Db4o.openFile(Db4o.newConfiguration(), db4oFileName);
44 db.ext().configure().updateDepth(5);
45 Owner jon = new Owner("Jon", "userJon", "passJon");
46 Owner alfredo = new Owner("Alfredo","userAlfredo", "passAlfredo");
47 jon.addRuralHouse(1, "Ezkioko etxea","Ezkio");
48 jon.addRuralHouse(2, "Eskiatzeko etxea","Jaca");
49 jon.setBankAccount("1349 5677 21 2133567777");
50 alfredo.addRuralHouse(3, "Casa del abuelo","Pitillas");
51 alfredo.addRuralHouse(4, "Refugio","Murgia");
52 alfredo.setBankAccount("4144 0087 23 9700002133");
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,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<Owner> getSingleOwner(String usr, String pwd) throws RemoteException,
91 ObjectContainer db=DB4oManager.getContainer();
94 Owner proto = new Owner(null,usr,pwd,null);
95 ObjectSet result = db.queryByExample(proto);
96 Vector<Owner> owners=new Vector<Owner>();
97 while(result.hasNext())
98 owners.add((Owner)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;