/**
  * GUI-Methode Diese Methode erstellt eine Stringliste aller Alben im System
  *
  * @return Liste aller Alben
  *     <p>Version-History:
  * @date 25.11.2015 by Danilo: Initialisierung
  */
 public static List<String> getAlbumList() {
   List<String> albumlist = new LinkedList();
   for (Album tmpAlbum : SystemController.getAlbumContainer().getAlbenListe()) {
     albumlist.add(tmpAlbum.getTitel());
   }
   return albumlist;
 }
 /**
  * Diese Methode gibt das Sortierkennzeichen für ein Album zurück, damit es richtig in der GUI
  * angezeigt werden kann.
  *
  * @param title Titel des Albums
  * @return Code für das Sortierkennzeichen
  *     <p>Version-History:
  * @date 15.01.2016 by Tobias: Anlegen der Methode
  */
 public static int getSortierkennzeichenFromAlbum(String title) {
   for (Album tmpAlbum : SystemController.getAlbumContainer().getAlbenListe()) {
     if (tmpAlbum.getTitel().equals(title)) {
       return tmpAlbum.getSortierkennzeichen();
     }
   }
   return ErrorController.addDebugReport(350);
 }
 /**
  * Diese Methode ändert im AlbumContainer das Sortierkennzeichen eines Albums
  *
  * @param title Titel des Albums welches geändert werden soll
  * @param sortierkennzeichen Neues Sortierkennzeichen des Albums
  * @return Fehlercode zur Auswertung <br>
  *     0 = Albumsortierkennzeichen wurde geändert <br>
  *     1 = Album nicht vorhanden
  *     <p>Version-History:
  * @date 21.11.2015 by Danilo: Initialisierung
  * @date 23.11.2015 by Danilo: Kommentar angepasst
  * @date 24.11.2015 by Danilo: Methode auf static gesetzt
  * @date 01.12.2015 by Danilo: Fehlerkorrektur
  * @date 07.12.2015 by Danilo: Sortierkennzeichen Datentyp zu int
  * @date 08.12.2015 by Danilo: Einfügen eines Fehlerloggingsystemes
  */
 private static int editAlbumSortierkennzeichen(String title, int sortierkennzeichen) {
   for (Album tmpAlbum : SystemController.getAlbumContainer().getAlbenListe()) {
     if (tmpAlbum.getTitel().equals(title)) {
       tmpAlbum.setSortierkennzeichen(sortierkennzeichen);
       return 0;
     }
   }
   return ErrorController.addDebugReport(350);
 }
 /**
  * Diese Methode ändert im AlbumContainer die Beschreibung eines Albums
  *
  * @param title Titel des Albums welches geändert werden soll
  * @param beschreibung Neue Beschreibung des Albums
  *     <p>Version-History:
  * @return Fehlercode zur Auswertung <br>
  *     0 = Albumbeschreibung wurde geändert <br>
  *     1 = Album nicht vorhanden
  * @date 21.11.2015 by Danilo: Initialisierung
  * @date 23.11.2015 by Danilo: Kommentar angepasst
  * @date 24.11.2015 by Danilo: Methode auf static gesetzt
  * @date 01.12.2015 by Danilo: Fehlerkorrektur
  * @date 08.12.2015 by Danilo: Einfügen eines Fehlerloggingsystemes
  */
 private static int editAlbumBeschreibung(String title, String beschreibung) {
   for (Album tmpAlbum : SystemController.getAlbumContainer().getAlbenListe()) {
     if (tmpAlbum.getTitel().equals(title)) {
       tmpAlbum.setBeschreibung(beschreibung);
       return 0;
     }
   }
   return ErrorController.addDebugReport(340);
 }
 /**
  * Diese Methode erstellt im AlbumContainer ein Album
  *
  * @param title Titel vom Album
  * @return Fehlercode zur Auswertung
  *     <p>Version-History:
  * @date 21.11.2015 by Danilo: Initialisierung
  * @date 23.11.2015 by Danilo: Kommentar angepasst
  * @date 24.11.2015 by Danilo: Methode auf static gesetzt
  * @date 01.12.2015 by Danilo: Fehlerkorrektur
  * @date 08.12.2015 by Danilo: Einfügen eines Fehlerloggingsystemes
  */
 private static int createAlbum(String title) {
   for (Album tmpAlbum : SystemController.getAlbumContainer().getAlbenListe()) {
     if (tmpAlbum.getTitel().equals(title)) {
       return ErrorController.addDebugReport(320);
     }
   }
   Album newAlbum = new Album(title);
   SystemController.getAlbumContainer().add(newAlbum);
   return 0;
 }
  /**
   * Diese Methode löscht im AlbumContainer ein Album
   *
   * @param title Titel des Albums welches gelöscht werden soll
   * @return Fehlercode zur Auswertung <br>
   *     0 = Album wurde gelöscht <br>
   *     1 = Album nicht vorhanden
   *     <p>Version-History:
   * @date 21.11.2015 by Danilo: Initialisierung
   * @date 23.11.2015 by Danilo: Rückgabewert geändert und Kommentar angepasst
   * @date 24.11.2015 by Danilo: Methode auf static gesetzt
   * @date 25.11.2015 by Danilo: Methode auf private gesetzt
   * @date 01.12.2015 by Danilo: Fehlerkorrektur
   * @date 08.12.2015 by Danilo: Einfügen eines Fehlerloggingsystemes
   */
  private static int deleteAlbum(String title) {
    for (Album tmpAlbum : SystemController.getAlbumContainer().getAlbenListe()) {

      if (tmpAlbum.getTitel().equals(title)) {
        FotoController.deleteAllFotosInAlbum(tmpAlbum);
        SystemController.getAlbumContainer().delete(tmpAlbum);
        return 0;
      }
    }
    return ErrorController.addDebugReport(310);
  }
  /**
   * Methode sucht nach einem Album und gibt dieses zurück
   *
   * @param title Übergabe des gesuchten Albumtitels
   * @return Rückgabe des Albums, wenn keins gefunden dann null
   *     <p>Version-History:
   * @date 24.11.2015 by Danilo: Initialisierung
   * @date 02.12.2015 by Tobias: Setzten auf public
   * @date 04.12.2015 by Danilo: Fehlerkorrektur bei zu kurzen Albentiteln
   * @date 08.12.2015 by Danilo: Einfügen eines Fehlerloggingsystemes
   * @date 10.12.2015 by Danilo: Einfügen globaler Variablen
   */
  public static Album getAlbum(String title) {
    // Prüft zu kruze Albentitel
    if (title == null || title.length() <= minTitleLength) {
      return null;
    }

    for (Album tmpAlbum : SystemController.getAlbumContainer().getAlbenListe()) {
      if (tmpAlbum.getTitel().equals(title)) {
        return tmpAlbum;
      }
    }
    ErrorController.addDebugReport(100);
    return null;
  }
  public void jsonWrite() throws Exception {

    Album album = Album.getSimpleAlbum();

    File file = FileAccessor.getFile("jackson_album.json");
    ObjectMapper jsonMapper = new ObjectMapper();
    jsonMapper.writerWithDefaultPrettyPrinter().writeValue(file, album);

    System.out.printf("Serialization to %s done.\n", file.getPath());
  }
 /**
  * Diese Methode ändert im AlbumContainer den Namen eines Albums
  *
  * @param title Titel des Albums welches geändert werden soll
  * @param newTitle Neuer Titel des Albums
  *     <p>Version-History:
  * @return Fehlercode zur Auswertung <br>
  *     0 = Albumtitel wurde geändert <br>
  *     1 = Album nicht vorhanden <br>
  *     2 = neuer Albumtitel schon vorhanden
  * @date 21.11.2015 by Danilo: Initialisierung
  * @date 23.11.2015 by Danilo: Kommentar angepasst
  * @date 24.11.2015 by Danilo: Methode auf static gesetzt
  * @date 28.11.2015 by Tobias: Prüfung von newTitel hinzugefügt
  * @date 01.12.2015 by Danilo: Fehlerkorrektur
  * @date 02.12.2015 by Tobias: Prüfen ob die Titel gleich sind
  * @date 08.12.2015 by Danilo: Einfügen eines Fehlerloggingsystemes
  */
 private static int editAlbumTitle(String title, String newTitle) {
   for (Album tmpAlbum : SystemController.getAlbumContainer().getAlbenListe()) {
     // Wenn die Titel gleich sind, muss nichts geändert werden
     if (title.equals(newTitle)) {
       return 0;
     } // Wenn die Titel unterschiedlich sind:
     else {
       // Prüfen ob neuer Titel schon vergeben ist
       if (tmpAlbum.getTitel().equals(newTitle)) {
         return ErrorController.addDebugReport(331);
       }
       if (tmpAlbum.getTitel().equals(title)) {
         tmpAlbum.setTitel(newTitle);
         return 0;
       }
     }
   }
   return ErrorController.addDebugReport(330);
 }