3 import java.rmi.RemoteException;
4 import java.rmi.server.UnicastRemoteObject;
6 import java.sql.SQLException;
7 import java.util.Vector;
9 import com.db4o.ObjectContainer;
10 import com.db4o.ObjectSet;
12 import configuration.ConfigXML;
13 import dataAccess.DB4oManager;
14 import domain.Booking;
17 import domain.RuralHouse;
18 import exceptions.BadDates;
19 import exceptions.DB4oManagerCreationException;
20 import exceptions.OfferCanNotBeBooked;
21 import exceptions.OverlappingOfferExists;
24 public class FacadeImplementation extends UnicastRemoteObject implements ApplicationFacadeInterface {
29 private static final long serialVersionUID = 1L;
32 Vector<RuralHouse> ruralHouses;
33 DB4oManager dB4oManager;
36 public FacadeImplementation() throws RemoteException, InstantiationException,
37 IllegalAccessException, ClassNotFoundException, SQLException, DB4oManagerCreationException {
41 dB4oManager=DB4oManager.getInstance();
43 catch (com.db4o.ext.DatabaseFileLockedException e) {
44 System.out.println("Error in FacadeImplementation: "+e.toString());
48 System.out.println("Error in FacadeImplementation: "+e.toString());
49 throw new DB4oManagerCreationException();
55 * This method creates an offer with a house number, first day, last day and price
58 * number, start day, last day and price
59 * @return the created offer, or null, or an exception
61 public Offer createOffer(RuralHouse ruralHouse, Date firstDay, Date lastDay,
62 float price) throws OverlappingOfferExists, BadDates, RemoteException, Exception {
63 if (firstDay.compareTo(lastDay)>=0) throw new BadDates();
66 boolean b = dB4oManager.existsOverlappingOffer(ruralHouse,firstDay,lastDay); // The ruralHouse object in the client may not be updated
67 if (!b) return dB4oManager.createOffer(ruralHouse,firstDay,lastDay,price);
72 * This method creates a book with a corresponding parameters
75 * day, last day, house number and telephone
78 public Booking createBooking(RuralHouse ruralHouse, Date firstDate, Date lastDate, String bookTelephoneNumber)
79 throws OfferCanNotBeBooked {
82 return dB4oManager.createBooking(ruralHouse,firstDate,lastDate,bookTelephoneNumber);
87 * This method existing owners
90 public Vector<Owner> getOwners() throws RemoteException,
93 if (owners!=null) { System.out.println("Owners obtained directly from business logic layer");
95 else return owners=dB4oManager.getOwners();
98 public Vector<RuralHouse> getAllRuralHouses() throws RemoteException,
101 if (ruralHouses!=null) { System.out.println("RuralHouses obtained directly from business logic layer");
102 return ruralHouses; }
103 else return ruralHouses=dB4oManager.getAllRuralHouses();
107 public void close() throws RemoteException{