diff --git a/pom.xml b/pom.xml index 6035d0d533e8fbf2fb4c5162451d781cb11c4989..680b9ad5b923a384115bb376c477879ec0abd7d2 100644 --- a/pom.xml +++ b/pom.xml @@ -1,7 +1,7 @@ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> - <groupId>Projektarbeit</groupId> + <groupId>projekt</groupId> <artifactId>enigma</artifactId> <version>0.0.1</version> <properties> @@ -9,7 +9,7 @@ <!--region[useage]--> <use.java.version>11</use.java.version> <use.javafx.version>11.0.2</use.javafx.version> - <use.app.main.class>${project.artifactId}.Main</use.app.main.class> + <use.app.main.class>${project.groupId}.${project.artifactId}.Main</use.app.main.class> <!--endregion[useage]--> <maven.compiler.source>${use.java.version}</maven.compiler.source> <maven.compiler.target>${use.java.version}</maven.compiler.target> diff --git a/src/main/java/enigma/model/Steckbrett.java b/src/main/java/enigma/model/Steckbrett.java deleted file mode 100644 index 63bf834938258d61db0c6dfa2e555ce1ec2c20e4..0000000000000000000000000000000000000000 --- a/src/main/java/enigma/model/Steckbrett.java +++ /dev/null @@ -1,79 +0,0 @@ -package enigma.model; - -/** - *TODO: Dokumentieren - */ -public class Steckbrett { - /** - *TODO: Dokumentieren - */ - private int zaehler; - private Character[] orginalBuchstaben; - private Character[] getauschteBuchstaben; - - /** - *TODO: Dokumentieren - */ - public Steckbrett() { - - orginalBuchstaben = new Character[10]; - getauschteBuchstaben = new Character[10]; - } - - /** - *TODO: Dokumentieren - * - * @param buchstabe1 : char - * @param buchstabe2 : char - * @return boolean - */ - public boolean setzeVertauschung(char buchstabe1, char buchstabe2) { - - if (zaehler < orginalBuchstaben.length) { - orginalBuchstaben[zaehler] = buchstabe1; - getauschteBuchstaben[zaehler++] = buchstabe2; - } else { - System.err.println("Zu viele Vertauschungen angegeben!"); - } - - return ueberpruefeVertauschungen(); - } - - /** - *TODO: Dokumentieren - * - * @return boolean - */ - public boolean ueberpruefeVertauschungen() { - - boolean result = true; - for (int n = 0; n < orginalBuchstaben.length; n++) { - if (orginalBuchstaben.equals(orginalBuchstaben[n]) || getauschteBuchstaben.equals(orginalBuchstaben[n]) || getauschteBuchstaben.equals(getauschteBuchstaben[n])) { - System.err.println("Vertauschungen enthalten unzulässige Dopplungen"); - result = false; - } - } - - return result; - } - - /** - * TODO: Dokumentieren - * - * @param buchstabe : Character - * @return char - */ - public char codiere(Character buchstabe) { - - for (int index = 0; index < getauschteBuchstaben.length; index++) { - if (buchstabe.equals(getauschteBuchstaben[index])) { - buchstabe = orginalBuchstaben[index]; - } else if (buchstabe.equals(orginalBuchstaben[index])) { - buchstabe = getauschteBuchstaben[index]; - } - } - - return buchstabe; - } - -} diff --git a/src/main/java/enigma/App.java b/src/main/java/projekt/enigma/App.java similarity index 92% rename from src/main/java/enigma/App.java rename to src/main/java/projekt/enigma/App.java index 5d078d0fa9d532dec6b8ea972abe90408a6b69ca..72a9b8a5bb3b6636a3e15044ac516f19eae64eb5 100644 --- a/src/main/java/enigma/App.java +++ b/src/main/java/projekt/enigma/App.java @@ -1,13 +1,11 @@ -package enigma; +package projekt.enigma; -import enigma.model.Codierer; +import projekt.enigma.model.Codierer; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; -import org.apache.http.HttpException; - import java.io.IOException; /** @@ -66,4 +64,4 @@ public class App extends Application { stage.show(); } -} \ No newline at end of file +} diff --git a/src/main/java/enigma/GuiController.java b/src/main/java/projekt/enigma/GuiController.java similarity index 91% rename from src/main/java/enigma/GuiController.java rename to src/main/java/projekt/enigma/GuiController.java index 2c0e6e3862ca379105f6ce39e5973fe976301f58..4e2a1a3652740e0e2128baa8ab00c9bda8d0ef13 100644 --- a/src/main/java/enigma/GuiController.java +++ b/src/main/java/projekt/enigma/GuiController.java @@ -1,6 +1,6 @@ -package enigma; +package projekt.enigma; -import enigma.model.Codierer; +import projekt.enigma.model.Codierer; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.control.*; @@ -428,13 +428,15 @@ public class GuiController { if(mb.getId().equals(mBtnStartPos1.getId()))setzePosition(1,mi.getText().charAt(0)); if(mb.getId().equals(mBtnStartPos2.getId()))setzePosition(2,mi.getText().charAt(0)); if(mb.getId().equals(mBtnStartPos3.getId()))setzePosition(3,mi.getText().charAt(0)); - if(mb.getId().equals(mBtnWalzPos1.getId()))setzeWalze(1,mi.getText().charAt(0)); - if(mb.getId().equals(mBtnWalzPos2.getId()))setzeWalze(2,mi.getText().charAt(0)); - if(mb.getId().equals(mBtnWalzPos3.getId()))setzeWalze(3,mi.getText().charAt(0)); - if(mb.getId().equals(mBtnNotchPos1.getId()))setzeRing(1,mi.getText().charAt(0)); - if(mb.getId().equals(mBtnNotchPos2.getId()))setzeRing(2,mi.getText().charAt(0)); - if(mb.getId().equals(mBtnNotchPos3.getId()))setzeRing(3,mi.getText().charAt(0)); - + if(mb.getId().equals(mBtnWalzPos1.getId()))setzeWalze(1,mi.getText()); + if(mb.getId().equals(mBtnWalzPos2.getId()))setzeWalze(2,mi.getText()); + if(mb.getId().equals(mBtnWalzPos3.getId()))setzeWalze(3,mi.getText()); + if(mb.getId().equals(mBtnNotchPos1.getId())) + setzeRing(1,Integer.parseInt(mi.getText())-1); + if(mb.getId().equals(mBtnNotchPos2.getId())) + setzeRing(2,Integer.parseInt(mi.getText())-1); + if(mb.getId().equals(mBtnNotchPos3.getId())) + setzeRing(3,Integer.parseInt(mi.getText())-1); } /** @@ -535,10 +537,31 @@ public class GuiController { * Setzt die Anzeige des entsprechende Gui-Element auf die entsprechende Walze * ->d.h. welche Walze sitzt auf welcher Position * - * @param walzeNr => gibt die Walzennummer an (entspricht - * @param walzenPosition => gibt die Position der Walze (entspricht + * @param walzeRoemischNr => gibt die Walzennummer an + * @param walzenPosition => gibt die Position der Walze */ - private void setzeWalze(int walzenPosition, int walzeNr) { + private void setzeWalze(int walzenPosition, String walzeRoemischNr) { + int walzeNr=0; + switch (walzeRoemischNr){ + case "I": + walzeNr=0; + break; + case "II": + walzeNr=1; + break; + case "III": + walzeNr=2; + break; + case "IV": + walzeNr=4; + break; + case "V": + walzeNr=4; + break; + default: + break; + } + switch (walzenPosition) { case 1: mBtnWalzPos1.setText(walzenNr[walzeNr]); @@ -561,19 +584,19 @@ public class GuiController { * Mitnahmeposition meint => die nächste Walze wird bei erreichen dieser Position (notch) * um eine Stelle versetzt * - * @param walze => gibt die walze an - * @param position => gibt den notch der Walze (walze) an + * @param ringStellung => gibt die walze an + * @param walzenPosition => gibt den notch der Walze (walze) an */ - private void setzeRing(int walze, int position) { - switch (walze) { + private void setzeRing(int walzenPosition, int ringStellung) { + switch (walzenPosition) { case 1: - mBtnNotchPos1.setText(ringNr[position]); + mBtnNotchPos1.setText(ringNr[ringStellung]); break; case 2: - mBtnNotchPos2.setText(ringNr[position]); + mBtnNotchPos2.setText(ringNr[ringStellung]); break; case 3: - mBtnNotchPos3.setText(ringNr[position]); + mBtnNotchPos3.setText(ringNr[ringStellung]); break; default: break; diff --git a/src/main/java/enigma/KenngruppeController.java b/src/main/java/projekt/enigma/KenngruppeController.java similarity index 88% rename from src/main/java/enigma/KenngruppeController.java rename to src/main/java/projekt/enigma/KenngruppeController.java index a1049e199af8e9f5f698d8a4acb6f8b673fa076c..3371b0f647ea6f27a72082ae0f18a44b79faf489 100644 --- a/src/main/java/enigma/KenngruppeController.java +++ b/src/main/java/projekt/enigma/KenngruppeController.java @@ -1,4 +1,4 @@ -package enigma; +package projekt.enigma; import java.io.IOException; import javafx.fxml.FXML; diff --git a/src/main/java/enigma/Main.java b/src/main/java/projekt/enigma/Main.java similarity index 86% rename from src/main/java/enigma/Main.java rename to src/main/java/projekt/enigma/Main.java index 22bb0df9e78ca242102994c499a059a629b4c57a..f016016d5dd3ebc14cae30918487a14eec35ac8e 100644 --- a/src/main/java/enigma/Main.java +++ b/src/main/java/projekt/enigma/Main.java @@ -1,4 +1,4 @@ -package enigma; +package projekt.enigma; import java.sql.SQLException; diff --git a/src/main/java/enigma/database/DatenbankSqlite.java b/src/main/java/projekt/enigma/database/DatenbankSqlite.java similarity index 95% rename from src/main/java/enigma/database/DatenbankSqlite.java rename to src/main/java/projekt/enigma/database/DatenbankSqlite.java index 00e88ea8e5293d287074570f9f020d161fea6c76..401af573f4c4c30bd1e8e04c18ca79f647348cb0 100644 --- a/src/main/java/enigma/database/DatenbankSqlite.java +++ b/src/main/java/projekt/enigma/database/DatenbankSqlite.java @@ -1,4 +1,4 @@ -package enigma.database; +package projekt.enigma.database; import java.sql.*; @@ -40,11 +40,16 @@ public class DatenbankSqlite { * 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. * - * TODO: Es wird kein Codebuch Objekt mehr erzeugt sondern ein String[] zurück gegeben * Hole den heutigen Eintrag aus der SQLite Datenbank und erstelle daraus ein Codebuch Objekt * * @param tag : int : Tag für welchen ein Codebuch benötigt wird. - * @return Codebuch : Codebuch Object mit dem Codebuch des angefragten Tages + * @return String : Die Einstellungen des angefragten Tages + * <p> + * String[0] : Tag + * String[1] : Walzenlage + * String[2] : Ringstellung + * String[3] : Steckverbindung + * </p> */ public String[] getCodebuch(int tag) { diff --git a/src/main/java/enigma/model/Codebuch.java b/src/main/java/projekt/enigma/model/Codebuch.java similarity index 97% rename from src/main/java/enigma/model/Codebuch.java rename to src/main/java/projekt/enigma/model/Codebuch.java index 115ed442dfbebc191cbe532998cfa47833987acf..aacb58c97a1dfad19a89cd97cb8fe963aecf5371 100644 --- a/src/main/java/enigma/model/Codebuch.java +++ b/src/main/java/projekt/enigma/model/Codebuch.java @@ -1,6 +1,6 @@ -package enigma.model; +package projekt.enigma.model; -import enigma.database.DatenbankSqlite; +import projekt.enigma.database.DatenbankSqlite; import java.time.LocalDate; import java.time.ZoneId; @@ -55,7 +55,7 @@ public class Codebuch { * TODO: Dokumentieren * @param tag */ - public void getTagesschluessel(int... tag) { + public void fetchTagesschluessel(int... tag) { String[] walzenlage, ringstellung, db; if(tag.length > 0) { diff --git a/src/main/java/enigma/model/Codierer.java b/src/main/java/projekt/enigma/model/Codierer.java similarity index 85% rename from src/main/java/enigma/model/Codierer.java rename to src/main/java/projekt/enigma/model/Codierer.java index 8b1ff3bb4ba9a89def61d34a21be45df40f9d748..2217aafde82a467d170c01bf2865b3e1b9ec24b9 100644 --- a/src/main/java/enigma/model/Codierer.java +++ b/src/main/java/projekt/enigma/model/Codierer.java @@ -1,4 +1,4 @@ -package enigma.model; +package projekt.enigma.model; import org.apache.http.HttpException; @@ -31,7 +31,7 @@ public class Codierer { this.kenngruppe = ""; this.kenngruppeCodiert = ""; this.codebuch = new Codebuch(); - this.codebuch.getTagesschluessel(); + this.codebuch.fetchTagesschluessel(); } /** @@ -143,8 +143,8 @@ public class Codierer { // Spruchschlüssel anhängen this.spruchschluesselCodiert.substring(0, 3) + " " + this.spruchschluesselCodiert.substring(3, 6) + " "; - // Kenngruppe an das Ende setzen - //this.kenngruppeCodiert; + // Kenngruppe an das Ende setzen + //this.kenngruppeCodiert; } /** @@ -173,7 +173,7 @@ public class Codierer { /** * Gibt die letzte empfangene Nachricht zurück * <br> - * String[0} Tag wann die Nachricht gesendet wurde + * String[0] Tag wann die Nachricht gesendet wurde * String[1] = Die verschlüsselte Nachricht * String[2] = Nachricht im Klartext */ @@ -188,6 +188,19 @@ public class Codierer { nachricht[0] = codierteNachricht[0]; nachricht[1] = mc.convertMorsecodeToBuchstabe(codierteNachricht[1]); nachricht[2] = this.decodiere(nachricht[1], Integer.parseInt(nachricht[0])); + 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(" "); + i += 5; + } else { + sb.append(nachricht[1].substring(i)); + break; + } + } + nachricht[1] = sb.toString(); } return nachricht; @@ -255,7 +268,7 @@ public class Codierer { */ public char codiere(char buchstabe, boolean save) { char codiert = this.hardware.codiere(buchstabe); - if(save) { + if (save) { this.nachricht += codiert; } @@ -264,6 +277,7 @@ public class Codierer { /** * TODO: Dokumentieren + * * @param klartext * @param save * @return @@ -290,7 +304,7 @@ public class Codierer { // Hardware reseten und Tageseinstellungen aus dem Codebuch laden this.initialisiereHardware(); - this.codebuch.getTagesschluessel(tag); + this.codebuch.fetchTagesschluessel(tag); String[] nachricht = codierteNachricht.split(" "); StringBuilder sb = new StringBuilder(); @@ -319,6 +333,7 @@ public class Codierer { /** * TODO: Dokumentieren + * * @param nachricht * @return */ @@ -339,8 +354,48 @@ public class Codierer { * TODO: Dokumentieren */ public void resetHardware() { - this.initialisiereHardware(); } + /** + * Setzt die Walze auf der Position (walzenPosition) in die Enigma ein. + * Mit dem char (position) sagt man auf welchen Buchstaben sie eingestellt werden soll. + * + * @param walzenPosition + * @param position + */ + public void setWalze(int walzenPosition, char position) { + this.hardware.setzePosition(walzenPosition, position); + } + + /** + * TODO: Dokumentieren + * + * @param walzenPosition + * @param position + */ + public void setRing(int walzenPosition, int position) { + this.hardware.setzeRing(walzenPosition, position); + } + + /** + * TODO: Dokumentieren + * + * @param walzenPosition + * @param walzeNr + */ + public void setWalzeNr(int walzenPosition, int walzeNr) { + this.hardware.setzeWalzenNr(walzenPosition, walzeNr, 1); + } + + /** + * TODO: Dokumentieren + * + * @param feldNr + * @param verbindung + */ + public void setSteckbrett(int feldNr, String verbindung) { + this.hardware.getSteckbrett().setzeVertauschung(verbindung.charAt(0), verbindung.charAt(1)); + } + } diff --git a/src/main/java/enigma/model/Funkraum.java b/src/main/java/projekt/enigma/model/Funkraum.java similarity index 99% rename from src/main/java/enigma/model/Funkraum.java rename to src/main/java/projekt/enigma/model/Funkraum.java index d3fe2883fd86fb468ce832cfd64cf460176b6a99..96a3a35b3fa9391afad8d5193ff4923bb368c391 100644 --- a/src/main/java/enigma/model/Funkraum.java +++ b/src/main/java/projekt/enigma/model/Funkraum.java @@ -1,4 +1,4 @@ -package enigma.model; +package projekt.enigma.model; import org.apache.http.HttpEntity; import org.apache.http.HttpException; diff --git a/src/main/java/enigma/model/Hardware.java b/src/main/java/projekt/enigma/model/Hardware.java similarity index 99% rename from src/main/java/enigma/model/Hardware.java rename to src/main/java/projekt/enigma/model/Hardware.java index 1842e1e6725e2cf6c1aa669db1a9e85ac6b6d818..b37ddd166c98d2274e0722e401418c81d354bc16 100644 --- a/src/main/java/enigma/model/Hardware.java +++ b/src/main/java/projekt/enigma/model/Hardware.java @@ -1,4 +1,4 @@ -package enigma.model; +package projekt.enigma.model; /** * In dieser Klasse wird die Hardware zusammen gefasst. diff --git a/src/main/java/enigma/model/Morsecode.java b/src/main/java/projekt/enigma/model/Morsecode.java similarity index 99% rename from src/main/java/enigma/model/Morsecode.java rename to src/main/java/projekt/enigma/model/Morsecode.java index 01df55dcd0c655202208e050cf11cb4d75af4971..7d99652547325b95631bb82dc8216ff4bdf5bc25 100644 --- a/src/main/java/enigma/model/Morsecode.java +++ b/src/main/java/projekt/enigma/model/Morsecode.java @@ -1,4 +1,4 @@ -package enigma.model; +package projekt.enigma.model; import java.util.*; import java.util.Map.Entry; diff --git a/src/main/java/enigma/model/Reflektor.java b/src/main/java/projekt/enigma/model/Reflektor.java similarity index 63% rename from src/main/java/enigma/model/Reflektor.java rename to src/main/java/projekt/enigma/model/Reflektor.java index 4aabb1b6841b475125ee7fd8c5df1feb0a158f86..9e5e6b1424852c8ee063179f8a8d216aac9c969a 100644 --- a/src/main/java/enigma/model/Reflektor.java +++ b/src/main/java/projekt/enigma/model/Reflektor.java @@ -1,43 +1,41 @@ -package enigma.model; +package projekt.enigma.model; /** * Klasse Reflektor - * <p> + * <br> * Der Reflektor nimmt einen Buchstaben der Klasse Walze entgegen und und kodiert diesen. * Der kodierte Buchstabe wird an die Klasse Walze wieder zurückgegeben. - * <p> - * Prinzipiell verhält sich die Klasse Refelktor wie die Klasse Walze, außer das sie sich - * nach Betätigung einer Taste nicht dreht (starr montiert) und sie gibt keine Signale + * <br> + * Prinzipiell verhält sich die Klasse Reflektor wie die Klasse Walze, außer das sie sich + * nach Betätigung einer Taste nicht dreht (quasi starr montiert ist) und sie gibt keine Signale * an andere Walzen zum drehen. */ public class Reflektor { /** - * Konstanten und Variablen der Klasse Reflektor - * <p> * WALZE_ALPHABET : konstanter Char-Array mit den Werten des Alphabeths (26 Werte) - * WALZE_REFLEKTOR : konstanter Char-Array mit den Werten des Reflektors (26 Werte) - * reflektorBuchstabeRein : Character mit dem an die Klasse übergebenen Character - * reflektorBuchstabeRaus : Character nach der Codierung in der Klasse Reflektor - * iPositionReflektor : Integer mit der Positionsnummer des Characters im Array */ private final Character[] WALZE_ALPHABET = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}; + + /** + * WALZE_REFLEKTOR : konstanter Char-Array mit den Werten des Reflektors (26 Werte) + */ private final Character[] WALZE_REFLEKTOR = {'E', 'J', 'M', 'Z', 'A', 'L', 'Y', 'X', 'V', 'B', 'W', 'F', 'C', 'R', 'Q', 'U', 'O', 'N', 'T', 'S', 'P', 'I', 'K', 'H', 'G', 'D'}; /** - * Funktion Codiere - * <p> + * Funktion codiere + * <br> * Durchsucht das konstante Char-Array WALZE_ALPHABET nach der Position eines bestimmten * Buchstabens und gibt den Character an der entsprechenden Position im konstanten * Char-Array WALZE_REFLEKTOR zurück. * - * @return reflektorBuchstabeRaus: Character: Der kodierte Buchstabe aus dem Reflektor + * @return WALZE_REFLEKTOR[iPositionReflektor]: Character: Der kodierte Buchstabe aus dem Reflektor */ public char codiere(Character buchstabe) { int iPositionReflektor = 0; - /*Ermittelt die Position des Buchstaben buchstabe auf der Alphabetswalze*/ + //Ermittelt die Position des Buchstaben "buchstabe" auf der Alphabetswalze for (int index = 0; index < WALZE_ALPHABET.length; index++) { if (buchstabe.equals(WALZE_ALPHABET[index])) { iPositionReflektor = index; @@ -45,8 +43,6 @@ public class Reflektor { } } - /*Im Char-Array WALZE_REFLEKTOR wird der Character an der Position iPositionReflektor ausgegeben*/ return WALZE_REFLEKTOR[iPositionReflektor]; } - } diff --git a/src/main/java/projekt/enigma/model/Steckbrett.java b/src/main/java/projekt/enigma/model/Steckbrett.java new file mode 100644 index 0000000000000000000000000000000000000000..b0ad4f4cb212d07e6bc2398ac5275142bbe8d756 --- /dev/null +++ b/src/main/java/projekt/enigma/model/Steckbrett.java @@ -0,0 +1,116 @@ +package projekt.enigma.model; + +/** + * Klasse Steckbrett + * <br> + * Das Steckbrett diente dazu Buchstaben paarweise zu vertauschen noch bevor diese durch die Walzen codiert werden. + * Die Klasse Steckbrett nimmt bis zu 10 paarweise zu vertauschende Buchstabenpaare entgegen, prueft diese auf + * Zulaessigkeit und tauscht diese dann paarweise aus. + */ +public class Steckbrett { + + /** + * zaehler: Int, der als Laufvariable genutzt wird + */ + private int zaehler; + + /** + * orginalBuchstaben: Character-Array, der jeweils den ersten zu vertauschenden Buchstaben enthält + */ + private Character[] orginalBuchstaben; + + /** + * getauschteBuchstaben: Character-Array, der jeweils den zweiten zu vertauschenden Buchstaben enthält + */ + private Character[] getauschteBuchstaben; + + + /** + * Konstruktor Steckbrett + * <br> + * Erzeugt zwei Charakter-Arrays (orginalBuchstaben und getauschteBuchstaben) der Länge 10. + */ + public Steckbrett() { + + orginalBuchstaben = new Character[10]; + getauschteBuchstaben = new Character[10]; + } + + /** + * TODO: Fehlerfall kommentieren, bzw. Exceptions werfen ????? + * TODO: Überprüfe Vertauschungen für jeden Buchstaben aufrufen + * Funktion setzeVertauschung + * <br> + * Der Funktion setzeVertauschung werden 2 Buchstaben (buchstabe1 und buchstabe2) übergeben. + * buchstabe1 wird in das Character-Array orginalBuchstaben geschrieben. + * buchstabe2 wird in das Character-Array getauschteBuchstaben geschrieben. + * Anschließend wird die Funktion ueberpruefeVertauschungen aufgerufen. + * + * @param buchstabe1 : char: Gibt den ersten Buchstaben an, der getauscht werden soll. + * @param buchstabe2 : char: gibt den zweiten Buchstaben an, mit dem der erste getauscht werden soll. + * @return ueberpruefeVertauschungen(): Ueberprueft ob die Vertauschungen zulaessig sind. + */ + public boolean setzeVertauschung(char buchstabe1, char buchstabe2) { + if (zaehler < orginalBuchstaben.length) { + orginalBuchstaben[zaehler] = buchstabe1; + getauschteBuchstaben[zaehler++] = buchstabe2; + } else { + System.err.println("Zu viele Vertauschungen angegeben!"); + } + + return ueberpruefeVertauschungen(); + } + + /** + * TODO: Fehlerfall kommentieren, bzw. Exceptions werfen ????? + * TODO: Buchstabe zum überpüfen übergeben + * Funktion ueberpruefeVertauschungen + * <br> + * Die Funktion ueberpruefeVertauschungen prueft ob die Buchstabenvertauschung zulaessig ist. + * Eine Buchstabenvertauschung ist zulaessig, wenn keine Dopplungen der zu vertauschenden Buchstaben auftritt + * (ein Buchstabe nicht mehrmals vertauscht wird). + * + * @return boolean : result : Flag, der die Zulassigkeit der Vertauschungen zurueckgibt. + */ + public boolean ueberpruefeVertauschungen() { + boolean result = true; + + /*Es wird geprüft: + 1. Ob im Array originalBuchstaben Dopplungen enthalten sind. + 2. Ob im Array originalBuchstaben Buchstaben im Array getauschteBuchstaben enthalten sind. + 3. Ob im Array getauschteBuchstaben Dopplungen enthalten sind. + Tritt einer der Fälle ein, erfolgt eine Konsolenausgabe und der Flag wird auf false gesetzt. + */ + for (int n = 0; n < orginalBuchstaben.length; n++) { + if (orginalBuchstaben.equals(orginalBuchstaben[n]) || + getauschteBuchstaben.equals(orginalBuchstaben[n]) || + getauschteBuchstaben.equals(getauschteBuchstaben[n])) { + System.err.println("Vertauschungen enthalten unzulässige Dopplungen"); + result = false; + } + } + + return result; + } + + /** + * Funktion codiere + * <br> + * Die Funktion codiere tauscht den uebergebenen Character buchstabe mit dem zu tauschenden Character aus. + * + * @param buchstabe : Character : Buchstabe der codiert werden soll. + * @return buchstabe : Character : Codierter Buchstabe. + */ + public char codiere(Character buchstabe) { + for (int index = 0; index < getauschteBuchstaben.length; index++) { + if (buchstabe.equals(getauschteBuchstaben[index])) { + buchstabe = orginalBuchstaben[index]; + } else if (buchstabe.equals(orginalBuchstaben[index])) { + buchstabe = getauschteBuchstaben[index]; + } + } + + return buchstabe; + } + +} diff --git a/src/main/java/enigma/model/Walze.java b/src/main/java/projekt/enigma/model/Walze.java similarity index 98% rename from src/main/java/enigma/model/Walze.java rename to src/main/java/projekt/enigma/model/Walze.java index 42d9c8715a3ce319622489b3fa98bfadcc83dc4e..51648acc3c23be9b528764252ab92f672c3e74a5 100644 --- a/src/main/java/enigma/model/Walze.java +++ b/src/main/java/projekt/enigma/model/Walze.java @@ -1,4 +1,4 @@ -package enigma.model; +package projekt.enigma.model; /** * Klasse Walze @@ -140,6 +140,8 @@ public class Walze { /** * TODO: Dokumentieren + * TODO: Ich glaube das kann weg? + * * @return */ public char getAnzeige() { diff --git a/src/main/resources/enigma/codebuch.sqlite b/src/main/resources/projekt/enigma/codebuch.sqlite similarity index 100% rename from src/main/resources/enigma/codebuch.sqlite rename to src/main/resources/projekt/enigma/codebuch.sqlite diff --git a/src/main/resources/enigma/gui.fxml b/src/main/resources/projekt/enigma/gui.fxml similarity index 99% rename from src/main/resources/enigma/gui.fxml rename to src/main/resources/projekt/enigma/gui.fxml index e021eda7cb485e554280df7bed3ebacb0e1fe6dd..0768e9a87a762c1ac89728ec80a5872f60a02dd1 100644 --- a/src/main/resources/enigma/gui.fxml +++ b/src/main/resources/projekt/enigma/gui.fxml @@ -18,7 +18,7 @@ <?import javafx.scene.shape.Circle?> <?import javafx.scene.text.Font?> -<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="699.0" prefWidth="968.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="enigma.GuiController"> +<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="677.0" prefWidth="967.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="projekt.enigma.GuiController"> <children> <GridPane layoutY="313.0" prefHeight="393.0" prefWidth="968.0" AnchorPane.bottomAnchor="-7.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="313.0"> <columnConstraints> diff --git a/src/main/resources/enigma/kenngruppe.fxml b/src/main/resources/projekt/enigma/kenngruppe.fxml similarity index 100% rename from src/main/resources/enigma/kenngruppe.fxml rename to src/main/resources/projekt/enigma/kenngruppe.fxml diff --git a/src/test/java/enigma/model/CodebuchTest.java b/src/test/java/projekt/enigma/model/CodebuchTest.java similarity index 56% rename from src/test/java/enigma/model/CodebuchTest.java rename to src/test/java/projekt/enigma/model/CodebuchTest.java index 5dd7d2ed0157a2ce26dbea07d991b90065608785..ce7da24a9153fcda79ae1811ac3759e58327a21a 100644 --- a/src/test/java/enigma/model/CodebuchTest.java +++ b/src/test/java/projekt/enigma/model/CodebuchTest.java @@ -1,9 +1,7 @@ -package enigma.model; +package projekt.enigma.model; -import enigma.database.DatenbankSqlite; import org.junit.Assert; import org.junit.Test; -import java.sql.SQLException; public class CodebuchTest { @@ -14,13 +12,11 @@ public class CodebuchTest { "Ringstellung: 16,11,13\n" + "Steckverbindung: E:U,O:H,T:Z,A:S,M:R,I:V,C:G,F:Q,B:X,Y:K\n"; - try { - // Ausgabe auf der Konsole - String result = new DatenbankSqlite().getCodebuch(1).toString(); - Assert.assertEquals(result, expected, result); - } catch (SQLException e) { - e.printStackTrace(); - } + // Ausgabe auf der Konsole + Codebuch cb = new Codebuch(); + cb.fetchTagesschluessel(1); + String result = cb.toString(); + Assert.assertEquals(result, expected, result); } @Test diff --git a/src/test/java/enigma/model/HardwareTest.java b/src/test/java/projekt/enigma/model/HardwareTest.java similarity index 98% rename from src/test/java/enigma/model/HardwareTest.java rename to src/test/java/projekt/enigma/model/HardwareTest.java index 5eaeec04b8fc5e4b8fdcf726e901998350f04e31..742e6aba1b8679f81f8729a183fc7dd377616aa9 100644 --- a/src/test/java/enigma/model/HardwareTest.java +++ b/src/test/java/projekt/enigma/model/HardwareTest.java @@ -1,4 +1,4 @@ -package enigma.model; +package projekt.enigma.model; import org.junit.Assert; import org.junit.Test; diff --git a/src/test/java/enigma/model/ReflektorTest.java b/src/test/java/projekt/enigma/model/ReflektorTest.java similarity index 95% rename from src/test/java/enigma/model/ReflektorTest.java rename to src/test/java/projekt/enigma/model/ReflektorTest.java index 793b8cc987f4eabdeda5b27b6e363b5157add7d4..8cb11a94b3c94191e9d0cdec15ddfbf97f5d27ea 100644 --- a/src/test/java/enigma/model/ReflektorTest.java +++ b/src/test/java/projekt/enigma/model/ReflektorTest.java @@ -1,4 +1,4 @@ -package enigma.model; +package projekt.enigma.model; import org.junit.Assert; import org.junit.Test; diff --git a/src/test/java/enigma/model/SteckbrettTest.java b/src/test/java/projekt/enigma/model/SteckbrettTest.java similarity index 94% rename from src/test/java/enigma/model/SteckbrettTest.java rename to src/test/java/projekt/enigma/model/SteckbrettTest.java index 0f3fedb099afdc45ce8b57c766dabefd577dff3c..689b923f05fa2261a0b75ce33b9905221eb3fac6 100644 --- a/src/test/java/enigma/model/SteckbrettTest.java +++ b/src/test/java/projekt/enigma/model/SteckbrettTest.java @@ -1,4 +1,4 @@ -package enigma.model; +package projekt.enigma.model; import org.junit.Assert; import org.junit.Test; diff --git a/src/test/java/enigma/model/WalzeTest.java b/src/test/java/projekt/enigma/model/WalzeTest.java similarity index 94% rename from src/test/java/enigma/model/WalzeTest.java rename to src/test/java/projekt/enigma/model/WalzeTest.java index 819a94e25da96eafaa0e47901ca0a1be22ad12cc..7a898dd9c28224efe22df8d49726af786ed9e3db 100644 --- a/src/test/java/enigma/model/WalzeTest.java +++ b/src/test/java/projekt/enigma/model/WalzeTest.java @@ -1,4 +1,4 @@ -package enigma.model; +package projekt.enigma.model; import org.junit.Assert; import org.junit.Test; @@ -23,7 +23,7 @@ public class WalzeTest { } @Test - public void walzenPoition() { + public void getAnzeige() { Walze w = new Walze(1, 1); char temp = w.getAnzeige(); Assert.assertEquals('A', temp);