From 42d516d0fc34f8b7befe80319f625d3e8211df25 Mon Sep 17 00:00:00 2001 From: Dennis Eisold <de@itstall.de> Date: Thu, 28 Nov 2019 17:31:21 +0100 Subject: [PATCH] Das Package von Enigma in enigma umbenannt, SQLite in enigma.database verschoben --- LICENSE | 4 +- pom.xml | 4 +- src/main/java/{Enigma => enigma}/App.java | 50 ++++++-- .../{Enigma => enigma}/GuiController.java | 2 +- .../KenngruppeController.java | 2 +- src/main/java/{Enigma => enigma}/Main.java | 2 +- .../database}/DatenbankSqlite.java | 6 +- .../{Enigma => enigma}/model/Codebuch.java | 9 +- .../{Enigma => enigma}/model/Codierer.java | 42 ++++--- .../{Enigma => enigma}/model/Funkraum.java | 2 +- .../{Enigma => enigma}/model/Hardware.java | 27 ++-- .../{Enigma => enigma}/model/Morsecode.java | 2 +- .../{Enigma => enigma}/model/Reflektor.java | 2 +- .../{Enigma => enigma}/model/Steckbrett.java | 17 +-- .../java/{Enigma => enigma}/model/Walze.java | 117 ++++++++---------- .../{Enigma => enigma}/codebuch.sqlite | Bin .../resources/{Enigma => enigma}/gui.fxml | 2 +- .../{Enigma => enigma}/kenngruppe.fxml | 2 +- .../model/CodebuchTest.java | 3 +- .../model/HardwareTest.java | 32 ++--- .../model/ReflektorTest.java | 2 +- .../model/SteckbrettTest.java | 2 +- .../{Enigma => enigma}/model/WalzeTest.java | 14 ++- 23 files changed, 188 insertions(+), 157 deletions(-) rename src/main/java/{Enigma => enigma}/App.java (58%) rename src/main/java/{Enigma => enigma}/GuiController.java (99%) rename src/main/java/{Enigma => enigma}/KenngruppeController.java (92%) rename src/main/java/{Enigma => enigma}/Main.java (90%) rename src/main/java/{Enigma/model => enigma/database}/DatenbankSqlite.java (97%) rename src/main/java/{Enigma => enigma}/model/Codebuch.java (97%) rename src/main/java/{Enigma => enigma}/model/Codierer.java (91%) rename src/main/java/{Enigma => enigma}/model/Funkraum.java (99%) rename src/main/java/{Enigma => enigma}/model/Hardware.java (89%) rename src/main/java/{Enigma => enigma}/model/Morsecode.java (99%) rename src/main/java/{Enigma => enigma}/model/Reflektor.java (99%) rename src/main/java/{Enigma => enigma}/model/Steckbrett.java (89%) rename src/main/java/{Enigma => enigma}/model/Walze.java (80%) rename src/main/resources/{Enigma => enigma}/codebuch.sqlite (100%) rename src/main/resources/{Enigma => enigma}/gui.fxml (99%) rename src/main/resources/{Enigma => enigma}/kenngruppe.fxml (93%) rename src/test/java/{Enigma => enigma}/model/CodebuchTest.java (91%) rename src/test/java/{Enigma => enigma}/model/HardwareTest.java (58%) rename src/test/java/{Enigma => enigma}/model/ReflektorTest.java (96%) rename src/test/java/{Enigma => enigma}/model/SteckbrettTest.java (96%) rename src/test/java/{Enigma => enigma}/model/WalzeTest.java (66%) diff --git a/LICENSE b/LICENSE index 214f203..eca5a29 100644 --- a/LICENSE +++ b/LICENSE @@ -632,7 +632,7 @@ state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Enigma - Copyright (C) 2019 AlfaTrainingKurse / Java + Copyright (C) 2019 Enigma@Java Developer Team This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: - Enigma Copyright (C) 2019 AlfaTrainingKurse / Java + Enigma Copyright (C) 2019 Enigma@Java Developer Team This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. diff --git a/pom.xml b/pom.xml index b89e09f..6035d0d 100644 --- a/pom.xml +++ b/pom.xml @@ -2,14 +2,14 @@ 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> - <artifactId>Enigma</artifactId> + <artifactId>enigma</artifactId> <version>0.0.1</version> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!--region[useage]--> <use.java.version>11</use.java.version> <use.javafx.version>11.0.2</use.javafx.version> - <use.app.main.class>Enigma.Main</use.app.main.class> + <use.app.main.class>${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/App.java b/src/main/java/enigma/App.java similarity index 58% rename from src/main/java/Enigma/App.java rename to src/main/java/enigma/App.java index 005c44a..dfb8ce5 100644 --- a/src/main/java/Enigma/App.java +++ b/src/main/java/enigma/App.java @@ -1,12 +1,13 @@ -package Enigma; +package enigma; -import Enigma.model.*; +import 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; /** @@ -14,22 +15,49 @@ import java.io.IOException; */ public class App extends Application { + /** + * TODO Dokumentieren + */ private static Scene scene; private Codierer c; + /** + * TODO Dokumentieren + * + * @param fxml + * @throws IOException + */ static void setRoot(String fxml) throws IOException { scene.setRoot(loadFXML(fxml)); } + /** + * TODO Dokumentieren + * + * @param fxml + * @return + * @throws IOException + */ private static Parent loadFXML(String fxml) throws IOException { FXMLLoader fxmlLoader = new FXMLLoader(App.class.getResource(fxml + ".fxml")); return fxmlLoader.load(); } + /** + * TODO Dokumentieren + * + * @param args + */ public static void main(String[] args) { Application.launch(); } + /** + * TODO Dokumentieren + * + * @param stage + * @throws IOException + */ @Override public void start(Stage stage) throws IOException { scene = new Scene(loadFXML("gui")); @@ -38,19 +66,19 @@ public class App extends Application { this.c = new Codierer(); - /** - * TODO: Nur zum Testen muss später wieder gelöscht werden. - */ - //region Test + /** + * TODO: Nur zum Testen muss später wieder gelöscht werden. + */ + //region Test c.setKenngruppe("deisold"); String nachricht = "Hello world."; for (char buchstabe : nachricht.toCharArray()) { - if(buchstabe > 0) { - System.out.print(buchstabe + ":"); - System.out.print(c.getHardware().codiere(buchstabe)); - System.out.println(" W1:" + c.getHardware().getWalzen()[0].getBuchstabe() + " W2:" + c.getHardware().getWalzen()[1].getBuchstabe() + " W3:" + c.getHardware().getWalzen()[2].getBuchstabe()); - } + if (buchstabe > 0) { + System.out.print(buchstabe + ":"); + System.out.print(c.getHardware().codiere(buchstabe)); + System.out.println(" W1:" + c.getHardware().getWalzen()[0].getPosition() + " W2:" + c.getHardware().getWalzen()[1].getPosition() + " W3:" + c.getHardware().getWalzen()[2].getPosition()); + } } try { System.out.println(c.getNachricht()); diff --git a/src/main/java/Enigma/GuiController.java b/src/main/java/enigma/GuiController.java similarity index 99% rename from src/main/java/Enigma/GuiController.java rename to src/main/java/enigma/GuiController.java index c9da5db..c0aa557 100644 --- a/src/main/java/Enigma/GuiController.java +++ b/src/main/java/enigma/GuiController.java @@ -1,4 +1,4 @@ -package Enigma; +package enigma; import javafx.event.ActionEvent; import javafx.fxml.FXML; diff --git a/src/main/java/Enigma/KenngruppeController.java b/src/main/java/enigma/KenngruppeController.java similarity index 92% rename from src/main/java/Enigma/KenngruppeController.java rename to src/main/java/enigma/KenngruppeController.java index a72feab..a1049e1 100644 --- a/src/main/java/Enigma/KenngruppeController.java +++ b/src/main/java/enigma/KenngruppeController.java @@ -1,4 +1,4 @@ -package Enigma; +package enigma; import java.io.IOException; import javafx.fxml.FXML; diff --git a/src/main/java/Enigma/Main.java b/src/main/java/enigma/Main.java similarity index 90% rename from src/main/java/Enigma/Main.java rename to src/main/java/enigma/Main.java index 4f2fece..22bb0df 100644 --- a/src/main/java/Enigma/Main.java +++ b/src/main/java/enigma/Main.java @@ -1,4 +1,4 @@ -package Enigma; +package enigma; import java.sql.SQLException; diff --git a/src/main/java/Enigma/model/DatenbankSqlite.java b/src/main/java/enigma/database/DatenbankSqlite.java similarity index 97% rename from src/main/java/Enigma/model/DatenbankSqlite.java rename to src/main/java/enigma/database/DatenbankSqlite.java index 236b2bb..2030867 100644 --- a/src/main/java/Enigma/model/DatenbankSqlite.java +++ b/src/main/java/enigma/database/DatenbankSqlite.java @@ -1,4 +1,6 @@ -package Enigma.model; +package enigma.database; + +import enigma.model.Codebuch; import java.sql.*; @@ -22,7 +24,7 @@ public class DatenbankSqlite { */ private Connection connect() { - String url = "jdbc:sqlite::resource:Enigma/codebuch.sqlite"; + String url = "jdbc:sqlite::resource:enigma/codebuch.sqlite"; Connection conn = null; try { diff --git a/src/main/java/Enigma/model/Codebuch.java b/src/main/java/enigma/model/Codebuch.java similarity index 97% rename from src/main/java/Enigma/model/Codebuch.java rename to src/main/java/enigma/model/Codebuch.java index ee7b96e..8b2c0ee 100644 --- a/src/main/java/Enigma/model/Codebuch.java +++ b/src/main/java/enigma/model/Codebuch.java @@ -1,4 +1,4 @@ -package Enigma.model; +package enigma.model; /** * Das Codebuch war eines der essentiel wichtigen Sachen bei der Enigma. @@ -17,6 +17,9 @@ package Enigma.model; * geben kann. */ public class Codebuch { + /** + * TODO Dokumentieren + */ private int tag; private int[] walzenlage; private int[] ringstellung; @@ -63,7 +66,8 @@ public class Codebuch { sb.append(wl).append(","); wlLoop = true; } - if (wlLoop) { + // TODO + if (this.getWalzenlage().length > 0) { sb.setLength(sb.length() - 1); } sb.append("\n"); @@ -132,6 +136,7 @@ public class Codebuch { * * @return String[] : Steckverbindung */ + // TODO public char[][] getSteckverbindung() { return this.steckverbindung; } diff --git a/src/main/java/Enigma/model/Codierer.java b/src/main/java/enigma/model/Codierer.java similarity index 91% rename from src/main/java/Enigma/model/Codierer.java rename to src/main/java/enigma/model/Codierer.java index dfc7d67..54b3744 100644 --- a/src/main/java/Enigma/model/Codierer.java +++ b/src/main/java/enigma/model/Codierer.java @@ -1,5 +1,6 @@ -package Enigma.model; +package enigma.model; +import enigma.database.DatenbankSqlite; import org.apache.http.HttpException; import java.io.IOException; @@ -8,14 +9,23 @@ import java.time.LocalDate; import java.time.ZoneId; import java.util.Random; +/** + * TODO Dokumentieren + */ public class Codierer { + /** + * TODO Dokumentieren + */ private String spruchschluessel; private String kenngruppe; private String nachricht; private Hardware hardware; private Codebuch codebuch; + /** + * TODO Dokumentieren + */ public Codierer() { this.nachricht = ""; initialisiereHardware(); @@ -25,10 +35,10 @@ public class Codierer { * 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. - * <p> + * <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. - * <p> + * <br> * Das Steck wird ebenfalls definiert und die notwendigen Kabel eingesteckt laut dem heutigen * Codebuch Eintrag. */ @@ -67,17 +77,17 @@ public class Codierer { * Hier wird ein neuer Spruchschlüssel generiert. * Mit diesem werden die Walzen auf eine neue Startposition gestellt und dem Kopf, mit dem * Tagesschlüssel codiert, hinzugefügt. - * + * <p> * 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. - * + * <p> * Dies wir nun so lange gemacht bis der Spruchschlüssel eine länge von drei Zeichen hat. */ public void spruchSchluessel() { - while(this.spruchschluessel.length() < 3) { + while (this.spruchschluessel.length() < 3) { String temp = this.randomBuchstabe(); - if(!this.spruchschluessel.contains(temp)) { + if (!this.spruchschluessel.contains(temp)) { this.spruchschluessel += temp; } } @@ -91,15 +101,7 @@ public class Codierer { * @return String : ein zufällig generierter Buchstabe */ private String randomBuchstabe() { - Random r = new Random(); - String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - char buchstabe = 'X'; - - for (int i = 0; i < alphabet.length(); i++) { - buchstabe = alphabet.charAt(r.nextInt(alphabet.length())); - } - - return String.valueOf(buchstabe); + return String.valueOf((char) ('A' + new Random().nextInt(26))); } /** @@ -114,7 +116,7 @@ public class Codierer { /** * Gibt die letzte empfangene Nachricht zurück - * <p> + * <br> * String[0} Tag wann die Nachricht gesendet wurde * String[1] = Die verschlüsselte Nachricht * String[2] = Nachricht im Klartext @@ -126,13 +128,13 @@ public class Codierer { try { codierteNachricht = new Funkraum().empfangeFunkspruch(this.kenngruppe); String morsecode = mc.convertMorsecodeToBuchstabe(codierteNachricht[1]); - String decodiert = ""; + StringBuilder decodiert = new StringBuilder(); for (char buchstabe : morsecode.toCharArray()) { - decodiert += this.hardware.codiere(buchstabe); + decodiert.append(this.hardware.codiere(buchstabe)); } - codierteNachricht[2] = decodiert; + codierteNachricht[2] = decodiert.toString(); } catch (IOException e) { e.printStackTrace(); diff --git a/src/main/java/Enigma/model/Funkraum.java b/src/main/java/enigma/model/Funkraum.java similarity index 99% rename from src/main/java/Enigma/model/Funkraum.java rename to src/main/java/enigma/model/Funkraum.java index acb4e63..720157a 100644 --- a/src/main/java/Enigma/model/Funkraum.java +++ b/src/main/java/enigma/model/Funkraum.java @@ -1,4 +1,4 @@ -package Enigma.model; +package 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/enigma/model/Hardware.java similarity index 89% rename from src/main/java/Enigma/model/Hardware.java rename to src/main/java/enigma/model/Hardware.java index 21d6626..36ea74b 100644 --- a/src/main/java/Enigma/model/Hardware.java +++ b/src/main/java/enigma/model/Hardware.java @@ -1,4 +1,4 @@ -package Enigma.model; +package enigma.model; /** * In dieser Klasse wird die Hardware zusammen gefasst. @@ -15,6 +15,9 @@ package Enigma.model; */ public class Hardware { + /** + * TODO Dokumentieren + */ private Walze[] walzen; private Steckbrett steckbrett; private Reflektor reflektor; @@ -64,29 +67,17 @@ public class Hardware { * @return char : Der ver/entschlüsselte Buchstabe */ public char codiere(char buchstabe) { - System.out.println(this.walzen[2].getPosition()); this.dreheWalzen(); - System.out.println(this.walzen[2].getPosition()); - System.out.print(buchstabe); buchstabe = this.steckbrett.codiere(Character.toUpperCase(buchstabe)); - System.out.print(" : " + buchstabe); buchstabe = this.walzen[2].codiere(buchstabe); - System.out.print(" : " + buchstabe); buchstabe = this.walzen[1].codiere(buchstabe); - System.out.print(" : " + buchstabe); buchstabe = this.walzen[0].codiere(buchstabe); - System.out.print(" : " + buchstabe); buchstabe = this.reflektor.codiere(buchstabe); - System.out.print(" : " + buchstabe); buchstabe = this.walzen[0].codiere2(buchstabe); - System.out.print(" : " + buchstabe); buchstabe = this.walzen[1].codiere2(buchstabe); - System.out.print(" : " + buchstabe); buchstabe = this.walzen[2].codiere2(buchstabe); - System.out.print(" : " + buchstabe); buchstabe = this.steckbrett.codiere(buchstabe); - System.out.println(" : " + buchstabe); return buchstabe; } @@ -162,5 +153,15 @@ public class Hardware { this.reflektor = reflektor; } + /** + * Diese Funktion setzt die Walzen auf ihren Anfangswert zurück. + * Hierfür ist der Buchstabe "A" festgelegt. + * Dies wird benötigt um zB einen neuen Spruchschlüssel einzustellen oder eine neue Nachricht zu verfassen. + */ + public void resetWalzen() { + this.getWalzen()[0].setPosition('A'); + this.getWalzen()[1].setPosition('A'); + this.getWalzen()[2].setPosition('A'); + } } diff --git a/src/main/java/Enigma/model/Morsecode.java b/src/main/java/enigma/model/Morsecode.java similarity index 99% rename from src/main/java/Enigma/model/Morsecode.java rename to src/main/java/enigma/model/Morsecode.java index 67284f5..fdcf5c1 100644 --- a/src/main/java/Enigma/model/Morsecode.java +++ b/src/main/java/enigma/model/Morsecode.java @@ -1,4 +1,4 @@ -package Enigma.model; +package enigma.model; import java.util.*; import java.util.Map.Entry; diff --git a/src/main/java/Enigma/model/Reflektor.java b/src/main/java/enigma/model/Reflektor.java similarity index 99% rename from src/main/java/Enigma/model/Reflektor.java rename to src/main/java/enigma/model/Reflektor.java index f1a3487..4aabb1b 100644 --- a/src/main/java/Enigma/model/Reflektor.java +++ b/src/main/java/enigma/model/Reflektor.java @@ -1,4 +1,4 @@ -package Enigma.model; +package enigma.model; /** * Klasse Reflektor diff --git a/src/main/java/Enigma/model/Steckbrett.java b/src/main/java/enigma/model/Steckbrett.java similarity index 89% rename from src/main/java/Enigma/model/Steckbrett.java rename to src/main/java/enigma/model/Steckbrett.java index 5e7652a..4a87914 100644 --- a/src/main/java/Enigma/model/Steckbrett.java +++ b/src/main/java/enigma/model/Steckbrett.java @@ -1,4 +1,4 @@ -package Enigma.model; +package enigma.model; /** *TODO Dokumentieren @@ -23,9 +23,10 @@ public class Steckbrett { /** *TODO Dokumentieren - * @param buchstabe1 - * @param buchstabe2 - * @return + * + * @param buchstabe1 : char + * @param buchstabe2 : char + * @return boolean */ public boolean setzeVertauschung(char buchstabe1, char buchstabe2) { @@ -41,7 +42,8 @@ public class Steckbrett { /** *TODO Dokumentieren - * @return + * + * @return boolean */ public boolean ueberpruefeVertauschungen() { @@ -58,8 +60,9 @@ public class Steckbrett { /** * TODO Dokumentieren - * @param buchstabe - * @return + * + * @param buchstabe : Character + * @return char */ public char codiere(Character buchstabe) { diff --git a/src/main/java/Enigma/model/Walze.java b/src/main/java/enigma/model/Walze.java similarity index 80% rename from src/main/java/Enigma/model/Walze.java rename to src/main/java/enigma/model/Walze.java index b6c1327..3f94ead 100644 --- a/src/main/java/Enigma/model/Walze.java +++ b/src/main/java/enigma/model/Walze.java @@ -1,4 +1,4 @@ -package Enigma.model; +package enigma.model; /** * Klasse Walze @@ -29,7 +29,6 @@ public class Walze { private Character buchstabe; private char ringstellung; private int walzennr; - private int iPositionBuchstabe; private Character[] alphabet; @@ -43,8 +42,7 @@ public class Walze { this.alphabet = new Character[]{'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'}; this.walzennr = walzennr; this.buchstabe = 'A'; - this.iPositionBuchstabe = 0; - this.ringstellung = this.alphabet[ringstellung - 1]; + this.ringstellung = this.alphabet[ringstellung - 1]; this.walzeAlpha = new Character[]{'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'}; } @@ -55,6 +53,7 @@ public class Walze { * @return walze : Character[] : gibt die gewaehlte Walze zurueck */ private Character[] walzenNummer() { + Character[] walze = new Character[26]; Character[] walzeEins = {'E', 'K', 'M', 'F', 'L', 'G', 'D', 'Q', 'V', 'Z', 'N', 'T', 'O', 'W', 'Y', 'H', 'X', 'U', 'S', 'P', 'A', 'I', 'B', 'R', 'C', 'J'}; Character[] walzeZwei = {'A', 'J', 'D', 'K', 'S', 'I', 'R', 'U', 'X', 'B', 'L', 'H', 'W', 'T', 'M', 'C', 'Q', 'G', 'Z', 'N', 'P', 'Y', 'F', 'V', 'O', 'E'}; @@ -83,26 +82,9 @@ public class Walze { return walze; } - - /** - * TODO Dokumentieren - * @return - */ - //walzenPosition() return int => Gibt die aktuelle Position des Buchstabens zurück - public char walzenPosition() { - - /*Alphabetswalze*/ - Character[] walzeAlphabeth = {'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'}; - - return walzeAlphabeth[iPositionBuchstabe]; - } - - - //setzeNotch(int position) => Setze Startpunkt auf int Position des Buchstabens - // Setter für Ringstellung - /** - * TODO Dokumentieren + * TODO Dokumentieren + * * @return ringstellung : Character : gibt die neue Ringstellung zurueck */ public char getRingstellung() { @@ -117,7 +99,6 @@ public class Walze { * @param ringstellung : Character : Punkt an dem die Walze umspringt */ public void setRingstellung(int ringstellung) { - if (ringstellung > 0 && ringstellung <= 26) { this.ringstellung = this.alphabet[ringstellung - 1]; } else { @@ -129,21 +110,19 @@ public class Walze { * dreheWalze() return boolean => Wenn Notch erreicht, gib true zurück, ansonsten false * TODO Doku */ - public boolean dreheWalze(int... args) { + public boolean dreheWalze(int... drehung) { boolean checkRing = false; - if (args[0] > 1) { - for (int i = 0; i < args[0]; i++) { + verschiebung(); + + if (drehung.length > 0) { + for (int i = 1; i < drehung[0]; i++) { verschiebung(); } - } else { - verschiebung(); } - setPosition(walzeAlpha[0]); - - if(this.getPosition().equals(this.ringstellung)) { + if (this.getPosition().equals(this.ringstellung)) { checkRing = true; } @@ -151,18 +130,24 @@ public class Walze { } /** - * TODO Dokumentieren + * TODO Dokumentieren */ - public void verschiebung() { + private void verschiebung() { Character[] neueWalze = new Character[26]; - for (int index = 0; index < 25; index++) { - neueWalze[index + 1] = this.walzeAlpha[index]; + + for (int index = 0; index < neueWalze.length; index++) { + neueWalze[(index + 1) % neueWalze.length] = this.walzeAlpha[index]; } - neueWalze[0] = this.walzeAlpha[25]; this.walzeAlpha = neueWalze; } + public char getAnzeige() { + int temp = this.getArrayIndex('A', this.walzeAlpha); + + return this.alphabet[temp]; + } + /** * Chiffriert den Buchstaben an der Position aus der Methode positionBuchstabe() @@ -171,7 +156,6 @@ public class Walze { * @return chiffrierterBuchstabe : Character : chiffrierter Buchstabe */ public char codiere(char buchstabe) { - for (int i = 0; i < walzeAlpha.length; i++) { if (walzeAlpha[i].equals(buchstabe)) { buchstabe = walzenNummer()[i]; @@ -200,11 +184,9 @@ public class Walze { return buchstabe; } -//_________________________________________________________________________________________ - - /** * TODO Dokumentieren + * * @return buchstabe : Character : gibt den neuen Buchstaben zurueck */ public Character getBuchstabe() { @@ -212,45 +194,26 @@ public class Walze { } /** - * Gibt die Grundeinstellung der Walze ein. Nur Buchstaben von A - Z sind zugelassen. - * Buchstaben werden automatisch in Grossbuchstaben umgewandelt. - * Im Fehlerfall wird die Grundeinstellung der Walze standardmaessig auf 'A' gesetzt. - * TODO Funktionsname hat sich geändert + * TODO Dokumentieren * - * @param buchstabe : Character : Grundeinstellung der Walze + * @param buchstabe : Character + * @param array : Character[] + * @return int */ - public void setPosition(Character buchstabe) { + private int getArrayIndex(Character buchstabe, Character[] array) { - if (Character.isLetter(buchstabe)) { - this.buchstabe = Character.toUpperCase(buchstabe); - System.arraycopy(this.alphabet, 0, this.walzeAlpha, 0, this.alphabet.length); - dreheWalze(this.getArrayIndex(buchstabe, this.alphabet) + 1); - } else { - this.buchstabe = 'A'; - } - } - - /** - * TODO Dokumentieren - * @param buchstabe - * @param array - * @return - */ - public int getArrayIndex(Character buchstabe, Character[] array) { int result = -1; for (int i = 0; i < array.length; i++) { if (array[i].equals(buchstabe)) { result = i; + break; } } return result; } - //TODO: ??? Brauchen wir Setter, wo findet Überprüfung der Walzennr. statt. - // Überprüfung sollte in walzenNummer() statt finden. - /** * Definiert die Walze. Es stehen fuenf Walze zur Auswahl. * @@ -267,9 +230,29 @@ public class Walze { /** * TODO: Dokumentieren * - * @return + * @return Character */ public Character getPosition() { return walzeAlpha[0]; } + + /** + * Gibt die Grundeinstellung der Walze ein. Nur Buchstaben von A - Z sind zugelassen. + * Buchstaben werden automatisch in Grossbuchstaben umgewandelt. + * Im Fehlerfall wird die Grundeinstellung der Walze standardmaessig auf 'A' gesetzt. + * TODO Funktionsname hat sich geändert + * + * @param buchstabe : Character : Grundeinstellung der Walze + */ + public void setPosition(Character buchstabe) { + if (Character.isLetter(buchstabe)) { + this.buchstabe = Character.toUpperCase(buchstabe); + System.arraycopy(this.alphabet, 0, this.walzeAlpha, 0, this.alphabet.length); + if (buchstabe > 'A') { + dreheWalze(this.getArrayIndex(buchstabe, this.alphabet)); + } + } else { + this.buchstabe = 'A'; + } + } } diff --git a/src/main/resources/Enigma/codebuch.sqlite b/src/main/resources/enigma/codebuch.sqlite similarity index 100% rename from src/main/resources/Enigma/codebuch.sqlite rename to src/main/resources/enigma/codebuch.sqlite diff --git a/src/main/resources/Enigma/gui.fxml b/src/main/resources/enigma/gui.fxml similarity index 99% rename from src/main/resources/Enigma/gui.fxml rename to src/main/resources/enigma/gui.fxml index 8e37b9a..31021a2 100644 --- a/src/main/resources/Enigma/gui.fxml +++ b/src/main/resources/enigma/gui.fxml @@ -8,7 +8,7 @@ <?import javafx.scene.shape.Circle?> <?import javafx.scene.text.Font?> -<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="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="enigma.GuiController"> <children> <Circle fx:id="circ1" fill="#f0f3f5" layoutX="119.0" layoutY="309.0" radius="22.0" stroke="BLACK" strokeType="INSIDE" /> <TextField fx:id="tfStecker1" layoutX="104.0" layoutY="631.0" prefHeight="25.0" prefWidth="48.0" AnchorPane.bottomAnchor="20.0" AnchorPane.leftAnchor="104.0" /> diff --git a/src/main/resources/Enigma/kenngruppe.fxml b/src/main/resources/enigma/kenngruppe.fxml similarity index 93% rename from src/main/resources/Enigma/kenngruppe.fxml rename to src/main/resources/enigma/kenngruppe.fxml index 69a72c6..1f56aca 100644 --- a/src/main/resources/Enigma/kenngruppe.fxml +++ b/src/main/resources/enigma/kenngruppe.fxml @@ -6,7 +6,7 @@ <?import javafx.scene.layout.AnchorPane?> -<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="257.0" prefWidth="300.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="Enigma.KenngruppeController"> +<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="257.0" prefWidth="300.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="enigma.KenngruppeController"> <children> <Label layoutX="81.0" layoutY="29.0" text="Bitte Kenngruppe eingeben!" AnchorPane.leftAnchor="70.0" AnchorPane.rightAnchor="70.0" AnchorPane.topAnchor="30.0" /> <Button fx:id="secondaryButton" layoutX="72.0" layoutY="178.0" onAction="#switchToPrimary" text="Kenngruppe bestätigen!" AnchorPane.leftAnchor="70.0" AnchorPane.rightAnchor="70.0" AnchorPane.topAnchor="170.0" /> diff --git a/src/test/java/Enigma/model/CodebuchTest.java b/src/test/java/enigma/model/CodebuchTest.java similarity index 91% rename from src/test/java/Enigma/model/CodebuchTest.java rename to src/test/java/enigma/model/CodebuchTest.java index ce6a4f7..5dd7d2e 100644 --- a/src/test/java/Enigma/model/CodebuchTest.java +++ b/src/test/java/enigma/model/CodebuchTest.java @@ -1,5 +1,6 @@ -package Enigma.model; +package enigma.model; +import enigma.database.DatenbankSqlite; import org.junit.Assert; import org.junit.Test; import java.sql.SQLException; diff --git a/src/test/java/Enigma/model/HardwareTest.java b/src/test/java/enigma/model/HardwareTest.java similarity index 58% rename from src/test/java/Enigma/model/HardwareTest.java rename to src/test/java/enigma/model/HardwareTest.java index 90a3936..5eaeec0 100644 --- a/src/test/java/Enigma/model/HardwareTest.java +++ b/src/test/java/enigma/model/HardwareTest.java @@ -1,4 +1,4 @@ -package Enigma.model; +package enigma.model; import org.junit.Assert; import org.junit.Test; @@ -7,6 +7,7 @@ public class HardwareTest { @Test public void tippeBuchstabe() { + Hardware h = new Hardware(); h.setReflektor(new Reflektor()); h.setSteckbrett(new Steckbrett()); @@ -19,32 +20,34 @@ public class HardwareTest { 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'}; Steckbrett {'B', 'G', 'D', 'F'} Steckbrett {'G', 'B', 'F', 'F'} - Walze 3 {'B', 'D', 'F', 'H', 'J', 'L', 'C', 'P', 'R', 'T', 'X', 'V', 'Z', 'N', 'Y', 'E', 'I', 'W', 'G', 'A', 'K', 'M', 'U', 'S', 'Q', 'O'}; + Walze 3 {'B', 'D', 'F', 'H', 'J', 'L', 'C', 'P', 'R', 'T', 'X', 'V', 'Z', 'N', 'Y', 'E', 'I', 'W', 'G', 'A', 'K', 'M', 'U', 'S', 'Q', 'O'}; Walze 2 {'A', 'J', 'D', 'K', 'S', 'I', 'R', 'U', 'X', 'B', 'L', 'H', 'W', 'T', 'M', 'C', 'Q', 'G', 'Z', 'N', 'P', 'Y', 'F', 'V', 'O', 'E'}; Walze 1 {'E', 'K', 'M', 'F', 'L', 'G', 'D', 'Q', 'V', 'Z', 'N', 'T', 'O', 'W', 'Y', 'H', 'X', 'U', 'S', 'P', 'A', 'I', 'B', 'R', 'C', 'J'}; 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'}; */ char result; + h.resetWalzen(); result = h.codiere('A'); - Assert.assertEquals("Codiere: A Erwartet P, erhalten "+ result, 'P', result); + Assert.assertEquals("Codiere: A Erwartet P, erhalten " + result, 'P', result); result = h.codiere('B'); - Assert.assertEquals("Codiere: B Erwartet R, erhalten "+ result, 'R', result); + Assert.assertEquals("Codiere: B Erwartet R, erhalten " + result, 'R', result); result = h.codiere('I'); - Assert.assertEquals("Codiere: I Erwartet E, erhalten "+ result, 'E', result); + Assert.assertEquals("Codiere: I Erwartet E, erhalten " + result, 'E', result); result = h.codiere('F'); - Assert.assertEquals("Codiere: F Erwartet A, erhalten "+ result, 'A', result); + Assert.assertEquals("Codiere: F Erwartet A, erhalten " + result, 'A', result); - h.getWalzen()[2].setPosition('A'); + h.resetWalzen(); result = h.codiere('P'); - Assert.assertEquals("Decodiere: P Erwartet A, erhalten "+ result, 'A', result); + Assert.assertEquals("Decodiere: P Erwartet A, erhalten " + result, 'A', result); result = h.codiere('R'); - Assert.assertEquals("Decodiere: R Erwartet B, erhalten "+ result, 'B', result); + Assert.assertEquals("Decodiere: R Erwartet B, erhalten " + result, 'B', result); result = h.codiere('E'); - Assert.assertEquals("Decodiere: E Erwartet I, erhalten "+ result, 'I', result); + Assert.assertEquals("Decodiere: E Erwartet I, erhalten " + result, 'I', result); result = h.codiere('A'); - Assert.assertEquals("Decodiere: A Erwartet F, erhalten "+ result, 'F', result); + Assert.assertEquals("Decodiere: A Erwartet F, erhalten " + result, 'F', result); + h.resetWalzen(); h.getSteckbrett().setzeVertauschung('B', 'G'); h.getSteckbrett().setzeVertauschung('D', 'F'); h.getSteckbrett().setzeVertauschung('I', 'L'); @@ -52,9 +55,10 @@ public class HardwareTest { h.getSteckbrett().setzeVertauschung('T', 'X'); result = h.codiere('I'); - Assert.assertEquals("Codiere: Erwartet F, erhalten "+ result, 'F', result); + Assert.assertEquals("Codiere: Erwartet F, erhalten " + result, 'D', result); - result = h.codiere('F'); - Assert.assertEquals("Codiere: Erwartet I, erhalten "+ result, 'I', result); + h.resetWalzen(); + result = h.codiere('D'); + Assert.assertEquals("Codiere: Erwartet I, erhalten " + result, 'I', result); } } \ No newline at end of file diff --git a/src/test/java/Enigma/model/ReflektorTest.java b/src/test/java/enigma/model/ReflektorTest.java similarity index 96% rename from src/test/java/Enigma/model/ReflektorTest.java rename to src/test/java/enigma/model/ReflektorTest.java index 255e2ff..793b8cc 100644 --- a/src/test/java/Enigma/model/ReflektorTest.java +++ b/src/test/java/enigma/model/ReflektorTest.java @@ -1,4 +1,4 @@ -package Enigma.model; +package enigma.model; import org.junit.Assert; import org.junit.Test; diff --git a/src/test/java/Enigma/model/SteckbrettTest.java b/src/test/java/enigma/model/SteckbrettTest.java similarity index 96% rename from src/test/java/Enigma/model/SteckbrettTest.java rename to src/test/java/enigma/model/SteckbrettTest.java index f56b31e..0f3fedb 100644 --- a/src/test/java/Enigma/model/SteckbrettTest.java +++ b/src/test/java/enigma/model/SteckbrettTest.java @@ -1,4 +1,4 @@ -package Enigma.model; +package enigma.model; import org.junit.Assert; import org.junit.Test; diff --git a/src/test/java/Enigma/model/WalzeTest.java b/src/test/java/enigma/model/WalzeTest.java similarity index 66% rename from src/test/java/Enigma/model/WalzeTest.java rename to src/test/java/enigma/model/WalzeTest.java index 3379019..819a94e 100644 --- a/src/test/java/Enigma/model/WalzeTest.java +++ b/src/test/java/enigma/model/WalzeTest.java @@ -1,4 +1,4 @@ -package Enigma.model; +package enigma.model; import org.junit.Assert; import org.junit.Test; @@ -10,21 +10,23 @@ public class WalzeTest { @Test public void setRingstellung() { Walze w = new Walze(1, 1); - Assert.assertEquals('A', w.walzenPosition()); + char temp = w.getAnzeige(); + Assert.assertEquals('A', temp); } @Test public void dreheWalze() { Walze w = new Walze(1, 3); - assertFalse("false erwartet, true geliefert", w.dreheWalze()); - char temp = w.walzenPosition(); - Assert.assertEquals("B erwartet, " + temp + " zurück gegeben", 'B', temp); + assertFalse("false erwartet, true geliefert", w.dreheWalze(2)); + char temp = w.getAnzeige(); + Assert.assertEquals("C erwartet, " + temp + " zurück gegeben", 'C', temp); } @Test public void walzenPoition() { Walze w = new Walze(1, 1); - Assert.assertEquals('A', w.walzenPosition()); + char temp = w.getAnzeige(); + Assert.assertEquals('A', temp); } @Test -- GitLab