package businessLogic;
-import java.sql.Date;
+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.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) {
e.printStackTrace();
}
}
-
+
/**
- * This method returns the next Booking number
+ * This method returns the next Booking number
*
* @return the book number
*/
- public static int getNumber(){
+
+ public int getNumber() throws RemoteException{
ObjectContainer db=DB4oManager.getContainer();
BookingManager b=getInstance();
b.bookingNumber++;
}
/**
- * This method returns the instance of the BookingManager class
+ * This method returns the instance of the BookingManager class
*
* @return the booking manager
+ * @throws RemoteException
*/
- public static BookingManager getInstance() {
+
+ public BookingManager getInstance() throws RemoteException {
ObjectContainer db=DB4oManager.getContainer();
BookingManager b = new BookingManager();
- ObjectSet result = db.queryByExample(b);
+ ObjectSet<BookingManager> result = db.queryByExample(b);
if (!result.hasNext()){
theBookingManager = new BookingManager();
db.store(theBookingManager);
} else theBookingManager=(BookingManager)result.next();
return theBookingManager;
}
-
+
+ public void denyBooking(Booking b) throws RemoteException{
+ this.dbMngr.removeBooking(b);
+ }
+
+
+ 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();
+ }
+
+ }
/**
* 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);
+ return dbMngr.createBooking(ruralHouse, firstDate, lastDate,
+ client);
}
-
+
}
\ No newline at end of file