1 package de.fhdw.wtf.persistence.facade; 2 3 import java.io.IOException; 4 5 import de.fhdw.wtf.persistence.exception.ClassFacadeUninitializedException; 6 import de.fhdw.wtf.persistence.exception.PersistenceException; 7 import de.fhdw.wtf.persistence.utils.PropertiesReader; 8 9 /** 10 * This is the Interface that will connect to a database, create and return the ObjectFacade and the ClassFacade. 11 */ 12 public abstract class DatabaseManager { 13 14 /** 15 * Loads the configuration from a given file. 16 * 17 * @param reader 18 * The reader where the connection properties are stored. 19 * @throws IOException 20 */ 21 public abstract void setConnectionConstantsFromFile(PropertiesReader reader) throws IOException; 22 23 /** 24 * Connects to the Database with the given Information. After the successful execution of this method, it is 25 * possible to get Access to the default connection. 26 * 27 * @throws PersistenceException 28 * If the Database is not accessible or the given credentials were wrong, a Persistence Exception will 29 * be thrown. 30 * 31 */ 32 public abstract void connect() throws PersistenceException; 33 34 /** 35 * Returns the class facade that works with this manager. 36 * 37 * @return The class facade 38 */ 39 public abstract ClassFacade getClassFacade(); 40 41 /** 42 * Returns the object facade that works with this manager. 43 * 44 * @return The object facade 45 * @throws ClassFacadeUninitializedException 46 * thrown if the facade is not initialized 47 */ 48 public abstract ObjectFacade getObjectFacade() throws ClassFacadeUninitializedException; 49 50 /** 51 * This Method closes the connection with the database. It should be invoked at last. 52 * 53 * @throws PersistenceException 54 * A Persistence Exception is thrown if something on the database side goes wrong. 55 */ 56 public abstract void disconnect() throws PersistenceException; 57 58 /** 59 * Checks if the manager is connected. 60 * 61 * @return Provides true whether connect has been successfully invoked or not. 62 */ 63 public abstract boolean isConnected(); 64 65 /** 66 * Clears the database. Recreates the database-schema and creates database-procedures if necessary. 67 * 68 * @throws PersistenceException 69 * if access to database failed. 70 * @throws IOException 71 * will be thrown if a file is not accessible. 72 */ 73 public abstract void resetDatabase() throws PersistenceException, IOException; 74 75 /** 76 * Clears all database tables. 77 * 78 * @throws PersistenceException 79 * access to database failed 80 */ 81 public abstract void clearTables() throws PersistenceException; 82 }