package businessLogic;
-import com.db4o.ObjectContainer;
-import com.db4o.ObjectSet;
+import java.rmi.RemoteException;
+import java.rmi.server.UnicastRemoteObject;
+import java.sql.Date;
+import java.util.Vector;
+
+import common.OfferInterface;
import dataAccess.DB4oManager;
+import domain.Offer;
+import domain.RuralHouse;
+import exceptions.BadDates;
+import exceptions.OverlappingOfferExists;
+
+public final class OfferManager extends UnicastRemoteObject implements OfferInterface{
-public final class OfferManager {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
private int offerNumber = 0;
dataAccess.DB4oManager dbMngr;
- private static OfferManager theOfferManager;
-
- private OfferManager() {}
- public static int getNumber() {
- ObjectContainer db=DB4oManager.getContainer();
- OfferManager o=getInstance();
- o.offerNumber++;
- db.store(o);
- db.commit();
- return o.offerNumber;
+ public OfferManager() throws RemoteException {
+ super();
+ try {
+ this.dbMngr = DB4oManager.getInstance();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
+
+
/**
- * This method returns the instance of the OfferManager class
+ * This method creates an offer with a house number, first day, last day and price
*
- * @return the offer manager
+ * @param House
+ * number, start day, last day and price
+ * @return the created offer, or null, or an exception
*/
- public static OfferManager getInstance() {
- ObjectContainer db=DB4oManager.getContainer();
- OfferManager b = new OfferManager();
- ObjectSet result = db.queryByExample(b);
- if (!result.hasNext()){
- theOfferManager = new OfferManager();
- db.store(theOfferManager);
- db.commit();
- } else theOfferManager=(OfferManager)result.next();
- return theOfferManager;
+ public Offer createOffer(RuralHouse ruralHouse, Date firstDay, Date lastDay,
+ float price) throws OverlappingOfferExists, BadDates, RemoteException, Exception {
+ if (firstDay.after(lastDay)||firstDay==null||lastDay==null)
+ throw new BadDates();
+
+ boolean b = dbMngr.existsOverlappingOffer(ruralHouse,firstDay,lastDay); // The ruralHouse object in the client may not be updated
+ if (!b) {
+ dbMngr.createOffer(ruralHouse,firstDay,lastDay,price);
+ return ruralHouse.createOffer(offerNumber, firstDay, lastDay, price);
+ }
+ return null;
}
+
+
+ public void deleteOffer(RuralHouse rh, Offer o) throws RemoteException, Exception{
+ rh.getAllOffers().removeElement(o);
+ dbMngr.deleteOffer( o);
+ }
+
+
+
+ @Override
+ public Vector<RuralHouse> getRuralHouseOffers(RuralHouse rh)
+ throws RemoteException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
}