de.katho.kBorrow.controller

## Class NewLendingController

- java.lang.Object
- - de.katho.kBorrow.controller.NewLendingController

    public class NewLendingController
    extends java.lang.Object

NewLendingController führt sämtliche Datenbankoperationen aus, die von `NewLendingPanel` angestoßen werden.

### Field Summary

Fields
`private DbConnector` `dbCon` Referenz auf die Datenbank
`private KArticleModel` `kArticleModel` Referenz auf KArticleModel, wird benötigt um Tabellen und Listen zu aktualisieren.
`private KLenderModel` `kLenderModel` Referenz auf KLenderModel, wird benötigt um Tabellen und Listen zu aktualisieren.
`private KLendingModel` `kLendingModel` Referenz auf KLendingModel, wird benötigt um Tabellen und Listen zu aktualisieren.
`private KUserModel` `kUserModel` Referenz auf KUserModel, wird benötigt um Tabellen und Listen zu aktualisieren.
`private Settings` `settings` Referenz auf die Settings, wird benötigt, um Zugriff auf das Programmverzeichnis im Benutzerprofil zu haben.

### Constructor Summary

Constructors
Constructor and Description
`NewLendingController(DbConnector pDbCon, java.util.HashMap<java.lang.String,KDataModel> models, Settings pSettings)` Erzeugt eine neue Instanz des NewLendingController und setzt alle benötigten Referenzen.

### Method Summary

All Methods Instance Methods Concrete Methods
`private void` `createPdfFile(int pLendingId)` Erzeugt ein PDF-File mit allen relevanten Daten zur als Parameter übergebenen Lending-ID.
`private java.io.File` `createRandomPdf()` Erzeugt ein PDF-File mit zufälligem Dateinamen.
`int` `newLending(int pArtId, java.lang.String pLName, java.lang.String pLSurname, java.lang.String pLSN, java.lang.String pStartDate, java.util.Date pEstEndDate, java.lang.String pUsername)` Erzeugt eine neue Ausleihe.

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

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

### Field Detail

#### dbCon

    private DbConnector dbCon

Referenz auf die Datenbank

#### kUserModel

    private KUserModel kUserModel

Referenz auf KUserModel, wird benötigt um Tabellen und Listen zu aktualisieren.

#### kLenderModel

    private KLenderModel kLenderModel

Referenz auf KLenderModel, wird benötigt um Tabellen und Listen zu aktualisieren.

#### kArticleModel

    private KArticleModel kArticleModel

Referenz auf KArticleModel, wird benötigt um Tabellen und Listen zu aktualisieren.

#### kLendingModel

    private KLendingModel kLendingModel

Referenz auf KLendingModel, wird benötigt um Tabellen und Listen zu aktualisieren.

#### settings

    private Settings settings

Referenz auf die Settings, wird benötigt, um Zugriff auf das Programmverzeichnis im Benutzerprofil zu haben.

### Constructor Detail

#### NewLendingController

    public NewLendingController(DbConnector pDbCon,
                                java.util.HashMap<java.lang.String,KDataModel> models,
                                Settings pSettings)

Erzeugt eine neue Instanz des NewLendingController und setzt alle benötigten Referenzen.

Parameters:
  `pDbCon` - Referenz auf die Datenbank.
  `models` - HashMap mit den KDataModels.
  `pSettings` - Referenz auf die Settings.

### Method Detail

#### newLending

    public int newLending(int pArtId,
                          java.lang.String pLName,
                          java.lang.String pLSurname,
                          java.lang.String pLSN,
                          java.lang.String pStartDate,
                          java.util.Date pEstEndDate,
                          java.lang.String pUsername)
                   throws java.lang.Exception

Erzeugt eine neue Ausleihe.

Gibt je nach Bearbeitungsergebnis einen anderen Statuscode aus:

- 0: Erfolgreich gespeichert
- 1: SQL-Fehler
- 2: Notwendige Daten sind leer (Art-ID, Start-Date, Est. End Date)
- 3: Das Rückgabedatum ist früher oder gleich dem Ausleihdatum
- 4: Die gegebene Kombination aus Lender-Name, -Surname und -Studentnumer existiert mehrmals in der Datenbank. Das darf nicht sein und wird daher einen Fehler!
- 5: Matrikelnummer muss eine Zahl sein!

Parameters:
  `pArtId` - Artikel-ID des Artikels, der verliehen wird (darf nicht -1 sein).
  `pLName` - Vorname des Ausleihers (darf nicht leer sein).
  `pLSurname` - Nachname des Ausleihers (darf nicht leer sein).
  `pLSN` - Matrikelnummer des Ausleihers (muss numerisch sein).
  `pStartDate` - Startdatum der Ausleihe (darf nicht leer sein).
  `pEstEndDate` - Voraussichtliches Rückgabedatum (darf weder 'null' sein, noch in der Vergagenheit liegen).
  `pUsername` - Username des Ausleihenden.
Returns:
  Statuscode als Int.
Throws:
  `java.lang.Exception` - ???

#### createPdfFile

    private void createPdfFile(int pLendingId)
                        throws java.lang.Exception

Erzeugt ein PDF-File mit allen relevanten Daten zur als Parameter übergebenen Lending-ID.

Parameters:
  `pLendingId` - ID der Ausleihe, für die ein PDF erzeugt werden soll.
Throws:
  `java.lang.Exception` - Wenn Probleme beim Erstellen der Datei auftreten.

#### createRandomPdf

    private java.io.File createRandomPdf()
                                  throws java.io.IOException

Erzeugt ein PDF-File mit zufälligem Dateinamen.

Returns:
  Gibt eine Referenz auf ein File-Objekt zurück.
Throws:
  `java.io.IOException` - Wenn Probleme bei der Erstellung der Datei auftreten.