From 21530ebcdd5933222eae44d125b00da268dfd624 Mon Sep 17 00:00:00 2001
From: Michael <micha.bechtel@web.de>
Date: Thu, 5 Dec 2019 10:40:52 +0100
Subject: [PATCH] Kommentare hinzugefuegt (Datenbank, Codebuch, Codierer[alt])

---
 .../enigma/database/DatenbankSqlite.java      |  35 ++-
 .../java/projekt/enigma/model/Codebuch.java   |  64 ++---
 .../java/projekt/enigma/model/Codierer.java   | 257 +++++++++---------
 3 files changed, 172 insertions(+), 184 deletions(-)

diff --git a/src/main/java/projekt/enigma/database/DatenbankSqlite.java b/src/main/java/projekt/enigma/database/DatenbankSqlite.java
index 21a20a2..464558f 100644
--- a/src/main/java/projekt/enigma/database/DatenbankSqlite.java
+++ b/src/main/java/projekt/enigma/database/DatenbankSqlite.java
@@ -3,25 +3,24 @@ package projekt.enigma.database;
 import java.sql.*;
 
 /**
- * Dies ist die SQLite Datenbank Klasse
- * In der SQLite Datei im Resources Ordner liegt das Codebuch welches benötigt wird um die
- * Nachrichten mit der Enigma zu ver/entschlüsseln.
+ * Dies ist die SQLite Datenbank Klasse.
+ * In der SQLite Datei im Resources Ordner liegt das Codebuch welches benoetigt wird um die
+ * Nachrichten mit der Enigma zu ver/entschluesseln.
  * Die Datenbank ist statisch und deshalb konnte sie im Resources Ordner hinterlegt werden.
- * Für jeden Tag des Monats (1-31) ist ein eigener Eintrag enthalten welcher über die Funktion
+ * Für jeden Tag des Monats (1-31) ist ein eigener Eintrag enthalten welcher ueber die Funktion
  * getCodebuch abgerufen werden kann.
- * Zurückgegeben wird ein Array welcher in der getCodebuch Funktion genauer dokumentiert ist.
+ * Zurueckgegeben wird ein Array welcher in der getCodebuch Funktion genauer dokumentiert ist.
  */
 public class DatenbankSqlite {
 
 	/**
 	 * Verbindung zur SQLite Datenbank aufbauen.
-	 * Die Datei liegt in den Resources und ändert sich nicht,
+	 * Die Datei liegt in den Resources und aendert sich nicht,
 	 * weshalb der Pfad zu derselben fest hinterlegt ist.
 	 *
-	 * @return conn : Connection
+	 * @return conn : Connection: statische Datenbankverbindung.
 	 */
 	private Connection connect() {
-
 		String url = "jdbc:sqlite::resource:projekt/enigma/codebuch.sqlite";
 		Connection conn = null;
 
@@ -35,15 +34,15 @@ public class DatenbankSqlite {
 	}
 
 	/**
-	 * Liest das Codebuch aus der SQLite Datenbank aus
-	 * Dieser Funktion muss ein tag als int Wert übergeben werden.
-	 * Anschließend wir eine Verbindung zur SQLite Datenbank aufgebaut und das Codebuch angefragt.
-	 * Dieses wird in ein Object vom Type Codebuch gepackt und zurück gegeben.
+	 * Liest das Codebuch aus der SQLite Datenbank aus.
+	 * Dieser Funktion muss ein tag als int Wert uebergeben werden.
+	 * Anschließend wird eine Verbindung zur SQLite Datenbank aufgebaut und das Codebuch angefragt.
+	 * Dieses wird in ein Objekt vom Typ Codebuch gepackt und zurueckgegeben.
 	 *
-	 * Hole den heutigen Eintrag aus der SQLite Datenbank und erstelle daraus ein Codebuch Objekt
+	 * Holt den heutigen Eintrag aus der SQLite Datenbank und erstellt daraus ein Codebuch Objekt.
 	 *
-	 * @param tag : int : Tag für welchen ein Codebuch benötigt wird.
-	 * @return String : Die Einstellungen des angefragten Tages
+	 * @param tag : int : Tag fuer welchen ein Codebuch benoetigt wird.
+	 * @return String : Die Einstellungen des angefragten Tages.
 	 * <p>
 	 *     String[0] : Tag
 	 *     String[1] : Walzenlage
@@ -52,12 +51,11 @@ public class DatenbankSqlite {
 	 * </p>
 	 */
 	public String[] getCodebuch(int tag) {
-
 		String[] codebuch = new String[4];
 
 		try {
 			Connection conn = this.connect();
-			PreparedStatement pstm = conn.prepareStatement("SELECT * FROM table_codebuch WHERE Tag=? LIMIT 1");
+			PreparedStatement pstm = conn.prepareStatement("SELECT * FROM table_codebuch WHERE Tag = ? LIMIT 1");
 			pstm.setInt(1, tag);
 			ResultSet rs = pstm.executeQuery();
 
@@ -67,8 +65,7 @@ public class DatenbankSqlite {
 				codebuch[2] = rs.getString("Ringstellung");
 				codebuch[3] = rs.getString("Steckverbindung");
 			}
-		} catch (SQLException ignored) {
-		}
+		} catch (SQLException ignored) {}
 
 		return codebuch;
 	}
diff --git a/src/main/java/projekt/enigma/model/Codebuch.java b/src/main/java/projekt/enigma/model/Codebuch.java
index b710a0a..c333121 100644
--- a/src/main/java/projekt/enigma/model/Codebuch.java
+++ b/src/main/java/projekt/enigma/model/Codebuch.java
@@ -6,41 +6,41 @@ import java.time.LocalDate;
 import java.time.ZoneId;
 
 /**
- * Das Codebuch war eines der essentiel wichtigen Sachen bei der Enigma.
+ * Das Codebuch war eines der essentiell wichtigen Sachen bei der Enigma.
  * Jeder Enigma gehoerte auch ein Codebuch bei, welches notwendig war um die Nachrichten zu ver/entschluesseln.
  * Im Codebuch standen für jeden Tag des Monats die notwendigen Einstellungen welche vorgenommen werden
- * mussten um die Texte zu ver/entschluesseln.
+ * mussten, um die Texte zu ver/entschluesseln.
  * Hiernach wurden die Walzen eingesetzt, die Ringe für den Ruecksprung der Walze gesetzt und deren Grundeinstellung
  * vorgenommen.
- * Bei der Enigma um welche es hier geht (Enigma I) gab es zusaetzlich ein Steckbrett, welches ebenfalls im Codebuch
+ * Bei der Enigma I, um welche es hier geht, gab es zusaetzlich ein Steckbrett, welches ebenfalls im Codebuch
  * festgelegt war.
  * <p>
- * Dieses Codebuch Objekt enthaelt die Einstellungen eines Tages, welche mittels Getter und Setter
+ * Dieses Codebuch enthaelt die Einstellungen eines Tages, welche mittels Getter und Setter
  * verarbeitet werden koennen.
  * <p>
- * Zusaetzlich gibt es zu Debug Zwecken eine ueberschriebene toString Funktion welche das Objekt als String zurueck
- * geben kann.
+ * Zusaetzlich gibt es zu Debug-Zwecken eine ueberschriebene toString Funktion, welche das Objekt als String
+ * zurueckgeben kann.
  */
 public class Codebuch {
 
 	//region Variablen
 	/**
-	 * tag : int : gibt den Tag eines Monats an
+	 * tag : int : gibt den Tag eines Monats an.
 	 */
 	private int tag;
 
 	/**
-	 * walzenlage : int[] : legt die Positionen der drei Walzen fest
+	 * walzenlage : int[] : legt die Positionen der drei Walzen fest.
 	 */
 	private int[] walzenlage;
 
 	/**
-	 * ringstellung : int[] : legt die Ringstellungen der drei Walzen fest
+	 * ringstellung : int[] : legt die Ringstellungen der drei Walzen fest.
 	 */
 	private int[] ringstellung;
 
 	/**
-	 * steckverbindung : char[][] : stellt die Steckverbindungen im Steckbrett dar
+	 * steckverbindung : char[][] : legt die Steckverbindungen im Steckbrett fest.
 	 */
 	private char[][] steckverbindung;
 
@@ -48,12 +48,12 @@ public class Codebuch {
 
 	//region Konstruktor
 	/**
-	 * Im Konstruktor werden die Standardwerte gesetzt
+	 * Im Konstruktor werden die Standardwerte gesetzt.
 	 * <p>
 	 * walzenlage : int[3] :            Hier wird die Position der drei Walzen festgelegt.
-	 * ringstellung : char[3] :         Jede Walze hat einen Ring. Der Index steht für die Walze und der Value für
-	 * die Position des Ringes.
-	 * steckverbindung : char[10][] :   Zehn Kabel können in das Steckbrett gesteckt werden. In diesem Array werden
+	 * ringstellung : char[3] :         Jede Walze hat einen Ring. Der Index steht fuer die Walze und der Value fuer
+	 * 									die Position des Ringes.
+	 * steckverbindung : char[10][] :   Zehn Kabel koennen in das Steckbrett gesteckt werden. In diesem Array werden
 	 * 									die Kabel mit ihren jeweiligen Buchsen hinterlegt.
 	 */
 	public Codebuch() {
@@ -76,7 +76,7 @@ public class Codebuch {
 	 * Aus dem Tagesschluessel werden die Werte fuer die Walzenlage, Ringstellung und Steckverbindung
 	 * gesetzt.
 	 *
-	 * @param tag : int[] : gibt keinen, einen Tag oder mehrere Tage mit
+	 * @param tag : int[] : gibt keinen, einen Tag oder mehrere Tage mit.
 	 */
 	public void fetchTagesschluessel(int... tag) {
 		String[] walzenlage, ringstellung, db;
@@ -105,9 +105,9 @@ public class Codebuch {
 
 	/**
 	 * Gibt die aktuelle Instanz des Codebuches als String zurueck.
-	 * Hierbei werden der Tag die Walzenlagen, Ring-/Grundstellung sowie die Steckverbindungen zurueck gegeben.
+	 * Hierbei werden der Tag die Walzenlagen, Ring-/Grundstellung sowie die Steckverbindungen zurueckgegeben.
 	 *
-	 * @return String : String des gesamten Objektes
+	 * @return String : String des gesamten Objektes.
 	 */
 	@Override
 	public String toString() {
@@ -153,7 +153,7 @@ public class Codebuch {
 
 	//region Setter
 	/**
-	 * Setzt die Steckverbindung dieser Instanz
+	 * Setzt die Steckverbindung dieser Instanz.
 	 *
 	 * @param kabel : String[] :  Die Steckverbindungen die gesteckt werden sollen.
 	 *              Jeder Eintrag im Array ist ein String mit zwei Zeichen.
@@ -171,17 +171,17 @@ public class Codebuch {
 	}
 
 	/**
-	 * Setzt die Walzenlage dieser Instanz
+	 * Setzt die Walzenlage dieser Instanz.
 	 *
-	 * @param position   : int : Position der Walze
-	 * @param walzenlage : int : Welche Walze wurde eingesetzt
+	 * @param position   : int : Position der Walze.
+	 * @param walzenlage : int : Welche Walze wurde eingesetzt.
 	 */
 	private void setWalzenlage(int position, int walzenlage) {
 		this.walzenlage[position] = walzenlage;
 	}
 
 	/**
-	 * Setzt die Ringstellung dieser Instanz
+	 * Setzt die Ringstellung dieser Instanz.
 	 *
 	 * @param position     : int : Auf welche Walze wird der Ring aufgesetzt?
 	 * @param ringstellung : int : An dieser Position soll die nächste Walze weiter gedreht werden.
@@ -191,9 +191,9 @@ public class Codebuch {
 	}
 
 	/**
-	 * Setzt den Tag dieser Instanz
+	 * Setzt den Tag dieser Instanz.
 	 *
-	 * @param tag : int : Tag
+	 * @param tag : int : Tag.
 	 */
 	void setTag(int tag) {
 		this.tag = tag;
@@ -203,36 +203,36 @@ public class Codebuch {
 
 	//region Getter
 	/**
-	 * Gibt den Tag dieser Instanz zurueck
+	 * Gibt den Tag dieser Instanz zurueck.
 	 *
-	 * @return int : Tag
+	 * @return int : Tag.
 	 */
 	public int getTag() {
 		return tag;
 	}
 
 	/**
-	 * Gibt die Walzenlage dieser Instanz zurueck
+	 * Gibt die Walzenlage dieser Instanz zurueck.
 	 *
-	 * @return walzenlage : int[] : Walzenlage
+	 * @return walzenlage : int[] : Walzenlage.
 	 */
 	public int[] getWalzenlage() {
 		return walzenlage;
 	}
 
 	/**
-	 * Gibt die Ringstellung dieser Instanz zurueck
+	 * Gibt die Ringstellung dieser Instanz zurueck.
 	 *
-	 * @return ringstellung : int : Ringstellung
+	 * @return ringstellung : int : Ringstellung.
 	 */
 	public int[] getRingstellung() {
 		return ringstellung;
 	}
 
 	/**
-	 * Gibt die Steckverbindungen dieser Instanz zurueck
+	 * Gibt die Steckverbindungen dieser Instanz zurueck.
 	 *
-	 * @return steckerverbindung : char[][] : Steckverbindung
+	 * @return steckerverbindung : char[][] : Steckverbindung.
 	 */
 	public char[][] getSteckverbindung() {
 		return this.steckverbindung;
diff --git a/src/main/java/projekt/enigma/model/Codierer.java b/src/main/java/projekt/enigma/model/Codierer.java
index b548415..ff768c6 100644
--- a/src/main/java/projekt/enigma/model/Codierer.java
+++ b/src/main/java/projekt/enigma/model/Codierer.java
@@ -7,42 +7,43 @@ import java.util.Calendar;
 import java.util.Random;
 
 /**
- * Die Codierer Klasse beschreibt den Benutzer welcher die Enigma benutzt.
- * Alle Vorgänge wie z.B. das zusammenbauen der Hardware, auslesen des Codebuches und das anschließende codieren,
- * finden hier statt. Dieser ist quasi die Schnittstelle zwischen der GUI (Hauptmann welcher ihm sagt was er zu
- * verschlüsseln hat), der Enigma und dem Funker im Funkraum, welcher die Nachricht im Anschluß versendet.
+ * Die Codierer-Klasse beschreibt den Benutzer, welcher die Enigma benutzt.
+ * Alle Vorgaenge, wie z.B. das zusammenbauen der Hardware, auslesen des Codebuches und das anschließende codieren,
+ * finden hier statt. Dieser ist quasi die Schnittstelle zwischen der GUI (Hauptmann, welcher ihm sagt was er zu
+ * verschluesseln hat), der Enigma und dem Funker im Funkraum, welcher die Nachricht im Anschluss versendet.
  */
 public class Codierer {
 
     //region Variablen
     /**
-     * Der Klartext Spruchschlüssel zur codierung der Nachricht
+     * Der Spruchschluessel als Klartext zur Codierung der Nachricht.
      */
     private String spruchschluessel;
 
     /**
-     * Der Spruchschlüssel, mit den Tageswerten aus dem Codebuch, codiert
+     * Der Spruchschluessel, mit den Tageswerten aus dem Codebuch, codiert.
      */
     private String spruchschluesselCodiert;
 
     /**
-     * Die Kenngruppe für die versendeten Nachrichten gedacht sind. Diese ist relevant für den Webservice (Funkraum)
+     * Die Kenngruppe fuer die die versendeten Nachrichten gedacht sind.
+     * Diese ist relevant fuer den Webservice (Funkraum).
      */
     private String kenngruppe;
 
     /**
-     * Die Nachricht, welche der Benutzer eingibt, wird als String nachricht gespeichert
-     * und im laufe der Benutzung ergänzt
+     * Die Nachricht, welche der Benutzer eingibt, wird als String "nachricht" gespeichert
+     * und im Laufe der Benutzung ergaenzt.
      */
     private String nachricht;
 
     /**
-     * Das Hardware Objekt. Hier werden alle Hardware relevanten Baugruppen gespeichert und verarbeitet.
+     * Das Hardware-Objekt. Hier werden alle hardwarerelevanten Baugruppen gespeichert und verarbeitet.
      */
     private Hardware hardware;
 
     /**
-     * Im Codebuch sind die Tageswerte zu finden. Über dieses Objekt kann darauf zugegriffen werden.
+     * Im Codebuch sind die Tageswerte zu finden. Ueber dieses Objekt kann darauf zugegriffen werden.
      */
     private Codebuch codebuch;
     //endregion
@@ -50,17 +51,16 @@ public class Codierer {
     //region Konstruktor
 
     /**
-     * Der Konstruktor des Codierers
-     * Hier werden die globalen Variablen auf ihre Standart Werte gesetzt sowie die Objekte Initialisiert.
+     * Der Konstruktor des Codierers.
+     * Hier werden die globalen Variablen auf ihre Standardwerte gesetzt sowie die Objekte initialisiert.
      */
     public Codierer(String kenngruppe) {
-
         this.nachricht = "";
         this.spruchschluessel = "";
         this.spruchschluesselCodiert = "";
         this.kenngruppe = kenngruppe;
-
         this.codebuch = new Codebuch();
+
         this.codebuch.fetchTagesschluessel();
     }
     //endregion
@@ -69,18 +69,17 @@ public class Codierer {
     //region Reset & Initialisieren
 
     /**
-     * Hier lesen wir den heutigen Eintrag aus dem Codebuch aus und erstellen ein Codebuch Objekt
+     * Hier lesen wir den heutigen Eintrag aus dem Codebuch aus und erstellen ein Codebuch-Objekt.
      * Nach dem Codebuch werden dann die Ringe auf die Walzen gesteckt und die Walzen anschließend
      * in die Hardware gebaut.
      * <br>
-     * Ein Reflektor wird definiert, jedoch keine Werte zugewisen, da wir nur einen besitzen und
-     * deshalb alle Einstellungen hierfür Statisch im Reflektor definiert haben.
+     * Ein Reflektor wird definiert, jedoch keine Werte zugewiesen, da wir nur einen besitzen und
+     * deshalb alle Einstellungen hierfuer statisch im Reflektor definiert haben.
      * <br>
-     * Das Steck wird ebenfalls definiert und die notwendigen Kabel eingesteckt laut dem heutigen
-     * Codebuch Eintrag.
+     * Das Steckbrett wird ebenfalls definiert und die notwendigen Kabel eingesteckt nach dem heutigen
+     * Codebucheintrag.
      */
     private void initialisiereHardware() {
-
         this.nachricht = "";
 
         // Das Steckbrett initialisieren
@@ -103,19 +102,19 @@ public class Codierer {
         // Der Hardware das gesetzte Steckbrett zuweisen
         this.hardware.setSteckbrett(sb);
 
-        // Ein Reflektor Objekt erstellen und der Hardware bekannt geben
+        // Ein Reflektor-Objekt erstellen und der Hardware bekanntgeben
         this.hardware.setReflektor(new Reflektor());
     }
 
     /**
-     * Setzt die Enigma auf die Einstellungen des aktuellen Tages, aus dem Codebuch zurück.
+     * Setzt die Enigma auf die Einstellungen des aktuellen Tages, aus dem Codebuch zurueck.
      */
     public void resetHardware() {
         this.initialisiereHardware();
     }
 
     /**
-     * Leer das Nachrichten Objekt um eine neue Nachricht aufnehmen zu können
+     * Leert das Nachrichten-Objekt um eine neue Nachricht aufnehmen zu koennen.
      */
     public void resetNachricht() {
         this.nachricht = "";
@@ -125,48 +124,46 @@ public class Codierer {
     //region Nachrichten handler
 
     /**
-     * Befehl die Nachricht an den Funker zu übergeben
+     * Befehl, die Nachricht an den Funker zu uebergeben.
      *
-     * @throws IOException   : Die Antwort konnte nicht gelesen werden
-     * @throws HttpException : Die Nachricht konnte nicht abgesendet werden
+     * @throws IOException   : Die Antwort konnte nicht gelesen werden.
+     * @throws HttpException : Die Nachricht konnte nicht abgesendet werden.
      */
     public void sendeNachricht() throws IOException, HttpException {
         String kopf = this.generateKopf();
-        new Funkraum().sendeFunkspruch(new Morsecode().convertBuchstabeToMorsecode(kopf + this.nachricht), this.kenngruppe);
+        new Funkraum().sendeFunkspruch(new Morsecode().convertBuchstabeToMorsecode(kopf + this.nachricht),
+                                       this.kenngruppe);
         this.nachricht = "";
         this.resetHardware();
     }
 
     /**
-     * Gibt die letzte empfangene Nachricht zurück
+     * Gibt die letzte empfangene Nachricht zurueck.
      * <br>
-     * String[0] Tag wann die Nachricht gesendet wurde
-     * String[1] = Die verschlüsselte Nachricht
-     * String[2] = Nachricht im Klartext
+     * nachricht[0]: String[]: Tag, an dem die Nachricht gesendet wurde.
+     * nachricht[1]: String[]: Die verschluesselte Nachricht von Morsecode in Buchstaben konvertiert.
+     * nachricht[2]: String[]: Nachricht im Klartext. Die Enigma Nachricht (nachricht[1]) mittels der
+     *                         Tageseinstellungen (nachricht[0]) decodiert.
      */
     public String[] empfangeNachricht() {
+        StringBuilder sb = new StringBuilder();
+        Morsecode mc = new Morsecode();
+        String[] nachricht = new String[3];
 
-        // Alte Nachrichten Variable erstmal leeren
+        // Alte Nachrichten-Variable erstmal leeren
         this.nachricht = "";
-        // Morsecode Objekt initialisieren
-        Morsecode mc = new Morsecode();
-        // Unser Nachrichten Array soll drei Einträge erhalten
-        String[] nachricht = new String[4];
+
         // Abrufen der letzten Nachricht, für unsere Kenngruppe, aus dem Funkraum
         String[] codierteNachricht = new Funkraum().empfangeFunkspruch(this.kenngruppe);
 
         // Prüfen ob Nachrichtenlänge > 1 und die codierte Nachricht mehr als drei Felder (" ") hat
-        if (codierteNachricht[1] != null && codierteNachricht[1].split(" ").length > 3) {
-            // Den Tag der Nachricht speichern
+        if ((codierteNachricht[1] != null) && (codierteNachricht[1].split(" ").length > 3)) {
             nachricht[0] = codierteNachricht[0];
-            // Die Nachricht von Morsecode in Buchstaben konvertieren
             nachricht[1] = mc.convertMorsecodeToBuchstabe(codierteNachricht[1]);
-            // Die Enigma Nachricht (nachricht[1]) mittels der Tageseinstellungen (nachricht[0]) decodieren
             nachricht[2] = this.decodiere(nachricht[1], Integer.parseInt(nachricht[0]));
-            // StringBuilder initialisieren
-            StringBuilder sb = new StringBuilder();
 
             sb.append(nachricht[1], 0, 16);
+
             for (int i = 17; i <= nachricht[1].length(); ) {
                 if ((i + 5) < nachricht[1].length()) {
                     sb.append(nachricht[1], i, i + 5).append(" ");
@@ -186,19 +183,19 @@ public class Codierer {
     //region Generatoren
 
     /**
-     * Hier wird ein neuer Spruchschlüssel generiert.
+     * Hier wird ein neuer Spruchschluessel generiert.
      * <p>
      * Mit diesem werden die Walzen auf eine neue Startposition gestellt und dem Kopf, mit dem
-     * Tagesschlüssel codiert, hinzugefügt.
+     * Tagesschluessel codiert, hinzugefuegt.
      * <br>
-     * Hierfür wird mittels der Funktion "randomBuchstabe" ein zufälliger Buchstabe generiert,
-     * und geschaut ob dieser bereits in der globalen Variable (this.spruchschluessel) vorhanden ist.
-     * Wenn nicht, wird der Buchstabe dem Spruchschlüssel hinzugefügt.
+     * Hierfuer wird mittels der Funktion "randomBuchstabe" ein zufaelliger Buchstabe generiert,
+     * und ueberprueft, ob dieser bereits in der globalen Variable (this.spruchschluessel) vorhanden ist.
+     * Wenn nicht, wird der Buchstabe dem Spruchschluessel hinzugefügt.
      * <br>
-     * Dies wir nun so lange gemacht bis der Spruchschlüssel eine länge von drei Zeichen hat.
+     * Dies wir nun so lange gemacht bis der Spruchschluessel eine Laenge von drei Zeichen hat.
+     * Die Walzen werden anhand des Spruchschluessels automatisch gestellt.
      */
     public void generateSpruchschluessel() {
-
         String klartext = "";
 
         while (klartext.length() < 3) {
@@ -221,75 +218,74 @@ public class Codierer {
     }
 
     /**
-     * Erstellen des Nachrichten Kopfes.
-     * Hierfür wird die aktuelle Uhrzeit ausgelesen, die Länge der Nachricht sowie der, mit den
-     * Tagescodes codierte, Spruchschlüssel.
+     * Erstellen des Nachrichten-Kopfes.
+     * Hierfuer wird die aktuelle Uhrzeit ausgelesen, die Laenge der Nachricht, sowie der, mit dem
+     * Tagescode codierte, Spruchschluessel.
+     *
+     * @return String: Enthaelt die Uhrzeit, die Anzahl der Buchstaben der Nachricht und den Spruchschluessel.
      */
     private String generateKopf() {
         Calendar cal = Calendar.getInstance();
 
-        // Uhrzeit an den Kopf hängen
-        return String.format("%02d%02d", cal.get(Calendar.HOUR), cal.get(Calendar.MINUTE)) + " " +
-                // Zeichen Anzahl der Nachricht
-                this.nachricht.length() + " " +
-                // Spruchschlüssel anhängen
-                this.spruchschluesselCodiert.substring(0, 3) + " " + this.spruchschluesselCodiert.substring(3, 6) + " ";
+        return String.format("%02d%02d", cal.get(Calendar.HOUR), cal.get(Calendar.MINUTE)) + " "
+                + this.nachricht.length() + " " + this.spruchschluesselCodiert.substring(0, 3) + " "
+                + this.spruchschluesselCodiert.substring(3, 6) + " ";
     }
 
     /**
-     * Einen zufälligen Buchstaben aus dem Alphabet generieren.
-     * In der Funktion gibt es den String Alphabet, in welchem alle zulässigen Zeichen eingetragen sind.
-     * Aus diesem String wird nun zufällig ein Zeichen ausgewählt und zurück gegeben.
+     * Generiert einen zufaelligen Buchstaben aus dem Alphabet.
+     * In der Funktion gibt es den String "Alphabet", in welchem alle zulaessigen Zeichen eingetragen sind.
+     * Aus diesem String wird nun zufaellig ein Zeichen ausgewaehlt und zurueckgegeben.
      *
-     * @return String : ein zufällig generierter Buchstabe
+     * @return String : ein zufaellig generierter Buchstabe.
      */
     private String randomBuchstabe() {
         return String.valueOf((char) ('A' + new Random().nextInt(26)));
     }
     //endregion
 
-    //region setzte Funktionen
+    //region setze Funktionen
 
-    /**
-     * Setzt den anzuzeigenden Buchstaben (buchstabe) auf der Walze (walzenPosition) und resetet anschließen das
-     * Nachrichten Objekt
+    /**TODO: Wird nicht benutzt
+     * Setzt den anzuzeigenden Buchstaben (buchstabe) auf der Walze (walzenPosition) und setzt anschliessend das
+     * Nachrichten-Objekt zurueck.
      *
-     * @param walzenPosition : int : Nummer der Walze
-     * @param buchstabe      : char : Buchstabe der zugewiesen soll
+     * @param walzenPosition : int : Nummer der Walze.
+     * @param buchstabe      : char : Buchstabe der zugewiesen werden soll.
      */
     public void setzeWalze(int walzenPosition, char buchstabe) {
         this.resetNachricht();
         this.hardware.setzePosition(walzenPosition, buchstabe);
     }
 
-    /**
-     * Setzt den Ring auf der Walze auf einen neuen Umstprungwert.
+    /**TODO: Wird nicht benutzt
+     * Setzt den Ring auf der Walze auf einen neuen Umsprungwert.
      *
-     * @param walzenPosition : int : Walze auf die der Ring gesteckt wird
-     * @param umsprungPunkt  : int : Buchstabe auf dem der Notch sitzt
+     * @param walzenPosition : int : Walze auf die der Ring gesteckt wird.
+     * @param umsprungPunkt  : int : Umspringpunkt (Signal an linke Walze zum Drehen).
      */
     public void setzeRing(int walzenPosition, int umsprungPunkt) {
         this.hardware.setzeRing(walzenPosition, umsprungPunkt);
     }
 
-    /**
+    /**TODO: Wird nicht benutzt
      * Setzt die Walze (walzeNr) in die Position (walzenPosition) der Enigma ein.
-     * Mit (ringstellung) gibt man die Position des Umsprungpunktes an.
+     * Mit Ringstellung(ringstellung) gibt man die Position des Umsprungpunktes an.
      *
-     * @param walzenPosition : int : Position der Walze in der Enigma (1-2-3)
-     * @param walzeNr        : int : Nummer der Walze die eingesetzt wird
-     * @param ringstellung   : int : Stellung des Ringes
+     * @param walzenPosition : int : Position der Walze in der Enigma (1-2-3).
+     * @param walzeNr        : int : Nummer der Walze die eingesetzt wird.
+     * @param ringstellung   : int : Stellung des Ringes.
      */
     public void setzeWalzeNr(int walzenPosition, int walzeNr, int ringstellung) {
         this.hardware.setzeWalzenNr(walzenPosition, walzeNr, ringstellung);
     }
 
-    /**
-     * Setzt das Kabel in beide Ports ein und fügt es dem Steckbrett Array hinzu.
+    /**TODO: Wird nicht benutzt
+     * Setzt das Kabel in beide Ports ein und fuegt es dem Steckbrett-Array hinzu.
      *
-     * @param port       : int : Kabel Nummer welches am Steckbrett eingesteckt wird
-     * @param verbindung : String : Verbindung welche die vertauschten Buchstaben angibt
-     * @return boolean : Wenn true, darf das Kabel gesteckt werden, wenn nicht, steckt da bereits schon eines
+     * @param port       : int : Kabel Nummer, welches am Steckbrett eingesteckt wird.
+     * @param verbindung : String : Verbindung, welche die vertauschten Buchstaben angibt.
+     * @return boolean : Wenn true, darf das Kabel gesteckt werden, wenn false, steckt da bereits schon eines.
      */
     public boolean setzeSteckbrett(int port, String verbindung) {
         return this.hardware.getSteckbrett().setzeVertauschung(port, verbindung.charAt(0), verbindung.charAt(1));
@@ -299,36 +295,36 @@ public class Codierer {
     //region fetch Funktionen
 
     /**
-     * Gibt die Ringstellungen aus dem Codebuch zurück
+     * Gibt die Ringstellungen aus dem Codebuch zurueck.
      *
-     * @return int[] : Array mit den Ringstellungen der drei eingesetzten Walzen
+     * @return int[] : Array mit den Ringstellungen der drei eingesetzten Walzen.
      */
     public int[] fetchRingstellung() {
         return this.codebuch.getRingstellung();
     }
 
     /**
-     * Gibt die Walzennummer aus dem Codebuch zurück
+     * Gibt die Walzennummer aus dem Codebuch zurueck.
      *
-     * @return int[] : Array mit den Nummern der drei eingesetzten Walzen
+     * @return int[] : Array mit den Nummern der drei eingesetzten Walzen.
      */
     public int[] fetchWalzenNr() {
         return this.codebuch.getWalzenlage();
     }
 
     /**
-     * Gibt die Steckverbindungen aus dem Codebuch zurück
+     * Gibt die Steckverbindungen aus dem Codebuch zurueck.
      *
-     * @return char[][] : Array mit den gesteckten Verbindungen im Steckbrett
+     * @return char[][] : Array mit den gesteckten Verbindungen im Steckbrett.
      */
     public char[][] fetchSteckverbindungen() {
         return this.codebuch.getSteckverbindung();
     }
 
     /**
-     * Gibt die aktuellen Buchstaben auf den Walzen zurück
+     * Gibt die aktuellen Buchstaben auf den Walzen zurueck.
      *
-     * @return char[] : Walzen Array mit der aktuellen Position
+     * @return char[] : Walzen Array mit der aktuellen Positionen.
      */
     public char[] fetchWalzen() {
         char[] walzen = new char[3];
@@ -340,7 +336,7 @@ public class Codierer {
     }
 
     /**
-     * Ueberprueft welche Buchstaben noch zur Vertauschung verfügbar sind
+     * Ueberprueft welche Buchstaben noch zur Vertauschung verfuegbar sind.
      *
      * @param port: Zahl zwischen 0-9: entspricht der Kabelnummer.
      * @return String: liefert einen String mit den verfuegbaren Buchstaben zurueck.
@@ -353,16 +349,15 @@ public class Codierer {
     //region codierer
 
     /**
-     * Hier wird ein einzelner Buchstabe verschlüsselt.
-     * Man muss hier ebenfalls mitgeben ob der codierte String in Codierer.nachricht gespeichert werden soll oder nicht.
+     * Hier wird ein einzelner Buchstabe verschluesselt.
+     * Man muss hier ebenfalls mitgeben, ob der codierte String in "nachricht" gespeichert werden soll oder nicht.
      * In der Regel ist dies der Fall.
      *
-     * @param buchstabe : char : Der zu codierende Buchstabe
-     * @param save      : boolean : Nachricht speichern oder nicht
-     * @return char     : Der codierte Buchstabe
+     * @param buchstabe : char : Der zu codierende Buchstabe.
+     * @param save      : boolean : Nachricht speichern oder nicht.
+     * @return char     : Der codierte Buchstabe.
      */
     public char codiere(char buchstabe, boolean save) {
-
         char codiert = this.hardware.codiere(buchstabe);
 
         if (save) {
@@ -373,16 +368,15 @@ public class Codierer {
     }
 
     /**
-     * Codiert den Übergebenen String.
-     * Man muss hier ebenfalls mitgeben ob der codierte String in Codierer.nachricht gespeichert werden soll oder nicht.
+     * Codiert den uebergebenen String.
+     * Man muss hier ebenfalls mitgeben, ob der codierte String in "nachricht" gespeichert werden soll oder nicht.
      * In der Regel ist dies der Fall.
      *
-     * @param klartext : String : Der zu codierende Text
-     * @param save     : boolean : Nachricht speichern oder nicht
-     * @return String : Der codierte Text zusätzlich als Rückgabe
+     * @param klartext : String : Der zu codierende Text.
+     * @param save     : boolean : Nachricht speichern oder nicht.
+     * @return String : Der codierte Text zusaetzlich als Rueckgabe.
      */
     public String codiere(String klartext, boolean save) {
-
         StringBuilder sb = new StringBuilder();
 
         for (char buchstabe : klartext.toCharArray()) {
@@ -393,13 +387,13 @@ public class Codierer {
     }
 
     /**
-     * Diese Funktion erwartet als (codierteNachricht) eine korrekte Enigma Nachricht.
-     * Ihr muss auch der Tag der codierung mitgegeben werden. Dieser weiß dein Funker im Funkraum.
-     * In der Regel ist dies der Tag des Nachrichten empfangs.
+     * Diese Funktion erwartet als (codierteNachricht) eine korrekte Enigma-Nachricht.
+     * Ihr muss auch der Tag der Codierung mitgegeben werden. Dieser weiss dein Funker im Funkraum.
+     * In der Regel ist dies der Tag des Nachrichtenempfangs.
      *
-     * @param codierteNachricht : String : Enigma codierte Nachricht
-     * @param tag               : int : Tag der Nachricht
-     * @return String : decodierte Nachricht
+     * @param codierteNachricht : String : Enigma-codierte Nachricht.
+     * @param tag               : int : Tag der Nachricht.
+     * @return String : decodierte Nachricht.
      */
     private String decodiere(String codierteNachricht, int tag) {
 
@@ -411,19 +405,17 @@ public class Codierer {
         String[] nachricht = codierteNachricht.split(" ");
         StringBuilder sb = new StringBuilder();
 
-        // Uhrzeit
+        // Uhrzeit und Zeichenanzahl der Nachricht
         sb.append(nachricht[0]).append(" ");
-
-        // Zeichen Anzahl der Nachricht
         sb.append(nachricht[1]).append(" ");
 
-        // Spruchschlüssel
+        // Spruchschluessel
         String spruchschluessel = this.decodiereString(nachricht[2]);
 
         sb.append(spruchschluessel).append(" ");
         sb.append(this.decodiereString(nachricht[3])).append(" ");
 
-        // Walzen neu einstellen mit dem Spruchschlüssel
+        // Walzen neu einstellen mit dem Spruchschluessel
         this.hardware.setzePosition(0, spruchschluessel.charAt(0));
         this.hardware.setzePosition(1, spruchschluessel.charAt(1));
         this.hardware.setzePosition(2, spruchschluessel.charAt(2));
@@ -435,14 +427,13 @@ public class Codierer {
     }
 
     /**
-     * Zerlegt den übergebenen String in einen char Array und decodiert jedes Zeichen.
-     * Der String wird dann decodiert zurück gegeben.
+     * Zerlegt den uebergebenen String in einen char-Array und decodiert jedes Zeichen.
+     * Der String wird dann decodiert zurueckgegeben.
      *
-     * @param nachricht : String : Der zu decodierende Text
-     * @return String : Der decodierte Text
+     * @param nachricht : String : Der zu decodierende Text.
+     * @return String : Der decodierte Text.
      */
     private String decodiereString(String nachricht) {
-
         StringBuilder sb = new StringBuilder();
 
         for (char buchstabe : nachricht.toCharArray()) {
@@ -457,23 +448,23 @@ public class Codierer {
 
     //region Sonstige
 
-    /**
-     * Prüft ob der Port auf den das Kabel gesteckt werden soll, noch frei ist.
+    /**TODO: Wird nicht benutzt
+     * Prueft ob der Port auf dem das Kabel gesteckt werden soll, noch frei ist.
      * <p>
-     * setSteckbrett ausführen mit beiden Buchstaben als String
+     * setSteckbrett ausfuehren mit beiden Buchstaben als String.
      *
-     * @param buchstabe : char : Der zuletzt eingegebene Buchstabe
-     * @return boolean : Wenn der Buchstabe nicht vorhanden ist, wird true zurückgegeben, ansonsten false
+     * @param buchstabe : char : Der zuletzt eingegebene Buchstabe.
+     * @return boolean : Wenn der Buchstabe nicht vorhanden ist, wird true zurueckgegeben, ansonsten false.
      */
     public boolean pruefeSteckbrettPort(char buchstabe) {
         return this.hardware.getSteckbrett().ueberpruefeVertauschungen(buchstabe);
     }
 
     /**
-     * Ließt aus der empfangenen Nachricht den Spruchschlüssel aus und gibt ihn zurück.
+     * Liest aus der empfangenen Nachricht den Spruchschluessel aus und gibt ihn zurueck.
      *
-     * @param empfangeneNachricht : String : Die empfangene Nachricht als String
-     * @return String : Der Spruchschlüssel mit welcher die Nachricht codiert wurde.
+     * @param empfangeneNachricht : String : Die empfangene Nachricht als String.
+     * @return String : Der Spruchschluessel, mit welcher die Nachricht codiert wurde.
      */
     public String empfangenerSpruchschluessel(String empfangeneNachricht) {
         String[] nachricht = empfangeneNachricht.split(" ");
@@ -482,7 +473,7 @@ public class Codierer {
     }
 
     /**
-     * Löscht das letzte Zeichen aus der Nachricht und dreht die Walzen eine Position zurück.
+     * Loescht das letzte Zeichen aus der Nachricht und dreht die Walzen eine Position zurueck.
      */
     public void letztesZeichenLoeschen() {
         this.hardware.dreheWalzen(-1);
@@ -494,7 +485,7 @@ public class Codierer {
     //region Getter
 
     /**
-     * Liest die Kenngruppe aus welche die Maschine gerade besitzt. Früher war dies eine eindeutige Nummer
+     * Liest die Kenngruppe aus, welche die Maschine gerade besitzt. Frueher war dies eine eindeutige Nummer,
      * die einer Einheit zugewiesen war. Wir hinterlegen hier einen Benutzernamen.
      *
      * @return String : Kenngruppe
@@ -504,10 +495,10 @@ public class Codierer {
     }
 
     /**
-     * Der Spruchschlüssel wird, zur internen Verwendung, auch im Klartext gespeichert.
-     * Wir brauchen diesen dann zum codieren der eigentlichen Nachricht.
+     * Der Spruchschluessel wird, zur internen Verwendung, auch im Klartext gespeichert.
+     * Wir brauchen diesen dann zum Codieren der eigentlichen Nachricht.
      *
-     * @return String : Der klartext Spruchschlüssel
+     * @return String : Der Klartext des Spruchschluessels
      */
     public String getSpruchschluessel() {
         return this.spruchschluessel;
-- 
GitLab