Initial revision
[mir.git] / source / mir / storage / DatabaseAdaptor.java
diff --git a/source/mir/storage/DatabaseAdaptor.java b/source/mir/storage/DatabaseAdaptor.java
new file mode 100755 (executable)
index 0000000..46c606d
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * put your module comment here
+ */
+
+
+package  mir.storage;
+
+import java.util.*;
+
+
+/**
+ * Interfacedefinition für Datenbank-Adpatoren. Die Adaptoren legen
+ * jeweils das Verhalten und die Befehlsmächtigkeit der Datenbank
+ * fest.
+ *
+ * @author <RK>
+ * @version 27.6.1999
+ */
+
+public interface  DatabaseAdaptor{
+
+        /* Liefert den Namen der Adaptorklasse
+        * @return Adaptorklasse als String
+        */
+       public abstract String getDriver ();
+
+
+       /**
+        * Liefert die URL für JDBC zurück, in den die Parameter user, pass und host
+        * eingefügt werden. Die URL wird aus der Konfiguration geholt.
+        *
+        * @param user user als String
+        * @param pass passwort als String
+        * @param host host als String
+        * @return url als String
+        */
+       public abstract String getURL (String user, String pass, String host);
+
+
+       /**
+        * Gibt zurück, ob das SQL der Datenbank den <code>limit</code>-Befehl beherrscht.
+        * @return true wenn ja, sonst false
+        */
+       public abstract boolean hasLimit ();
+
+
+       /**
+        * Liefert zurück, ob der <code>limit</code>-Befehl erst start und dann offset
+        * hat (true), oder umgekehrt. Nur Relevant, wenn hasLimit true zurückliefert.
+        *
+        * @return true wenn erstes, sonst false
+        */
+       public abstract boolean reverseLimit ();
+
+
+       /**
+        * Liefert ein Properties-Objekt zurueck mit user und password.
+        * @param user
+        * @param password
+        * @return Properties
+        */
+       public abstract Properties getProperties (String user, String password);
+
+
+       /**
+        * Gibt SQL-Stringfragment zurück, mit dem nach einem insert-Befehl ermittelt
+        * werden kann, wie man den primary-Key des eingefügten Datensatzes bekommt.
+        *
+        * @param theDB Database-Objekt, aus dem ggf. noetige Informationen geholt
+        * werden können, wie z.B. der Tabellenname
+        * @return SQL-Statement als String
+        */
+       public abstract String getLastInsertSQL (Database theDB);
+}
+
+