package businessLogic;
+import java.rmi.RemoteException;
+import java.rmi.server.UnicastRemoteObject;
import java.util.Date;
import java.util.Vector;
+import javax.mail.MessagingException;
+
import com.db4o.ObjectContainer;
import com.db4o.ObjectSet;
+import common.BookingInterface;
import dataAccess.DB4oManager;
import domain.Booking;
-import domain.Offer;
-import domain.Owner;
+import domain.Client;
import domain.RuralHouse;
import exceptions.OfferCanNotBeBooked;
-public final class BookingManager {
+
+public final class BookingManager extends UnicastRemoteObject implements BookingInterface {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
private int bookingNumber = 0;
dataAccess.DB4oManager dbMngr;
private static BookingManager theBookingManager;
- public BookingManager() {
+ public BookingManager() throws RemoteException {
+ super();
try {
this.dbMngr = DB4oManager.getInstance();
} catch (Exception e) {
*
* @return the book number
*/
- public static int getNumber() {
- ObjectContainer db = DB4oManager.getContainer();
- BookingManager b = getInstance();
- b.bookingNumber++;
- db.store(b);
- db.commit();
- return b.bookingNumber;
- }
+ public int getNumber() throws RemoteException{
+ ObjectContainer db=DB4oManager.getContainer();
+ BookingManager b=getInstance();
+ b.bookingNumber++;
+ db.store(b);
+ db.commit();
+ return b.bookingNumber;
+ }
+
/**
* This method returns the instance of the BookingManager class
*
* @return the booking manager
+ * @throws RemoteException
*/
- public static BookingManager getInstance() {
- ObjectContainer db = DB4oManager.getContainer();
- BookingManager b = new BookingManager();
- ObjectSet<BookingManager> result = db.queryByExample(b);
- if (!result.hasNext()) {
- theBookingManager = new BookingManager();
- db.store(theBookingManager);
- db.commit();
- } else
- theBookingManager = (BookingManager) result.next();
+
+ public BookingManager getInstance() throws RemoteException {
+ ObjectContainer db=DB4oManager.getContainer();
+ BookingManager b = new BookingManager();
+ ObjectSet<BookingManager> result = db.queryByExample(b);
+ if (!result.hasNext()){
+ theBookingManager = new BookingManager();
+ db.store(theBookingManager);
+ db.commit();
+ } else theBookingManager=(BookingManager)result.next();
return theBookingManager;
}
- public void removeBooking(Booking B) {
- // TODO
-
+ public void denyBooking(Booking b) throws RemoteException{
+ this.dbMngr.removeBooking(b);
}
- public Vector<Booking> getAllBookings(Owner ow) {
- Vector<Booking> books = new Vector<Booking>();
- for (RuralHouse rh : ow.getRuralHouses()) {
- Vector<Offer> off = rh.getAllOffers();
- for (Offer of : off) {
- System.out.print(of.toString());
- if (of.getBooking() != null) {
-
- books.add(of.getBooking());
- }
- }
+
+ public void acceptBooking(Booking b) throws RemoteException{
+ b.getOffer().setBooked(true);
+ b.getOffer().getBookings().clear();
+ b.getOffer().getBookings().add(b);
+ this.dbMngr.acceptBooking(b.getOffer());
+ try {
+ MailManager.getInstance().Send(b.getClient().getMailAccount(), "Your booking has been accepted","Here should be the bill");
+ } catch (MessagingException e) {
+ e.printStackTrace();
}
- return books;
+
}
-
/**
* This method creates a book with a corresponding parameters
*
* day, last day, house number and telephone
* @return a book
*/
- public Booking createBooking(RuralHouse ruralHouse, Date firstDate,
- Date lastDate, String bookTelephoneNumber)
- throws OfferCanNotBeBooked {
+ public Vector<Booking> createBooking(RuralHouse ruralHouse, Date firstDate,
+ Date lastDate, Client client)
+ throws OfferCanNotBeBooked,RemoteException {
return dbMngr.createBooking(ruralHouse, firstDate, lastDate,
- bookTelephoneNumber);
+ client);
}
}
\ No newline at end of file