import java.util.*; public abstract class Dataforbindelse { /** * Sletter alle data */ abstract public void sletAlleData() throws Exception; /** * Indsætter en kunde * @param kunden */ abstract public void indsæt(Kunde k) throws Exception; /** * Henter alle kunderne * @return en liste af Kunde-objekter */ abstract public List hentAlle() throws Exception; private static Dataforbindelse forb; /** * Fabrikeringsmetode til at skaffe en forbindelse * @return forbindelsen */ synchronized public static Dataforbindelse hentForbindelse() throws Exception { // implementeret som en Singleton, så der må kun eksistere ét objekt if (forb != null) return forb; // ... herunder skal kode ind der skaffer en forbindelse //forb = new DataforbindelseDummy(); // før //forb = new DataforbindelseFil(); // senere forb = new DataforbindelseOracle(); // endnu senere !!! // forb = new DataforbindelseOverNetvaerketTilEnServlet( // "http://localhost:8080/servlet/DataforbindelseServlet"); return forb; } /** * Lavet sådan at man kan angive hvilken slags forbindelse man foretrækker. * Dette er rart til afprøvning og fejlfinding. * Skal kaldes som før første kald til hentForbindelse(). * Eksempler på brug:
* Dataforbindelse.sætForbindelsesvink("dummy");
* Dataforbindelse.sætForbindelsesvink("fil");
* Dataforbindelse.sætForbindelsesvink( * "http://localhost:8080/servlet/DataforbindelseServlet"); * * @param vink Vink til hvilken type forbindelse der foretrækkes * @see #hentForbindelse() */ synchronized public static void sætForbindelsesvink(String v) throws Exception { if (forb != null) return; // ignorer vink når forbindelse først er oprettet. if (v.equals("dummy")) forb = new DataforbindelseDummy(); else if (v.startsWith("fil")) forb = new DataforbindelseFil(); else if (v.startsWith("http")) forb = new DataforbindelseCache( new DataforbindelseOverNetvaerketTilEnServlet(v)); // brug cache else forb = new DataforbindelseOracle(); } }