de.katho.kBorrow.db

## Class SqliteConnector

- java.lang.Object
- - de.katho.kBorrow.db.SqliteConnector

All Implemented Interfaces:
  DbConnector

    public class SqliteConnector
    extends java.lang.Object
    implements DbConnector

This class handles connections to a sqlite database.

### Field Summary

Fields
`private java.sql.Connection` `connection` Referenz auf die Verbindung zur Datenbank

### Constructor Summary

Constructors
Constructor and Description
`SqliteConnector(java.lang.String pDbHandle)` Konstruktor gibt eine neue Instanz des SqliteConnector zurück.

### Method Summary

All Methods Instance Methods Concrete Methods
`int` `createArticle(java.lang.String pName, java.lang.String pDesc)` Erstellt einen neuen Artikel mit dem übergebenen Namen und der übergebenen Beschreibung.
`int` `createNewLender(java.lang.String pLName, java.lang.String pLSurname, java.lang.String pLSN)` Erzeugt einen neuen Ausleiher mit den übergebenen Daten.
`int[]` `createNewLending(int pArtId, int pUId, int pLId, java.lang.String pStartDate, java.lang.String pEstEndDate)` Erstellt eine neue Ausleihe.
`int` `createUser(java.lang.String pName, java.lang.String pSurname)` Erzeugt einen neuen Benutzer mit dem übergebenen Vor- und Nachnamen.
`int` `deleteArticle(int id)` Löscht den Artikel mit der übergebenen ID.
`boolean` `deleteUser(int id)` Löscht den Benutzer mit der als Parameter übergebenen ID.
`int` `editArticle(int pId, java.lang.String pName, java.lang.String pDesc)` Setzt Name und Beschreibung des Artikels mit der übergebenen ID entsprechend.
`int` `editUser(int pId, java.lang.String pName, java.lang.String pSurname)` Bearbeitet den Benutzer mit der übergebenen ID und ändert ggf.
`java.util.ArrayList<KArticle>` `getArticleList()` Gibt die komplette Artikelliste als ArrayList zurück.
`java.util.ArrayList<KLender>` `getLenderList()` Gibt die komplette Ausleiher-Liste als ArrayList zurück.
`java.util.ArrayList<KLending>` `getLendingList()` Gibt die komplette Liste der Ausleihen als ArrayList zurück.
`java.util.ArrayList<KLending>` `getLendingListForArticle(int pArtId)` Gibt die Liste der Ausleihen für den Artikel mit der als Parameter übergebenen ID als ArrayList zurück.
`java.util.ArrayList<KUser>` `getUserList()` Gibt eine Liste aller Benutzer als ArrayList zurück.
`private boolean` `initNewDB(java.util.Hashtable<java.lang.String,java.lang.String> pScheme, java.sql.Connection pConn)` Erstellt an der übergebenen Datenbankverbindung eine neue Datenbank mit dem übergebenen Schema.
`private boolean` `isValidDB(java.util.Hashtable<java.lang.String,java.lang.String> pScheme, java.sql.Connection pConn)` Prüft, ob die übergebene Datenbankverbindung eine Datenbank mit dem übergebenen DB-Schema enthält.
`private java.util.Hashtable<java.lang.String,java.lang.String>` `loadScheme()` Erzeugt ein Datenbankschema in einer Hashtable.
`int` `returnLending(int lendingId, int artId, java.lang.String end_date)` Gibt eine Ausleihe zurück, indem ein End-Datum gesetzt wird und der Artikel wieder freigegeben wird.
`boolean` `rewriteToNewUser(int pOldId, int pNewId)` Schreibt alle Ausleihen von einem auf einen anderen Benutzer um.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### connection

    private java.sql.Connection connection

Referenz auf die Verbindung zur Datenbank

### Constructor Detail

#### SqliteConnector

    public SqliteConnector(java.lang.String pDbHandle)
                    throws java.lang.ClassNotFoundException,
                           java.sql.SQLException,
                           java.io.IOException

Konstruktor gibt eine neue Instanz des SqliteConnector zurück.

Lädt das Datenbankschema und speichert es zwischen. Prüft, ob bereits eine Datenbankdatei mit dem übergebenen Dateipfad existiert. Falls ja, wird das Datenbankschema überprüft, falls nein, wird eine neue Datenbankdatei mit dem vorher geladenen Schema erzeugt.

Parameters:
  `pDbHandle` - This string contains the path to database file the connector has to use
Throws:
  `java.io.IOException` - Wenn IO-Fehler, wie Probleme mit den Berechtigungen auftreten, oder der pDbHandle auf einen Symlink oder ein Verzeichnis verweist.
  `java.sql.SQLException` - Wenn die gegebene Datenbank nicht dem Datenbankschema entspricht.
  `java.lang.ClassNotFoundException` - Wenn der JDBC-Connector nicht gefunden werden konnte.

### Method Detail

#### isValidDB

    private boolean isValidDB(java.util.Hashtable<java.lang.String,java.lang.String> pScheme,
                              java.sql.Connection pConn)

Prüft, ob die übergebene Datenbankverbindung eine Datenbank mit dem übergebenen DB-Schema enthält.

Parameters:
  `pScheme` - Datenbankschema, gegen das geprüft werden soll.
  `pConn` - Datenbankverbindung, die geprüft werden soll.
Returns:
  True, wenn die übergebene Verbindung eine Datenbank mit dem gegebenen Schema enthält. Andernfalls false.

#### initNewDB

    private boolean initNewDB(java.util.Hashtable<java.lang.String,java.lang.String> pScheme,
                              java.sql.Connection pConn)

Erstellt an der übergebenen Datenbankverbindung eine neue Datenbank mit dem übergebenen Schema.

Parameters:
  `pScheme` - Schema, nach deren Vorbild die Datenbank erzeugt werden soll.
  `pConn` - Datenbankverbindung, an der versucht werden soll, eine Datenbank zu erzeugen.
Returns:
  True, wenn die Datenbank erzeugt werden konnte, andernfalls false.

#### loadScheme

    private java.util.Hashtable<java.lang.String,java.lang.String> loadScheme()

Erzeugt ein Datenbankschema in einer Hashtable.

Returns:
  Die erzeugte Hashtable mit dem Datenbankschema.

#### getUserList

    public java.util.ArrayList<KUser> getUserList()

Gibt eine Liste aller Benutzer als ArrayList zurück.

Specified by:
  `getUserList` in interface `DbConnector`
Returns:
  Liste aller Benutzer als ArrayList.

#### getArticleList

    public java.util.ArrayList<KArticle> getArticleList()

Gibt die komplette Artikelliste als ArrayList zurück.

Specified by:
  `getArticleList` in interface `DbConnector`
Returns:
  Komplette Artikelliste als ArrayList.

#### getLenderList

    public java.util.ArrayList<KLender> getLenderList()

Gibt die komplette Ausleiher-Liste als ArrayList zurück.

Specified by:
  `getLenderList` in interface `DbConnector`
Returns:
  Komplette Ausleiher-Liste als ArrayList.

#### getLendingList

    public java.util.ArrayList<KLending> getLendingList()

Gibt die komplette Liste der Ausleihen als ArrayList zurück.

Specified by:
  `getLendingList` in interface `DbConnector`
Returns:
  Die komplette Liste der Ausleihen als ArrayList.

#### getLendingListForArticle

    public java.util.ArrayList<KLending> getLendingListForArticle(int pArtId)

Gibt die Liste der Ausleihen für den Artikel mit der als Parameter übergebenen ID als ArrayList zurück.

Specified by:
  `getLendingListForArticle` in interface `DbConnector`
Parameters:
  `pArtId` - ID der Artikels, für den die Ausleihen zurückgegeben werden sollen.
Returns:
  Liste der Ausleihen des Artikels mit der als Parameter übergebenen ID.

#### createUser

    public int createUser(java.lang.String pName,
                          java.lang.String pSurname)

Erzeugt einen neuen Benutzer mit dem übergebenen Vor- und Nachnamen.

Gibt je nach Ergebnis einen anderen Statuscode als Int zurück:

- 0: Benutzer erfolgreich erzeugt.
- 1: SQL-Fehler beim Erzeugen.

Specified by:
  `createUser` in interface `DbConnector`
Parameters:
  `pName` - Vorname.
  `pSurname` - Nachname.
Returns:
  Statuscode als Int.

#### editUser

    public int editUser(int pId,
                        java.lang.String pName,
                        java.lang.String pSurname)

Bearbeitet den Benutzer mit der übergebenen ID und ändert ggf. Vor- und Nachname.

Gibt je nach Ergebnis einen anderen Statuscode als Int zurück:

- 0: Benutzer erfolgreich bearbeitet.
- 1: SQL-Fehler beim Bearbeiten.

Specified by:
  `editUser` in interface `DbConnector`
Parameters:
  `pId` - ID des Benutzert, der bearbeitet werden soll.
  `pName` - (Neuer) Vorname.
  `pSurname` - (Neuer) Nachname.
Returns:
  Statuscode als Int.

#### deleteUser

    public boolean deleteUser(int id)

Löscht den Benutzer mit der als Parameter übergebenen ID.

Specified by:
  `deleteUser` in interface `DbConnector`
Parameters:
  `id` - ID des Benutzers, der gelöscht werden soll.
Returns:
  True, wenn der Benutzer gelöscht werden konnte, andernfalls false.

#### createArticle

    public int createArticle(java.lang.String pName,
                             java.lang.String pDesc)

Erstellt einen neuen Artikel mit dem übergebenen Namen und der übergebenen Beschreibung.

Je nach Ergebnis gibt die Funktion einen anderen Statuscode als Int zurück:

- 0: Artikel erfolgreich erstellt.
- 1: SQL-Fehler beim Erstellen.

Specified by:
  `createArticle` in interface `DbConnector`
Parameters:
  `pName` - Name des Artikels.
  `pDesc` - Beschreibung des Artikels.
Returns:
  Statuscode als Int.

#### deleteArticle

    public int deleteArticle(int id)

Löscht den Artikel mit der übergebenen ID.

Je nach Ergebnis gibt die Funktion einen anderen Statuscode als Int zurück:

- 0: Artikel erfolgreich gelöscht.
- 1: SQL-Fehler beim Löschen

Specified by:
  `deleteArticle` in interface `DbConnector`
Parameters:
  `id` - ID des Artikels, der gelöscht werden soll.
Returns:
  Statuscode als Int.

#### editArticle

    public int editArticle(int pId,
                           java.lang.String pName,
                           java.lang.String pDesc)

Setzt Name und Beschreibung des Artikels mit der übergebenen ID entsprechend.

Je nach Ergebnis gibt die Funktion einen anderen Statuscode als Int zurück:

- 0: Artikel erfolgreich gelöscht.
- 1: SQL-Fehler beim Bearbeiten.

Specified by:
  `editArticle` in interface `DbConnector`
Parameters:
  `pId` - ID des Artikels, der bearbeitet werden soll.
  `pName` - (Neuer) Name des Artikels.
  `pDesc` - (Neue) Beschreibung des Artikels.
Returns:
  Statuscode als Int.

#### createNewLending

    public int[] createNewLending(int pArtId,
                                  int pUId,
                                  int pLId,
                                  java.lang.String pStartDate,
                                  java.lang.String pEstEndDate)

Erstellt eine neue Ausleihe.

Gibt ein Int-Array der Länge 2 zurück. An erster Stelle steht der Rückgabestatus, an zweiter Stelle die ID der gerade erzeugten Tabellenzeile.

Die Statuscodes lauten:

- 0: Ausleihe konnte erfolgreich erzeugt werden.
- 1: SQL-Fehler beim Erstellen der Ausleihe.

Specified by:
  `createNewLending` in interface `DbConnector`
Parameters:
  `pArtId` - ID des verliehenen Artikels.
  `pUId` - ID des ausleihenden Benutzers.
  `pLId` - ID des Ausleihers.
  `pStartDate` - Startdatum der Ausleihe.
  `pEstEndDate` - Voraussichtliches Enddatum der Ausleihe.
Returns:
  Statuscode als Int.

#### rewriteToNewUser

    public boolean rewriteToNewUser(int pOldId,
                                    int pNewId)

Schreibt alle Ausleihen von einem auf einen anderen Benutzer um.

Specified by:
  `rewriteToNewUser` in interface `DbConnector`
Parameters:
  `pOldId` - ID des alten Benutzers.
  `pNewId` - ID des Benutzers, auf den die Ausleihen umgeschrieben werden sollen.
Returns:
  True, wenn erfolgreich umgeschrieben werden konnte, andernfalls false.

#### returnLending

    public int returnLending(int lendingId,
                             int artId,
                             java.lang.String end_date)

Gibt eine Ausleihe zurück, indem ein End-Datum gesetzt wird und der Artikel wieder freigegeben wird.

Je nach Ergebnis gibt die Funktion einen anderen Statuscode als Int zurück:

- 0: Artikel erfolgreich gelöscht.
- 1: SQL-Fehler beim Umtragen.

Specified by:
  `returnLending` in interface `DbConnector`
Parameters:
  `lendingId` - ID der Ausleihe, die zurückgegeben werden soll.
  `artId` - ID des Artikels, der freigegeben werden soll.
  `end_date` - ID des Rückgabedatums.
Returns:
  Statuscode als Int.

#### createNewLender

    public int createNewLender(java.lang.String pLName,
                               java.lang.String pLSurname,
                               java.lang.String pLSN)

Erzeugt einen neuen Ausleiher mit den übergebenen Daten.

Je nach Ergebnis gibt die Funktion einen anderen Statuscode als Int zurück:

- 0: Artikel erfolgreich gelöscht.
- 1: SQL-Fehler beim Erstellen.

Specified by:
  `createNewLender` in interface `DbConnector`
Parameters:
  `pLName` - Vorname des neuen Ausleihers.
  `pLSurname` - Nachname des neuen Ausleihers.
  `pLSN` - Matrikelnummer des neuen Ausleihers.
Returns:
  Statuscode als Int.