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