3 import java.rmi.RemoteException;
4 import java.rmi.server.UnicastRemoteObject;
6 import java.sql.SQLException;
7 import java.util.Vector;
9 import dataAccess.DB4oManager;
10 import domain.Booking;
13 import domain.RuralHouse;
14 import exceptions.BadDates;
15 import exceptions.DB4oManagerCreationException;
16 import exceptions.OfferCanNotBeBooked;
17 import exceptions.OverlappingOfferExists;
20 public class __FacadeImplementation extends UnicastRemoteObject implements __ApplicationFacadeInterface {
25 private static final long serialVersionUID = 1L;
28 Vector<RuralHouse> ruralHouses;
29 DB4oManager dB4oManager;
32 public __FacadeImplementation() throws RemoteException, InstantiationException,
33 IllegalAccessException, ClassNotFoundException, SQLException, DB4oManagerCreationException {
37 dB4oManager=DB4oManager.getInstance();
39 catch (com.db4o.ext.DatabaseFileLockedException e) {
40 System.out.println("Error in FacadeImplementation: "+e.toString());
44 System.out.println("Error in FacadeImplementation: "+e.toString());
45 throw new DB4oManagerCreationException();
51 * This method creates an offer with a house number, first day, last day and price
54 * number, start day, last day and price
55 * @return the created offer, or null, or an exception
57 public Offer createOffer(RuralHouse ruralHouse, Date firstDay, Date lastDay,
58 float price) throws OverlappingOfferExists, BadDates, RemoteException, Exception {
59 if (firstDay.compareTo(lastDay)>=0) throw new BadDates();
62 boolean b = dB4oManager.existsOverlappingOffer(ruralHouse,firstDay,lastDay); // The ruralHouse object in the client may not be updated
63 if (!b) return dB4oManager.createOffer(ruralHouse,firstDay,lastDay,price);
68 * This method creates a book with a corresponding parameters
71 * day, last day, house number and telephone
74 public Booking createBooking(RuralHouse ruralHouse, Date firstDate, Date lastDate, String bookTelephoneNumber)
75 throws OfferCanNotBeBooked {
78 return dB4oManager.createBooking(ruralHouse,firstDate,lastDate,bookTelephoneNumber);
83 * This method existing owners
86 public Vector<Owner> getOwners() throws RemoteException,
89 if (owners!=null) { System.out.println("Owners obtained directly from business logic layer");
91 else return owners=dB4oManager.getOwners();
94 public Vector<RuralHouse> getAllRuralHouses() throws RemoteException,
97 if (ruralHouses!=null) { System.out.println("RuralHouses obtained directly from business logic layer");
99 else return ruralHouses=dB4oManager.getAllRuralHouses();
103 public void close() throws RemoteException{