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 7dd22d625fcef6bacab70fb7e1223a4777eb1fad..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; /** @@ -62,7 +60,8 @@ public class App extends Application { public void start(Stage stage) throws IOException { scene = new Scene(loadFXML("gui")); stage.setScene(scene); + stage.setResizable(true); 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 52% rename from src/main/java/enigma/GuiController.java rename to src/main/java/projekt/enigma/GuiController.java index 377cab1a676058842f497d1ab34eb946f80dac26..75ba07d4d14de0da6fad11001fb7f802cfcecb2f 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.*; @@ -12,9 +12,9 @@ import java.util.ArrayList; public class GuiController { - private final static String[] str = {"I", "II", "III", "IV", "V"}; - private final static String[] num = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26"}; - private final static String[] bs = {"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"}; + private final static String[] walzenNr = {"I", "II", "III", "IV", "V"}; + private final static String[] ringNr = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26"}; + private final static String[] position = {"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"}; private ArrayList<MenuItem> mItem; private String textEingabe; private String textCodiert; @@ -124,10 +124,10 @@ public class GuiController { private MenuButton mBtnStartPos2; @FXML - private TextField tfrein; + private TextField tfKlartext; @FXML - private TextField tfcodiert; + private TextField tfCodiert; @FXML private MenuButton mBtnNotchPos1; @@ -327,94 +327,22 @@ public class GuiController { resetDisplay = true; //Einträge für Walzen - menu(mBtnWalzPos1, str); - menu(mBtnWalzPos2, str); - menu(mBtnWalzPos3, str); + menu(mBtnWalzPos1, walzenNr); + menu(mBtnWalzPos2, walzenNr); + menu(mBtnWalzPos3, walzenNr); //Einträge für die Ringe - menu(mBtnNotchPos1, num); - menu(mBtnNotchPos2, num); - menu(mBtnNotchPos3, num); + menu(mBtnNotchPos1, ringNr); + menu(mBtnNotchPos2, ringNr); + menu(mBtnNotchPos3, ringNr); //Einträge für die Startpositionen - menu(mBtnStartPos1, bs); - menu(mBtnStartPos3, bs); - menu(mBtnStartPos2, bs); - - assert tfStecker1 != null : "fx:id=\"tfStecker1\" was not injected: check your FXML file 'gui.fxml'."; - assert tfStecker2 != null : "fx:id=\"tfStecker2\" was not injected: check your FXML file 'gui.fxml'."; - assert tfStecker3 != null : "fx:id=\"tfStecker3\" was not injected: check your FXML file 'gui.fxml'."; - assert tfStecker4 != null : "fx:id=\"tfStecker4\" was not injected: check your FXML file 'gui.fxml'."; - assert tfStecker5 != null : "fx:id=\"tfStecker5\" was not injected: check your FXML file 'gui.fxml'."; - assert tfStecker6 != null : "fx:id=\"tfStecker6\" was not injected: check your FXML file 'gui.fxml'."; - assert tfStecker7 != null : "fx:id=\"tfStecker7\" was not injected: check your FXML file 'gui.fxml'."; - assert tfStecker8 != null : "fx:id=\"tfStecker8\" was not injected: check your FXML file 'gui.fxml'."; - assert tfStecker9 != null : "fx:id=\"tfStecker9\" was not injected: check your FXML file 'gui.fxml'."; - assert tfStecker10 != null : "fx:id=\"tfStecker10\" was not injected: check your FXML file 'gui.fxml'."; - assert btnP != null : "fx:id=\"btnP\" was not injected: check your FXML file 'gui.fxml'."; - assert btnY != null : "fx:id=\"btnY\" was not injected: check your FXML file 'gui.fxml'."; - assert btnX != null : "fx:id=\"btnX\" was not injected: check your FXML file 'gui.fxml'."; - assert btnC != null : "fx:id=\"btnC\" was not injected: check your FXML file 'gui.fxml'."; - assert btnV != null : "fx:id=\"btnV\" was not injected: check your FXML file 'gui.fxml'."; - assert btnB != null : "fx:id=\"btnB\" was not injected: check your FXML file 'gui.fxml'."; - assert btnN != null : "fx:id=\"btnN\" was not injected: check your FXML file 'gui.fxml'."; - assert btnM != null : "fx:id=\"btnM\" was not injected: check your FXML file 'gui.fxml'."; - assert btnL != null : "fx:id=\"btnL\" was not injected: check your FXML file 'gui.fxml'."; - assert btnA != null : "fx:id=\"btnA\" was not injected: check your FXML file 'gui.fxml'."; - assert btnS != null : "fx:id=\"btnS\" was not injected: check your FXML file 'gui.fxml'."; - assert btnD != null : "fx:id=\"btnD\" was not injected: check your FXML file 'gui.fxml'."; - assert btnF != null : "fx:id=\"btnF\" was not injected: check your FXML file 'gui.fxml'."; - assert btnG != null : "fx:id=\"btnG\" was not injected: check your FXML file 'gui.fxml'."; - assert btnH != null : "fx:id=\"btnH\" was not injected: check your FXML file 'gui.fxml'."; - assert btnJ != null : "fx:id=\"btnJ\" was not injected: check your FXML file 'gui.fxml'."; - assert btnK != null : "fx:id=\"btnK\" was not injected: check your FXML file 'gui.fxml'."; - assert btnQ != null : "fx:id=\"btnQ\" was not injected: check your FXML file 'gui.fxml'."; - assert btnW != null : "fx:id=\"btnW\" was not injected: check your FXML file 'gui.fxml'."; - assert btnE != null : "fx:id=\"btnE\" was not injected: check your FXML file 'gui.fxml'."; - assert btnR != null : "fx:id=\"btnR\" was not injected: check your FXML file 'gui.fxml'."; - assert btnT != null : "fx:id=\"btnT\" was not injected: check your FXML file 'gui.fxml'."; - assert btnZ != null : "fx:id=\"btnZ\" was not injected: check your FXML file 'gui.fxml'."; - assert btnU != null : "fx:id=\"btnU\" was not injected: check your FXML file 'gui.fxml'."; - assert btnI != null : "fx:id=\"btnI\" was not injected: check your FXML file 'gui.fxml'."; - assert btnO != null : "fx:id=\"btnO\" was not injected: check your FXML file 'gui.fxml'."; - assert mBtnWalzPos1 != null : "fx:id=\"mBtnWalzPos1\" was not injected: check your FXML file 'gui.fxml'."; - assert mBtnWalzPos3 != null : "fx:id=\"mBtnWalzPos3\" was not injected: check your FXML file 'gui.fxml'."; - assert mBtnWalzPos2 != null : "fx:id=\"mBtnWalzPos2\" was not injected: check your FXML file 'gui.fxml'."; - assert mBtnNotchPos3 != null : "fx:id=\"mBtnNotchPos3\" was not injected: check your FXML file 'gui.fxml'."; - assert mBtnNotchPos2 != null : "fx:id=\"mBtnNotchPos2\" was not injected: check your FXML file 'gui.fxml'."; - assert mBtnStartPos1 != null : "fx:id=\"mBtnStartPos1\" was not injected: check your FXML file 'gui.fxml'."; - assert mBtnStartPos3 != null : "fx:id=\"mBtnStartPos3\" was not injected: check your FXML file 'gui.fxml'."; - assert mBtnStartPos2 != null : "fx:id=\"mBtnStartPos2\" was not injected: check your FXML file 'gui.fxml'."; - assert tfrein != null : "fx:id=\"tfrein\" was not injected: check your FXML file 'gui.fxml'."; - assert tfcodiert != null : "fx:id=\"tfcodiert\" was not injected: check your FXML file 'gui.fxml'."; - assert mBtnNotchPos1 != null : "fx:id=\"mBtnNotchPos1\" was not injected: check your FXML file 'gui.fxml'."; - assert lblQ != null : "fx:id=\"lblQ\" was not injected: check your FXML file 'gui.fxml'."; - assert lblE != null : "fx:id=\"lblE\" was not injected: check your FXML file 'gui.fxml'."; - assert lblW != null : "fx:id=\"lblW\" was not injected: check your FXML file 'gui.fxml'."; - assert lblR != null : "fx:id=\"lblR\" was not injected: check your FXML file 'gui.fxml'."; - assert lblT != null : "fx:id=\"lblT\" was not injected: check your FXML file 'gui.fxml'."; - assert lblZ != null : "fx:id=\"lblZ\" was not injected: check your FXML file 'gui.fxml'."; - assert lblO != null : "fx:id=\"lblO\" was not injected: check your FXML file 'gui.fxml'."; - assert lblI != null : "fx:id=\"lblI\" was not injected: check your FXML file 'gui.fxml'."; - assert lblU != null : "fx:id=\"lblU\" was not injected: check your FXML file 'gui.fxml'."; - assert lblA != null : "fx:id=\"lblA\" was not injected: check your FXML file 'gui.fxml'."; - assert lblD != null : "fx:id=\"lblD\" was not injected: check your FXML file 'gui.fxml'."; - assert lblS != null : "fx:id=\"lblS\" was not injected: check your FXML file 'gui.fxml'."; - assert lblF != null : "fx:id=\"lblF\" was not injected: check your FXML file 'gui.fxml'."; - assert lblG != null : "fx:id=\"lblG\" was not injected: check your FXML file 'gui.fxml'."; - assert lblH != null : "fx:id=\"lblH\" was not injected: check your FXML file 'gui.fxml'."; - assert lblK != null : "fx:id=\"lblK\" was not injected: check your FXML file 'gui.fxml'."; - assert lblJ != null : "fx:id=\"lblJ\" was not injected: check your FXML file 'gui.fxml'."; - assert lblP != null : "fx:id=\"lblP\" was not injected: check your FXML file 'gui.fxml'."; - assert lblX != null : "fx:id=\"lblX\" was not injected: check your FXML file 'gui.fxml'."; - assert lblY != null : "fx:id=\"lblY\" was not injected: check your FXML file 'gui.fxml'."; - assert lblC != null : "fx:id=\"lblC\" was not injected: check your FXML file 'gui.fxml'."; - assert lblV != null : "fx:id=\"lblV\" was not injected: check your FXML file 'gui.fxml'."; - assert lblB != null : "fx:id=\"lblB\" was not injected: check your FXML file 'gui.fxml'."; - assert lblL != null : "fx:id=\"lblL\" was not injected: check your FXML file 'gui.fxml'."; - assert lblM != null : "fx:id=\"lblM\" was not injected: check your FXML file 'gui.fxml'."; - assert lblN != null : "fx:id=\"lblN\" was not injected: check your FXML file 'gui.fxml'."; + menu(mBtnStartPos1, position); + menu(mBtnStartPos3, position); + menu(mBtnStartPos2, position); + + //Setze Leucht Event bei Tastendruck leuchten(btnA, circA); leuchten(btnB, circB); leuchten(btnC, circC); @@ -441,7 +369,6 @@ public class GuiController { leuchten(btnX, circX); leuchten(btnY, circY); leuchten(btnZ, circZ); - //TODO: Leuchten und Tasten ordnen this.codierer = new Codierer(); this.codierer.setKenngruppe("enigma"); @@ -453,18 +380,21 @@ public class GuiController { } @FXML - void löschen() { - textEingabe = textEingabe.substring(0, textEingabe.length() - 1); - tfrein.setText(textEingabe); - //TODO: anpassen, wenn kein Text da ist + private void loeschen() { + if (textEingabe.length()==0){ + tfKlartext.setText(""); + }else { + textEingabe = textEingabe.substring(0, textEingabe.length() - 1); + tfKlartext.setText(textEingabe); + } } @FXML void btnempfangen() { String[] empfangeneNachricht = this.codierer.empfangeNachricht(); if (empfangeneNachricht[0] != null) { - this.tfrein.setText(empfangeneNachricht[2]); - this.tfcodiert.setText(empfangeneNachricht[1]); + this.tfKlartext.setText(empfangeneNachricht[2]); + this.tfCodiert.setText(empfangeneNachricht[1]); this.resetDisplay = true; mBtnStartPos1.setText(String.valueOf(this.codierer.getWalzen()[0])); @@ -475,8 +405,8 @@ public class GuiController { @FXML void btnsenden() { - this.tfrein.setText(""); - this.tfcodiert.setText(""); + this.tfKlartext.setText(""); + this.tfCodiert.setText(""); try { this.codierer.sendeNachricht(); @@ -493,7 +423,21 @@ public class GuiController { * @param mi : MenuItem */ private void listener(MenuButton mb, MenuItem mi) { - mb.setText(mi.getText()); + // mb.setText(mi.getText()); + + 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()); + 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); + } /** @@ -511,9 +455,7 @@ public class GuiController { int finalI = i; //Listener für die einzelnen Einträge ArrayList<MenuItem> finalMi = mItem; - mItem.get(i).setOnAction(e -> { - listener(button, finalMi.get(finalI)); - }); + mItem.get(i).setOnAction(e -> listener(button, finalMi.get(finalI))); } } @@ -562,8 +504,8 @@ public class GuiController { private void setText(Button b) { if (textEingabe.length() < 250) { if(this.resetDisplay) { - this.tfcodiert.setText(""); - this.tfrein.setText(""); + this.tfCodiert.setText(""); + this.tfKlartext.setText(""); this.resetDisplay = false; this.codierer.resetHardware(); textCodiert = ""; @@ -574,8 +516,8 @@ public class GuiController { textEingabe += b.getText(); textCodiert += this.codierer.codiere(b.getText().charAt(0), true); - tfrein.setText(textEingabe); - tfcodiert.setText(textCodiert); + tfKlartext.setText(textEingabe); + tfCodiert.setText(textCodiert); mBtnStartPos1.setText(String.valueOf(this.codierer.getWalzen()[0])); mBtnStartPos2.setText(String.valueOf(this.codierer.getWalzen()[1])); @@ -585,10 +527,7 @@ public class GuiController { private void leuchten(Button taste, Circle leuchte) { - taste.setOnMousePressed(mouseEvent -> { - leuchte.setStyle("-fx-fill: #FFA500"); - - }); + taste.setOnMousePressed(mouseEvent -> leuchte.setStyle("-fx-fill: #FFA500")); taste.setOnMouseReleased(mouseEvent -> { leuchte.setStyle("-fx-background-color: " + taste.getBackground()); leuchte.setStyle("-fx-border-color: #000000"); @@ -599,19 +538,42 @@ public class GuiController { * Setzt die Anzeige des entsprechende Gui-Element auf die entsprechende Walze * ->d.h. welche Walze sitzt auf welcher Position * - * @param walze => gibt die Walzennummer an (entspricht - * @param position => gibt die Position der Walze (entspricht + * @param walzeRoemischNr => gibt die Walzennummer an + * @param walzenPosition => gibt die Position der Walze */ - public void setzeWalze(int walze, int position) { - switch (position) { + private void setzeWalze(int walzenPosition, String walzeRoemischNr) { + int walzeNr=0; + switch (walzeRoemischNr){ + case "I": + walzeNr=1; + break; + case "II": + walzeNr=2; + break; + case "III": + walzeNr=3; + break; + case "IV": + walzeNr=4; + break; + case "V": + walzeNr=5; + break; + default: + break; + } + + switch (walzenPosition) { case 1: - mBtnWalzPos1.setText(str[position]); + mBtnWalzPos1.setText(walzenNr[walzeNr]); + //codierer.setWalze(walzeNr, walzenPosition) break; case 2: - mBtnWalzPos2.setText(str[position]); + mBtnWalzPos2.setText(walzenNr[walzeNr]); + break; case 3: - mBtnWalzPos3.setText(str[position]); + mBtnWalzPos3.setText(walzenNr[walzeNr]); break; default: break; @@ -623,19 +585,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 */ - public void setzeRing(int walze, int position) { - switch (walze) { + private void setzeRing(int walzenPosition, int ringStellung) { + switch (walzenPosition) { case 1: - mBtnNotchPos1.setText(num[position]); + mBtnNotchPos1.setText(ringNr[ringStellung]); break; case 2: - mBtnNotchPos2.setText(num[position]); + mBtnNotchPos2.setText(ringNr[ringStellung]); break; case 3: - mBtnNotchPos3.setText(num[position]); + mBtnNotchPos3.setText(ringNr[ringStellung]); break; default: break; @@ -648,7 +610,7 @@ public class GuiController { * @param walze => gibt die walze an * @param buchstabe gibt den Startwert bzw die aktuelle Position der Walze (walze) an */ - public void setzePosition(int walze, char buchstabe) { + private void setzePosition(int walze, char buchstabe) { switch (walze) { case 1: mBtnStartPos1.setText(String.valueOf(buchstabe)); @@ -667,10 +629,10 @@ public class GuiController { /** * Setzt den aktuellen TagesSchluessel * - * @param tagesSchluessel + * @param tagesSchluessel => neuen Tagesschluessel übergeben */ public void setzeTagesSchluessel(String tagesSchluessel) { - /** + /* * TODO Benötige TestString aus der DB Codebuch * * Den Tagesschlüssel bekommst du wie folgt: 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 90% rename from src/main/java/enigma/model/Codierer.java rename to src/main/java/projekt/enigma/model/Codierer.java index 8b1ff3bb4ba9a89def61d34a21be45df40f9d748..bf095d794970221c3d89fb3e452823807ca645a0 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(); } /** @@ -290,7 +290,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(); @@ -339,8 +339,47 @@ public class Codierer { * TODO: Dokumentieren */ public void resetHardware() { - this.initialisiereHardware(); } + /** + * TODO: Dokumentieren + * + * @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 99% rename from src/main/java/enigma/model/Walze.java rename to src/main/java/projekt/enigma/model/Walze.java index a89b6343be57445648812dd3012a5d51a615eac4..e9d0203678a932652ce02f2163875c7cc02e13b6 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 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 85% rename from src/main/resources/enigma/gui.fxml rename to src/main/resources/projekt/enigma/gui.fxml index fd53164696f02194c47cfb1e309dfffe3514b57e..6e7793b2ec24cf48079c1078ed642c50ce5aa9cb 100644 --- a/src/main/resources/enigma/gui.fxml +++ b/src/main/resources/projekt/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="projekt.enigma.GuiController"> <children> <Circle fx:id="circQ" fill="#f0f3f5" layoutX="127.0" layoutY="309.0" radius="22.0" stroke="BLACK" strokeType="INSIDE" /> <Circle fx:id="circE" fill="#f0f3f5" layoutX="315.0" layoutY="309.0" radius="22.0" stroke="BLACK" strokeType="INSIDE" /> @@ -36,21 +36,25 @@ <Circle fx:id="circM" fill="#f0f3f5" layoutX="703.0" layoutY="416.0" radius="22.0" stroke="BLACK" strokeType="INSIDE" /> <Circle fx:id="circL" fill="#f0f3f5" layoutX="798.0" layoutY="416.0" radius="22.0" stroke="BLACK" strokeType="INSIDE" /> <Circle fx:id="circW" fill="#f0f3f5" layoutX="221.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" /> - <TextField fx:id="tfStecker2" layoutX="184.0" layoutY="631.0" prefHeight="25.0" prefWidth="48.0" AnchorPane.bottomAnchor="20.0" AnchorPane.leftAnchor="184.0" /> - <TextField fx:id="tfStecker3" layoutX="263.0" layoutY="631.0" prefHeight="25.0" prefWidth="48.0" AnchorPane.bottomAnchor="20.0" AnchorPane.leftAnchor="263.0" /> - <TextField fx:id="tfStecker4" layoutX="343.0" layoutY="631.0" prefHeight="25.0" prefWidth="48.0" AnchorPane.bottomAnchor="20.0" AnchorPane.leftAnchor="343.0" /> - <TextField fx:id="tfStecker5" layoutX="416.0" layoutY="631.0" prefHeight="25.0" prefWidth="48.0" AnchorPane.bottomAnchor="20.0" AnchorPane.leftAnchor="416.0" /> - <TextField fx:id="tfStecker6" layoutX="496.0" layoutY="631.0" prefHeight="25.0" prefWidth="48.0" AnchorPane.bottomAnchor="20.0" AnchorPane.leftAnchor="496.0" /> - <TextField fx:id="tfStecker7" layoutX="576.0" layoutY="631.0" prefHeight="25.0" prefWidth="48.0" AnchorPane.bottomAnchor="20.0" AnchorPane.leftAnchor="576.0" /> - <TextField fx:id="tfStecker8" layoutX="656.0" layoutY="631.0" prefHeight="25.0" prefWidth="48.0" AnchorPane.bottomAnchor="20.0" AnchorPane.leftAnchor="656.0" /> - <TextField fx:id="tfStecker9" layoutX="736.0" layoutY="631.0" prefHeight="25.0" prefWidth="48.0" AnchorPane.bottomAnchor="20.0" AnchorPane.leftAnchor="736.0" /> - <TextField fx:id="tfStecker10" layoutX="816.0" layoutY="631.0" prefHeight="25.0" prefWidth="48.0" AnchorPane.bottomAnchor="20.0" AnchorPane.leftAnchor="816.0" AnchorPane.rightAnchor="103.0" /> - <MenuButton fx:id="mBtnWalzPos1" alignment="CENTER_RIGHT" contentDisplay="CENTER" layoutX="91.0" layoutY="76.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="I" AnchorPane.leftAnchor="90.0" AnchorPane.topAnchor="80.0"> + <AnchorPane layoutX="109.0" layoutY="631.0" prefHeight="25.0" prefWidth="787.0"> + <children> + <TextField fx:id="tfStecker1" prefHeight="25.0" prefWidth="48.0" /> + <TextField fx:id="tfStecker2" layoutX="80.0" prefHeight="25.0" prefWidth="48.0" /> + <TextField fx:id="tfStecker3" layoutX="159.0" prefHeight="25.0" prefWidth="48.0" /> + <TextField fx:id="tfStecker4" layoutX="239.0" prefHeight="25.0" prefWidth="48.0" /> + <TextField fx:id="tfStecker5" layoutX="312.0" prefHeight="25.0" prefWidth="48.0" /> + <TextField fx:id="tfStecker6" layoutX="392.0" prefHeight="25.0" prefWidth="48.0" /> + <TextField fx:id="tfStecker7" layoutX="472.0" prefHeight="25.0" prefWidth="48.0" /> + <TextField fx:id="tfStecker8" layoutX="552.0" prefHeight="25.0" prefWidth="48.0" /> + <TextField fx:id="tfStecker9" layoutX="632.0" prefHeight="25.0" prefWidth="48.0" /> + <TextField fx:id="tfStecker10" layoutX="712.0" prefHeight="25.0" prefWidth="48.0" /> + </children> + </AnchorPane> + <MenuButton fx:id="mBtnWalzPos1" alignment="CENTER_RIGHT" contentDisplay="CENTER" layoutX="91.0" layoutY="76.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="I"> </MenuButton> - <MenuButton fx:id="mBtnWalzPos3" alignment="CENTER_RIGHT" layoutX="208.0" layoutY="80.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="I" textAlignment="CENTER" AnchorPane.leftAnchor="210.0" AnchorPane.topAnchor="80.0"> + <MenuButton fx:id="mBtnWalzPos3" alignment="CENTER_RIGHT" layoutX="208.0" layoutY="80.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="I" textAlignment="CENTER"> </MenuButton> - <MenuButton fx:id="mBtnWalzPos2" alignment="CENTER_RIGHT" layoutX="152.0" layoutY="80.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="I" textAlignment="CENTER" AnchorPane.leftAnchor="150.0" AnchorPane.topAnchor="80.0"> + <MenuButton fx:id="mBtnWalzPos2" alignment="CENTER_RIGHT" layoutX="152.0" layoutY="80.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="I" textAlignment="CENTER"> </MenuButton> <!-- <MenuButton layoutX="93.0" layoutY="114.0" mnemonicParsing="false">--> <!-- <items>--> @@ -82,25 +86,25 @@ <!-- <MenuItem mnemonicParsing="false" onAction="#z26" text="26" />--> <!-- </items>--> <!-- </MenuButton>--> - <MenuButton fx:id="mBtnNotchPos3" alignment="CENTER_RIGHT" layoutX="208.0" layoutY="120.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="1" textAlignment="CENTER" AnchorPane.leftAnchor="210.0" AnchorPane.topAnchor="120.0"> + <MenuButton fx:id="mBtnNotchPos3" alignment="CENTER_RIGHT" layoutX="208.0" layoutY="120.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="1" textAlignment="CENTER"> </MenuButton> - <MenuButton fx:id="mBtnNotchPos2" alignment="CENTER_RIGHT" layoutX="152.0" layoutY="120.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="1" textAlignment="CENTER" AnchorPane.leftAnchor="150.0" AnchorPane.topAnchor="120.0"> + <MenuButton fx:id="mBtnNotchPos2" alignment="CENTER_RIGHT" layoutX="152.0" layoutY="120.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="1" textAlignment="CENTER"> </MenuButton> - <MenuButton fx:id="mBtnStartPos1" alignment="CENTER_RIGHT" layoutX="95.0" layoutY="157.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="A" textAlignment="CENTER" AnchorPane.leftAnchor="90.0" AnchorPane.topAnchor="160.0"> + <MenuButton fx:id="mBtnStartPos1" alignment="CENTER_RIGHT" layoutX="95.0" layoutY="157.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="A" textAlignment="CENTER"> </MenuButton> - <MenuButton fx:id="mBtnStartPos3" alignment="CENTER_RIGHT" layoutX="208.0" layoutY="160.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="A" textAlignment="CENTER" AnchorPane.leftAnchor="210.0" AnchorPane.topAnchor="160.0"> + <MenuButton fx:id="mBtnStartPos3" alignment="CENTER_RIGHT" layoutX="208.0" layoutY="160.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="A" textAlignment="CENTER"> </MenuButton> - <MenuButton fx:id="mBtnStartPos2" alignment="CENTER_RIGHT" layoutX="152.0" layoutY="160.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="A" textAlignment="CENTER" AnchorPane.leftAnchor="150.0" AnchorPane.topAnchor="160.0"> + <MenuButton fx:id="mBtnStartPos2" alignment="CENTER_RIGHT" layoutX="152.0" layoutY="160.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="A" textAlignment="CENTER"> </MenuButton> - <TextField fx:id="tfrein" editable="false" layoutX="280.0" layoutY="54.0" prefHeight="77.0" prefWidth="410.0" /> - <TextField fx:id="tfcodiert" editable="false" layoutX="280.0" layoutY="149.0" prefHeight="77.0" prefWidth="410.0" /> - <Button layoutX="726.0" layoutY="153.0" mnemonicParsing="false" onAction="#btnsenden" prefHeight="69.0" prefWidth="164.0" text="An Funker senden" AnchorPane.rightAnchor="77.0" /> - <Button layoutX="726.0" layoutY="58.0" mnemonicParsing="false" onAction="#btnempfangen" prefHeight="69.0" prefWidth="164.0" text="Funkspruch empfangen" AnchorPane.rightAnchor="77.0" /> - <MenuButton fx:id="mBtnNotchPos1" alignment="CENTER_RIGHT" layoutX="93.0" layoutY="114.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="1" textAlignment="CENTER" AnchorPane.leftAnchor="90.0" AnchorPane.topAnchor="120.0" /> - <Label layoutX="29.0" layoutY="80.0" text="Walze" AnchorPane.leftAnchor="20.0" AnchorPane.topAnchor="84.0" /> - <Label layoutX="29.0" layoutY="127.0" text="Ringe" AnchorPane.leftAnchor="20.0" AnchorPane.topAnchor="124.0" /> - <Label layoutX="17.0" layoutY="164.0" text="Startposition" AnchorPane.leftAnchor="17.0" AnchorPane.topAnchor="164.0" /> - <Label layoutX="380.0" layoutY="27.0" prefHeight="17.0" prefWidth="172.0" text="Tageseinstellungen" /> + <TextField fx:id="tfKlartext" editable="false" layoutX="280.0" layoutY="54.0" prefHeight="77.0" prefWidth="410.0" AnchorPane.bottomAnchor="546.0" AnchorPane.leftAnchor="280.0" AnchorPane.rightAnchor="277.0" AnchorPane.topAnchor="54.0" /> + <TextField fx:id="tfCodiert" editable="false" layoutX="280.0" layoutY="149.0" prefHeight="77.0" prefWidth="410.0" AnchorPane.bottomAnchor="451.0" AnchorPane.leftAnchor="280.0" AnchorPane.rightAnchor="277.0" AnchorPane.topAnchor="149.0" /> + <Button layoutX="730.0" layoutY="58.0" mnemonicParsing="false" onAction="#btnsenden" prefHeight="69.0" prefWidth="164.0" text="An Funker senden" AnchorPane.topAnchor="58.0" /> + <Button layoutX="730.0" layoutY="153.0" mnemonicParsing="false" onAction="#btnempfangen" prefHeight="69.0" prefWidth="164.0" text="Funkspruch empfangen" /> + <MenuButton fx:id="mBtnNotchPos1" alignment="CENTER_RIGHT" layoutX="93.0" layoutY="114.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="1" textAlignment="CENTER" /> + <Label layoutX="29.0" layoutY="80.0" text="Walze" /> + <Label layoutX="29.0" layoutY="127.0" text="Ringe" /> + <Label layoutX="17.0" layoutY="164.0" text="Startposition" /> + <Label layoutX="68.0" layoutY="226.0" prefHeight="17.0" prefWidth="172.0" text="Spruchschlüssel" /> <Label fx:id="lblE" alignment="CENTER" layoutX="300.0" layoutY="292.0" prefHeight="30.0" prefWidth="30.0" text="E" textAlignment="CENTER" AnchorPane.bottomAnchor="351.0"> <font> <Font size="23.0" /> @@ -126,7 +130,7 @@ <Font size="23.0" /> </font> </Label> - <Label fx:id="lblO" alignment="CENTER" layoutX="801.0" layoutY="292.0" prefHeight="30.0" prefWidth="30.0" text="O" textAlignment="CENTER" AnchorPane.bottomAnchor="351.0" AnchorPane.rightAnchor="136.0"> + <Label fx:id="lblO" alignment="CENTER" layoutX="801.0" layoutY="292.0" prefHeight="30.0" prefWidth="30.0" text="O" textAlignment="CENTER" AnchorPane.bottomAnchor="351.0"> <font> <Font size="23.0" /> </font> @@ -171,7 +175,7 @@ <Font size="23.0" /> </font> </Label> - <Label fx:id="lblK" alignment="CENTER" layoutX="748.0" layoutY="346.0" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="K" AnchorPane.bottomAnchor="301.0" AnchorPane.rightAnchor="189.0"> + <Label fx:id="lblK" alignment="CENTER" layoutX="748.0" layoutY="346.0" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="K" AnchorPane.bottomAnchor="301.0"> <font> <Font size="23.0" /> </font> @@ -181,7 +185,7 @@ <Font size="23.0" /> </font> </Label> - <Label fx:id="lblP" alignment="CENTER" layoutX="97.0" layoutY="401.0" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="P" AnchorPane.bottomAnchor="246.0" AnchorPane.leftAnchor="97.0"> + <Label fx:id="lblP" alignment="CENTER" layoutX="97.0" layoutY="401.0" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="P" AnchorPane.bottomAnchor="246.0"> <font> <Font size="23.0" /> </font> @@ -211,7 +215,7 @@ <Font size="23.0" /> </font> </Label> - <Label fx:id="lblL" alignment="CENTER" layoutX="782.0" layoutY="401.0" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="L" AnchorPane.bottomAnchor="246.0" AnchorPane.rightAnchor="155.0"> + <Label fx:id="lblL" alignment="CENTER" layoutX="782.0" layoutY="401.0" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="L" AnchorPane.bottomAnchor="246.0"> <font> <Font size="23.0" /> </font> @@ -365,5 +369,6 @@ <Font name="System Bold" size="18.0" /> </font> </Button> + <Label layoutX="68.0" layoutY="205.0" prefHeight="17.0" prefWidth="172.0" text="Tagesschlüssel" /> </children> </AnchorPane> diff --git a/src/main/resources/enigma/kenngruppe.fxml b/src/main/resources/projekt/enigma/kenngruppe.fxml similarity index 61% rename from src/main/resources/enigma/kenngruppe.fxml rename to src/main/resources/projekt/enigma/kenngruppe.fxml index 1f56acace75752e4df64dc9ae1d65140bab3b349..9fdf84fcf078371cdbd282413287ab8a60150aed 100644 --- a/src/main/resources/enigma/kenngruppe.fxml +++ b/src/main/resources/projekt/enigma/kenngruppe.fxml @@ -4,12 +4,17 @@ <?import javafx.scene.control.Label?> <?import javafx.scene.control.TextField?> <?import javafx.scene.layout.AnchorPane?> +<?import javafx.scene.layout.Pane?> - -<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="projekt.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" /> - <TextField layoutX="81.0" layoutY="84.0" AnchorPane.leftAnchor="70.0" AnchorPane.rightAnchor="70.0" AnchorPane.topAnchor="100.0" /> + <Label layoutX="81.0" layoutY="29.0" text="Bitte Kenngruppe eingeben!" /> + <Button fx:id="secondaryButton" layoutX="72.0" layoutY="178.0" onAction="#switchToPrimary" text="Kenngruppe bestätigen!" /> + <Pane layoutX="14.0" layoutY="100.0" prefHeight="25.0" prefWidth="234.0"> + <children> + <TextField prefHeight="25.0" prefWidth="71.0" /> + <TextField layoutX="126.0" prefHeight="25.0" prefWidth="108.0" /> + </children> + </Pane> </children> </AnchorPane> 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);