debugging...
[RRRRHHHH_Code] / ruralHouses / src / businessLogic / OfferManager.java
1 package businessLogic;
2
3 import java.rmi.RemoteException;
4 import java.sql.Date;
5
6 import com.db4o.ObjectContainer;
7 import com.db4o.ObjectSet;
8
9 import dataAccess.DB4oManager;
10 import domain.Offer;
11 import domain.RuralHouse;
12 import exceptions.BadDates;
13 import exceptions.OverlappingOfferExists;
14
15 public final class OfferManager {
16
17         private int offerNumber = 0;
18         dataAccess.DB4oManager dbMngr;
19         private static OfferManager theOfferManager;
20
21         public OfferManager() {
22                 try {
23                         this.dbMngr = DB4oManager.getInstance();
24                 } catch (Exception e) {
25                         e.printStackTrace();
26                 }
27         }
28
29         public static int getNumber() {
30                 ObjectContainer db=DB4oManager.getContainer();
31                 OfferManager o=getInstance();
32                 o.offerNumber++;
33                 db.store(o);
34                 db.commit();
35                 return o.offerNumber;
36         }
37
38         /**
39          * This method returns the instance of the OfferManager class 
40          * 
41          * @return the offer manager
42          */
43         public static OfferManager getInstance()  {
44                 ObjectContainer db=DB4oManager.getContainer();
45                 OfferManager b = new OfferManager();
46                 ObjectSet<OfferManager> result = db.queryByExample(b);
47                 if (!result.hasNext()){
48                         theOfferManager = new OfferManager();
49                         db.store(theOfferManager);
50                         db.commit();
51                 } else theOfferManager=(OfferManager)result.next();
52                 return theOfferManager;
53         }
54         
55         /**
56          * This method creates an offer with a house number, first day, last day and price
57          * 
58          * @param House
59          *            number, start day, last day and price
60          * @return the created offer, or null, or an exception
61          */
62         public Offer createOffer(RuralHouse ruralHouse, Date firstDay, Date lastDay,
63                         float price) throws OverlappingOfferExists, BadDates, RemoteException, Exception {
64                 if (firstDay.after(lastDay)||firstDay==null||lastDay==null)
65                         throw new BadDates();
66
67                 boolean b = dbMngr.existsOverlappingOffer(ruralHouse,firstDay,lastDay); // The ruralHouse object in the client may not be updated
68                 if (!b) {
69                         ruralHouse.createOffer(offerNumber, firstDay, lastDay, price);
70                         return dbMngr.createOffer(ruralHouse,firstDay,lastDay,price);                   
71                 }
72                 return null;
73         }
74
75         
76         public void deleteOffer(RuralHouse rh, Offer o) throws RemoteException, Exception{
77                 rh.offers.removeElement(o);
78                 dbMngr.deleteOffer( o);
79         }
80
81 }