//import java.util.Enumeration;
//import java.util.Vector;
-
import java.rmi.RemoteException;
import java.sql.Date;
import java.util.HashSet;
import domain.RuralHouse;
import exceptions.OfferCanNotBeBooked;
import exceptions.OverlappingOfferExists;
-public class DB4oManager {
- private static ObjectContainer db;
+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 serialized
- private int offerNumber=0; // if it is "static" then it is not serialized
- private static DB4oManager theDB4oManager=null;
+ private int bookingNumber = 0; // if it is "static" then it is not
+ // serialized
+ private int offerNumber = 0; // if it is "static" then it is not serialized
+ private static DB4oManager theDB4oManager = null;
private static DB4oManagerAux theDB4oManagerAux;
static ConfigXML c;
private DB4oManager() throws Exception {
- theDB4oManagerAux=new DB4oManagerAux(0,0);
- c=ConfigXML.getInstance();
- System.out.println("Creating DB4oManager instance => isDatabaseLocal: "+c.isDatabaseLocal()+" getDatabBaseOpenMode: "+c.getDataBaseOpenMode());
+ theDB4oManagerAux = new DB4oManagerAux(0, 0);
+ c = ConfigXML.getInstance();
+ System.out.println("Creating DB4oManager instance => isDatabaseLocal: "
+ + c.isDatabaseLocal() + " getDatabBaseOpenMode: "
+ + c.getDataBaseOpenMode());
-
- if ((c.getDataBaseOpenMode().equals("initialize")) && (c.isDatabaseLocal()))
- new File(c.getDb4oFilename()).delete();
-
- if (c.isDatabaseLocal())
- {
+ if ((c.getDataBaseOpenMode().equals("initialize"))
+ && (c.isDatabaseLocal()))
+ new File(c.getDb4oFilename()).delete();
+
+ if (c.isDatabaseLocal()) {
configuration = Db4oEmbedded.newConfiguration();
configuration.common().activationDepth(c.getActivationDepth());
configuration.common().updateDepth(c.getUpdateDepth());
- db=Db4oEmbedded.openFile(configuration, c.getDb4oFilename());
+ db = Db4oEmbedded.openFile(configuration, c.getDb4oFilename());
System.out.println("DataBase opened");
- }
- else // c.isDatabaseLocal==false
- {
+ } else // c.isDatabaseLocal==false
+ {
openObjectContainer();
}
- if (c.getDataBaseOpenMode().equals("initialize"))
- { initializeDB();
+ if (c.getDataBaseOpenMode().equals("initialize")) {
+ initializeDB();
System.out.println("DataBase initialized");
+ } else // c.getDataBaseOpenMode().equals("open")
+
+ {
+ ObjectSet res = db.queryByExample(DB4oManagerAux.class);
+ ListIterator listIter = res.listIterator();
+ if (listIter.hasNext())
+ theDB4oManagerAux = (DB4oManagerAux) res.next();
}
- else // c.getDataBaseOpenMode().equals("open")
-
- {
- ObjectSet res =db.queryByExample(DB4oManagerAux.class);
- ListIterator listIter = res.listIterator();
- if (listIter.hasNext()) theDB4oManagerAux = (DB4oManagerAux) res.next();
- }
- }
+ }
- private static void openDB(){
+ private static void openDB() {
configuration = Db4oEmbedded.newConfiguration();
configuration.common().activationDepth(c.getActivationDepth());
configuration.common().updateDepth(c.getUpdateDepth());
- db=Db4oEmbedded.openFile(configuration, c.getDb4oFilename());
+ db = Db4oEmbedded.openFile(configuration, c.getDb4oFilename());
}
-
- private void openObjectContainer(){
-
+
+ private void openObjectContainer() {
+
configurationCS = Db4oClientServer.newClientConfiguration();
configurationCS.common().activationDepth(c.getActivationDepth());
configurationCS.common().updateDepth(c.getUpdateDepth());
configurationCS.common().objectClass(Owner.class).cascadeOnDelete(true);
- db = Db4oClientServer.openClient(configurationCS,c.getDatabaseNode(),
- c.getDatabasePort(),c.getUser(),c.getPassword());
+ db = Db4oClientServer.openClient(configurationCS, c.getDatabaseNode(),
+ c.getDatabasePort(), c.getUser(), c.getPassword());
}
-
+
class DB4oManagerAux {
int bookingNumber;
int offerNumber;
- DB4oManagerAux(int bookingNumber,int offerNumber){
- this.bookingNumber=bookingNumber;
- this.offerNumber=offerNumber;
+
+ DB4oManagerAux(int bookingNumber, int offerNumber) {
+ this.bookingNumber = bookingNumber;
+ this.offerNumber = offerNumber;
}
}
- public static DB4oManager getInstance() throws Exception{
- if (theDB4oManager==null)
- theDB4oManager=new DB4oManager();
+ public static DB4oManager getInstance() throws Exception {
+ if (theDB4oManager == null)
+ theDB4oManager = new DB4oManager();
return theDB4oManager;
}
-
-
- public void initializeDB(){
-
+
+ public void initializeDB() {
+
try {
Owner jon = new Owner("Jon");
Owner alfredo = new Owner("Alfredo");
jon.addRuralHouse(1, "Ezkioko etxea", "Ezkio", 3, 3, 3, 3, 3);
jon.addRuralHouse(2, "Eskiatzeko etxea", "Jaca", 4, 4, 4, 4, 4);
jon.setBankAccount("1349 5677 21 2133567777");
- alfredo.addRuralHouse(3, "Casa del abuelo", "Pitillas", 5, 5,
- 5, 5, 5);
- alfredo.addRuralHouse(4,"", "Murgia", 6, 6, 6, 6, 6);
+ alfredo.addRuralHouse(3, "Casa del abuelo", "Pitillas", 5, 5, 5, 5,
+ 5);
+ alfredo.addRuralHouse(4, "", "Murgia", 6, 6, 6, 6, 6);
alfredo.setBankAccount("4144 0087 23 9700002133");
Account jonAcc = new Account("userJon", "passJon", jon);
Account alfredoAcc = new Account("userAlfredo", "passAlfredo",
db.store(jonAcc);
db.store(alfredoAcc);
db.commit();
- }
- finally {
- //db.close();
+ } finally {
+ // db.close();
}
}
-
+
@SuppressWarnings("finally")
- public Offer createOffer(RuralHouse ruralHouse, Date firstDay, Date lastDay,
- float price) throws RemoteException, Exception {
- Offer o = null;
- try {
-
- if (c.isDatabaseLocal()==false) openObjectContainer();
-
-
- RuralHouse proto = new RuralHouse(ruralHouse.getHouseNumber(),null,null,null,null);
- ObjectSet result = db.queryByExample(proto);
- RuralHouse rh=(RuralHouse)result.next();
- o=rh.createOffer(theDB4oManagerAux.offerNumber++,firstDay, lastDay, price);
- db.store(theDB4oManagerAux); // To store the new value for offerNumber
- db.store(o);
- db.commit();
-
- }
- catch (com.db4o.ext.ObjectNotStorableException e){
- System.out.println("Error: com.db4o.ext.ObjectNotStorableException in createOffer");
- }
- finally {
- return o;
- }
+ public Offer createOffer(RuralHouse ruralHouse, Date firstDay,
+ Date lastDay, float price) throws RemoteException, Exception {
+ Offer o = null;
+ try {
+
+ if (c.isDatabaseLocal() == false)
+ openObjectContainer();
+
+ RuralHouse proto = new RuralHouse(ruralHouse.getHouseNumber(),
+ null, null, null, null);
+ ObjectSet result = db.queryByExample(proto);
+ RuralHouse rh = (RuralHouse) result.next();
+ o = rh.createOffer(theDB4oManagerAux.offerNumber++, firstDay,
+ lastDay, price);
+ db.store(theDB4oManagerAux); // To store the new value for
+ // offerNumber
+ db.store(o);
+ db.commit();
+
+ } catch (com.db4o.ext.ObjectNotStorableException e) {
+ System.out
+ .println("Error: com.db4o.ext.ObjectNotStorableException in createOffer");
+ } finally {
+ return o;
+ }
}
-
+
public void deleteDB() {
-
+
try {
- Owner proto = new Owner(null,null);
- ObjectSet result = db.queryByExample(proto);
- Vector<Owner> owners=new Vector<Owner>();
- while(result.hasNext())
- { Owner o = (Owner)result.next();
- System.out.println("Deleted owner: "+o.toString());
- db.delete(o);
- }
- db.commit();
- } finally {
- // db.close();
- }
+ Owner proto = new Owner(null, null);
+ ObjectSet result = db.queryByExample(proto);
+ Vector<Owner> owners = new Vector<Owner>();
+ while (result.hasNext()) {
+ Owner o = (Owner) result.next();
+ System.out.println("Deleted owner: " + o.toString());
+ db.delete(o);
+ }
+ db.commit();
+ } finally {
+ // db.close();
+ }
}
/**
* day, last day, house number and telephone
* @return a book
*/
- public Booking createBooking(RuralHouse ruralHouse, Date firstDate, Date lastDate, String bookTelephoneNumber)
+ public Booking createBooking(RuralHouse ruralHouse, Date firstDate,
+ Date lastDate, String bookTelephoneNumber)
throws OfferCanNotBeBooked {
-
+
try {
- if (c.isDatabaseLocal()==false) openObjectContainer();
+ if (c.isDatabaseLocal() == false)
+ openObjectContainer();
- RuralHouse proto = new RuralHouse(ruralHouse.getHouseNumber(),null,ruralHouse.getDescription(),ruralHouse.getTown(), null);
- ObjectSet result = db.queryByExample(proto);
- RuralHouse rh=(RuralHouse)result.next();
+ RuralHouse proto = new RuralHouse(ruralHouse.getHouseNumber(),
+ null, ruralHouse.getDescription(), ruralHouse.getTown(),
+ null);
+ ObjectSet result = db.queryByExample(proto);
+ RuralHouse rh = (RuralHouse) result.next();
Offer offer;
offer = rh.findOffer(firstDate, lastDate);
- if (offer!=null) {
- offer.createBooking(theDB4oManagerAux.bookingNumber++, bookTelephoneNumber);
- db.store(theDB4oManagerAux); // To store the new value for bookingNumber
+ if (offer != null) {
+ offer.createBooking(theDB4oManagerAux.bookingNumber++,
+ bookTelephoneNumber);
+ db.store(theDB4oManagerAux); // To store the new value for
+ // bookingNumber
db.store(offer);
db.commit();
return offer.getBooking();
}
return null;
- } catch (com.db4o.ext.ObjectNotStorableException e){
- System.out.println("Error: com.db4o.ext.ObjectNotStorableException in createBooking");
- return null;
- }
- catch (Exception exc) {
+ } catch (com.db4o.ext.ObjectNotStorableException e) {
+ System.out
+ .println("Error: com.db4o.ext.ObjectNotStorableException in createBooking");
+ return null;
+ } catch (Exception exc) {
exc.printStackTrace();
return null;
}
}
-
/**
- * This method existing owners
+ * This method existing owners
*
*/
- public Vector<Owner> getOwners() throws RemoteException,
- Exception {
-
- if (c.isDatabaseLocal()==false) openObjectContainer();
-
- try {
- Owner proto = new Owner(null,null);
- ObjectSet result = db.queryByExample(proto);
- Vector<Owner> owners=new Vector<Owner>();
- while(result.hasNext())
- owners.add((Owner)result.next());
- return owners;
- } finally {
- //db.close();
- }
- }
+ public Vector<Owner> getOwners() throws RemoteException, Exception {
+
+ if (c.isDatabaseLocal() == false)
+ openObjectContainer();
+
+ try {
+ Owner proto = new Owner(null, null);
+ ObjectSet result = db.queryByExample(proto);
+ Vector<Owner> owners = new Vector<Owner>();
+ while (result.hasNext())
+ owners.add((Owner) result.next());
+ return owners;
+ } finally {
+ // db.close();
+ }
+ }
+
public Vector<RuralHouse> getAllRuralHouses() throws RemoteException,
- Exception {
- if (c.isDatabaseLocal()==false) openObjectContainer();
-
- try {
- RuralHouse proto = new RuralHouse(0,null,null,null,null);
- ObjectSet result = db.queryByExample(proto);
- Vector<RuralHouse> ruralHouses=new Vector<RuralHouse>();
- while(result.hasNext())
- ruralHouses.add((RuralHouse)result.next());
- return ruralHouses;
- } finally {
- // db.close();
- }
+ Exception {
+ if (c.isDatabaseLocal() == false)
+ openObjectContainer();
+
+ try {
+ RuralHouse proto = new RuralHouse(0, null, null, null, null);
+ ObjectSet result = db.queryByExample(proto);
+ Vector<RuralHouse> ruralHouses = new Vector<RuralHouse>();
+ while (result.hasNext())
+ ruralHouses.add((RuralHouse) result.next());
+ return ruralHouses;
+ } finally {
+ // db.close();
+ }
}
-
- public boolean existsOverlappingOffer(RuralHouse rh,Date firstDay, Date lastDay) throws RemoteException, OverlappingOfferExists{
- try {
- if (c.isDatabaseLocal()==false) openObjectContainer();
-
- RuralHouse rhn = (RuralHouse) db.queryByExample(new RuralHouse(rh.getHouseNumber(),null,null,null,null)).next();
- if (rhn.overlapsWith(firstDay, lastDay)!=null) throw new OverlappingOfferExists();
- else return false;
- } finally {
- //db.close();
- }
+
+ public boolean existsOverlappingOffer(RuralHouse rh, Date firstDay,
+ Date lastDay) throws RemoteException, OverlappingOfferExists {
+ try {
+ if (c.isDatabaseLocal() == false)
+ openObjectContainer();
+
+ RuralHouse rhn = (RuralHouse) db
+ .queryByExample(
+ new RuralHouse(rh.getHouseNumber(), null, null,
+ null, null)).next();
+ if (rhn.overlapsWith(firstDay, lastDay) != null)
+ throw new OverlappingOfferExists();
+ else
+ return false;
+ } finally {
+ // db.close();
+ }
}
- public static ObjectContainer getContainer(){
+ public static ObjectContainer getContainer() {
return db;
}
-
- public void close(){
+
+ public void close() {
db.close();
System.out.println("DataBase closed");
}
-
+
public String toString() {
- return "bookingNumber="+bookingNumber+" offerNumber="+offerNumber;
+ return "bookingNumber=" + bookingNumber + " offerNumber=" + offerNumber;
}
-
-
/**
* @param usr
* @param pwd
*/
public Vector<Account> getAccount(String usr, String pwd)
throws RemoteException, Exception {
-
+ if (c.isDatabaseLocal() == false)
+ openObjectContainer();
try {
Account proto = new Account(usr, pwd, new Owner(null, null));
ObjectSet<Account> result = db.queryByExample(proto);
accounts.add((Account) result.next());
return accounts;
} finally {
- //db.close();
+ // db.close();
}
}
* @param rh
*/
public boolean storeRuralHouses(RuralHouse rh) {
- DB4oManager.openDB();
+// DB4oManager.openDB();
+ if (c.isDatabaseLocal() == false)
+ openObjectContainer();
boolean stored = false;
- ObjectContainer db = DB4oManager.getContainer();
RuralHouse house = new RuralHouse(rh.getHouseNumber(), null, null,
null, null);
try {
stored = true;
}
} finally {
- db.close();
+// db.close();
}
return stored;
}
public void removeHouse(int houseNumber) {
- DB4oManager.openDB();
+// DB4oManager.openDB();
+ if (c.isDatabaseLocal() == false)
+ openObjectContainer();
RuralHouse house = new RuralHouse(houseNumber, null, null, null, null);
try {
ObjectSet<RuralHouse> result = db.queryByExample(house);
} catch (Exception exc) {
exc.printStackTrace();
} finally {
- db.close();
+// db.close();
}
}
-}
+ public Vector<RuralHouse> getRuralHousesByTown(String town){
+ RuralHouse rh = new RuralHouse(0,null,null,town,null);
+ if (c.isDatabaseLocal() == false)
+ openObjectContainer();
+ try{
+ ObjectSet<RuralHouse> result = db.queryByExample(rh);
+ Vector<RuralHouse> ruralHouses = new Vector<RuralHouse>();
+ while(result.hasNext())
+ ruralHouses.add(result.next());
+ return ruralHouses;
+ }finally{
+ //db.close();
+ }
+
+ }
+}