The bug found in the presentation that we forgot to review has been fixed
[RRRRHHHH_Code] / ruralHouses / src / dataAccess / DB4oManager.java
index a677c95..fd3c1c5 100644 (file)
@@ -35,9 +35,9 @@ public class DB4oManager {
        private static ObjectContainer db;
        private static EmbeddedConfiguration configuration;
        private static ClientConfiguration configurationCS;
-       private int bookingNumber = 0; // if it is "static" then it is not
+       private int bookingNumber = 1; // if it is "static" then it is not
                                                                        // serialized
-       private int offerNumber = 0; // if it is "static" then it is not serialized
+       private int offerNumber = 1; // if it is "static" then it is not serialized
        private static DB4oManager theDB4oManager = null;
 
        private static DB4oManagerAux theDB4oManagerAux;
@@ -45,7 +45,7 @@ public class DB4oManager {
        static ConfigXML c;
 
        private DB4oManager() throws Exception {
-               theDB4oManagerAux = new DB4oManagerAux(0, 0);
+               theDB4oManagerAux = new DB4oManagerAux(1, 1);
                c = ConfigXML.getInstance();
                System.out.println("Creating DB4oManager instance => isDatabaseLocal: "
                                + c.isDatabaseLocal() + " getDatabBaseOpenMode: "
@@ -87,6 +87,12 @@ public class DB4oManager {
                                .cascadeOnDelete(true);
                configuration.common().objectClass(Account.class).cascadeOnDelete(true);
                configuration.common().objectClass(Offer.class).cascadeOnDelete(true);
+               configuration.common().objectClass(Owner.class).cascadeOnUpdate(true);
+               configuration.common().objectClass(Booking.class).cascadeOnUpdate(true);
+               configuration.common().objectClass(RuralHouse.class)
+                               .cascadeOnUpdate(true);
+               configuration.common().objectClass(Account.class).cascadeOnUpdate(true);
+               configuration.common().objectClass(Offer.class).cascadeOnUpdate(true);
                configuration.common().objectClass(Account.class).cascadeOnUpdate(true);
                db = Db4oEmbedded.openFile(configuration, c.getDb4oFilename());
        }
@@ -97,6 +103,23 @@ public class DB4oManager {
                configurationCS.common().activationDepth(c.getActivationDepth());
                configurationCS.common().updateDepth(c.getUpdateDepth());
                configurationCS.common().objectClass(Owner.class).cascadeOnDelete(true);
+               configurationCS.common().objectClass(Booking.class)
+                               .cascadeOnDelete(true);
+               configurationCS.common().objectClass(RuralHouse.class)
+                               .cascadeOnDelete(true);
+               configurationCS.common().objectClass(Account.class)
+                               .cascadeOnDelete(true);
+               configurationCS.common().objectClass(Offer.class).cascadeOnDelete(true);
+               configurationCS.common().objectClass(Owner.class).cascadeOnUpdate(true);
+               configurationCS.common().objectClass(Booking.class)
+                               .cascadeOnUpdate(true);
+               configurationCS.common().objectClass(RuralHouse.class)
+                               .cascadeOnUpdate(true);
+               configurationCS.common().objectClass(Account.class)
+                               .cascadeOnUpdate(true);
+               configurationCS.common().objectClass(Offer.class).cascadeOnUpdate(true);
+               configurationCS.common().objectClass(Account.class)
+                               .cascadeOnUpdate(true);
                db = Db4oClientServer.openClient(configurationCS, c.getDatabaseNode(),
                                c.getDatabasePort(), c.getUser(), c.getPassword());
 
@@ -322,12 +345,13 @@ public class DB4oManager {
                                openSDB();
 
                        RuralHouse proto = new RuralHouse(ruralHouse.getHouseName(), null,
-                                       ruralHouse.getDescription(), ruralHouse.getDistrict(), null);
+                                       null, null, null);
                        ObjectSet<RuralHouse> result = db.queryByExample(proto);
                        RuralHouse rh = (RuralHouse) result.next();
 
                        Offer offer;
-                       offer = rh.findOffer(firstDate, lastDate);
+                       offer = (Offer) db.queryByExample(
+                                       new Offer(0, rh, firstDate, lastDate, 0)).get(0);
 
                        if (offer != null) {
                                offer.createBooking(theDB4oManagerAux.bookingNumber++, cl);
@@ -374,23 +398,6 @@ public class DB4oManager {
                }
        }
 
-       public Vector<RuralHouse> getAllRuralHouses() throws RemoteException,
-                       Exception {
-
-               if (c.isDatabaseLocal() == false)
-                       openSDB();
-               else
-                       openDB();
-
-               try {
-                       RuralHouse proto = new RuralHouse(null, null, null, null, null);
-                       ObjectSet<RuralHouse> result = db.queryByExample(proto);
-                       return new Vector<RuralHouse>(result);
-               } finally {
-                       db.close();
-               }
-       }
-
        public boolean existsOverlappingOffer(RuralHouse rh, Date firstDay,
                        Date lastDay) throws RemoteException, OverlappingOfferExists {
 
@@ -413,10 +420,6 @@ public class DB4oManager {
                }
        }
 
-       public static ObjectContainer getContainer() {
-               return db;
-       }
-
        public void close() {
                db.close();
                System.out.println("DataBase closed");
@@ -467,14 +470,19 @@ public class DB4oManager {
                                null);
                try {
                        ObjectSet<RuralHouse> result = db.queryByExample(house);
+                       Owner own = new Owner(rh.getOwner().getName(),rh.getOwner().getBankAccount(),rh.getOwner().getMailAccount());
+                       Owner ow = (Owner) db.queryByExample(own).get(0);
+                       rh.setOwner(ow);
                        if (result.isEmpty()) {
-                               Owner ow = (Owner) db.queryByExample(rh.getOwner()).get(0);
-                               rh.setOwner(ow);
                                ow.addRuralHouse(rh);
                                db.store(rh);
                                db.commit();
                                stored = true;
                        } else {
+                               ow.getRuralHouses().remove(result.get(0));
+                               result.get(0).setOwner(null);
+                               ow.addRuralHouse(rh);
+                               db.store(result.get(0));
                                db.delete(result.get(0));
                                db.store(rh);
                                db.commit();
@@ -513,7 +521,14 @@ public class DB4oManager {
        public Vector<RuralHouse> getRuralHouses(Owner ow, String name,
                        String town, int nBed, int nKit, int nBath, int nPark, int nLiv) {
                HouseFeatures fea = new HouseFeatures(nBed, nKit, nBath, nLiv, nPark);
-               RuralHouse rh = new RuralHouse(name, ow, null, town, fea);
+               RuralHouse rh;
+               if (ow != null) {
+                       Owner own = new Owner(ow.getName(), ow.getBankAccount(),
+                                       ow.getMailAccount());
+                       rh = new RuralHouse(name, own, null, town, fea);
+               }else{
+                       rh = new RuralHouse(name, ow, null, town, fea);
+               }
                if (c.isDatabaseLocal() == false)
                        openSDB();
                else
@@ -610,11 +625,10 @@ public class DB4oManager {
                                        .getOffer().getOfferNumber(), new RuralHouse(b.getOffer()
                                        .getRuralHouse().getHouseName(), null, null, null, null),
                                        null, null, 0), b.getClient(), b.getBookDate());
-
-                       ObjectSet<Booking> result = db.queryByExample(book);
-                       Offer of = result.get(0).getOffer();
-                       of.getBookings().remove(result.get(0));
-                       db.store(of);
+                       Booking delete = (Booking) db.queryByExample(book).get(0);
+                       delete.setOffer(null);
+                       db.store(delete);
+                       db.delete(delete);
                        db.commit();
                } catch (Exception e) {
                        e.printStackTrace();
@@ -623,4 +637,23 @@ public class DB4oManager {
                }
 
        }
+
+       public Vector<Booking> getOfBok(Offer o) {
+               if (c.isDatabaseLocal() == false)
+                       openSDB();
+               else
+                       openDB();
+
+               try {
+                       Offer of = (Offer) db.queryByExample(
+                                       new Offer(0, new RuralHouse(o
+                                                       .getRuralHouse().getHouseName(), null, null, null,
+                                                       null), o.getFirstDay(), o.getLastDay(), 0)).get(0);
+                       Booking proto = new Booking(0, of, null, null);
+                       ObjectSet<Booking> result = db.queryByExample(proto);
+                       return new Vector<Booking>(result);
+               } finally {
+                       db.close();
+               }
+       }
 }