diff --git a/src/main/java/Enigma/model/Codebuch.java b/src/main/java/Enigma/model/Codebuch.java index 60f699eb693909af145a24a1d2d376a7446807d5..ee7b96e0aa0af4d2e3a48a12f88631c039944a2c 100644 --- a/src/main/java/Enigma/model/Codebuch.java +++ b/src/main/java/Enigma/model/Codebuch.java @@ -19,7 +19,7 @@ package Enigma.model; public class Codebuch { private int tag; private int[] walzenlage; - private char[] ringstellung; + private int[] ringstellung; private char[][] steckverbindung; /** @@ -33,10 +33,10 @@ public class Codebuch { */ public Codebuch() { this.walzenlage = new int[3]; - this.ringstellung = new char[3]; + this.ringstellung = new int[3]; this.steckverbindung = new char[10][]; - for(int i = 0; i < 10; i++) { + for (int i = 0; i < 10; i++) { this.steckverbindung[i] = new char[2]; this.steckverbindung[i][0] = 'A'; this.steckverbindung[i][1] = 'A'; @@ -69,7 +69,7 @@ public class Codebuch { sb.append("\n"); sb.append("Ringstellung: "); - for (char rs : this.getRingstellung()) { + for (int rs : this.getRingstellung()) { sb.append(rs).append(","); rsLoop = true; } @@ -79,11 +79,9 @@ public class Codebuch { sb.append("\n"); sb.append("Steckverbindung: "); - for (char[] s : this.getSteckverbindung()) { - if (Character.isLetter(s[0])) { - sb.append(s[0]).append(":").append(s[1]).append(","); - svLoop = true; - } + for (char[] verbindung : this.getSteckverbindung()) { + sb.append(verbindung[0]).append(":").append(verbindung[1]).append(","); + svLoop = true; } if (svLoop) { sb.setLength(sb.length() - 1); @@ -125,7 +123,7 @@ public class Codebuch { * * @return String[] : Ringstellung */ - public char[] getRingstellung() { + public int[] getRingstellung() { return ringstellung; } @@ -141,15 +139,16 @@ public class Codebuch { /** * Setzt die Steckverbindung dieser Instanz * - * @param steckverbindung : String[] : Die Steckverbindungen die gesteckt werden sollen. + * @param kabel : String[] : Die Steckverbindungen die gesteckt werden sollen. * Jeder Eintrag im Array ist ein String mit zwei Zeichen. * Diese werden in zwei char zerlegt und anschließend im globalen * Array gespeichert. */ - public void setSteckverbindung(String[] steckverbindung) { + public void setSteckverbindung(String[] kabel) { int counter = 0; - char[] verbindung = new char[2]; - for (String stecker : steckverbindung) { + + for (String stecker : kabel) { + char[] verbindung = new char[2]; verbindung[0] = stecker.charAt(0); verbindung[1] = stecker.charAt(1); this.steckverbindung[counter++] = verbindung; @@ -172,7 +171,7 @@ public class Codebuch { * @param position : int : Auf welche Walze wird der Ring aufgesetzt? * @param ringstellung : char : An dieser Position soll die nächste Walze weiter gedreht werden. */ - public void setRingstellung(int position, char ringstellung) { + public void setRingstellung(int position, int ringstellung) { this.ringstellung[position] = ringstellung; } } diff --git a/src/main/java/Enigma/model/DatenbankSqlite.java b/src/main/java/Enigma/model/DatenbankSqlite.java index 51f34c1bf1c59f343bb5ef7ea9123133995defdb..fd7270d5271320a6d4c7474a8ae796ff8b47023d 100644 --- a/src/main/java/Enigma/model/DatenbankSqlite.java +++ b/src/main/java/Enigma/model/DatenbankSqlite.java @@ -57,13 +57,13 @@ public class DatenbankSqlite { cb.setTag(rs.getInt("Tag")); walzenlage = rs.getString("Walzenlage").split(","); - for(int i = 0; i < 3; i++) { + for (int i = 0; i < 3; i++) { cb.setWalzenlage(i, Integer.parseInt(walzenlage[i])); } ringstellung = rs.getString("Ringstellung").split(","); - for(int i = 0; i < 3; i++) { - cb.setRingstellung(i, ringstellung[i].charAt(0)); + for (int i = 0; i < 3; i++) { + cb.setRingstellung(i, Integer.parseInt(ringstellung[i])); } cb.setSteckverbindung(rs.getString("Steckverbindung").split(",")); @@ -136,7 +136,7 @@ public class DatenbankSqlite { /** * Generiert einen String aus 10 * 2 unterschiedlichen Großbuchstaben - * @return String => 10 Buchstabenkombinationen mit Komma getrennt + * @return String => 10 Buchstabenkombinationen mit Komma getrennt */ /* private static String steckverbindung(){ diff --git a/src/main/java/Enigma/model/Hardware.java b/src/main/java/Enigma/model/Hardware.java index efb0517db59ec4ed9e56a381b05d623aa4fd6004..e9eebc5f029af7cc8cceeddd9c828a70efee3039 100644 --- a/src/main/java/Enigma/model/Hardware.java +++ b/src/main/java/Enigma/model/Hardware.java @@ -31,6 +31,7 @@ public class Hardware { */ public Hardware() { this.walzen = new Walze[3]; + this.nachricht = ""; } /** @@ -39,7 +40,8 @@ public class Hardware { * @param walze : int : Setzt die Walze mit der angegebenen Nummer ein * @param walzenNr : int : Die Nummer der einzusetzenden Walze */ - public void setzeWalzenNr(int walze, int walzenNr) { + public void setzeWalzenNr(int walze, int walzenNr, int ringstellung) { + this.walzen[walze] = new Walze(walzenNr, ringstellung); } /** @@ -49,6 +51,7 @@ public class Hardware { * @param position : int : Umspringpunkt auf der Walze */ public void setzeRing(int walze, int position) { + this.walzen[walze].setRingstellung(position); } /** @@ -58,6 +61,7 @@ public class Hardware { * @param buchstabe : char : Buchstabe der zugewiesen soll */ public void setzePosition(int walze, char buchstabe) { + this.walzen[walze].setBuchstabe(buchstabe); } /** @@ -73,12 +77,29 @@ public class Hardware { /** * Gibt die letzte empfangene Nachricht zurück * <p> - * String[0] = Die verschlüsselte Nachricht - * String[1] = Nachricht im Klartext + * String[0} Tag wann die Nachricht gesendet wurde + * String[1] = Die verschlüsselte Nachricht + * String[2] = Nachricht im Klartext */ public String[] empfangeNachricht() { + String[] codierteNachricht = new String[3]; + Morsecode mc = new Morsecode(); - return new String[2]; + try { + codierteNachricht = new Funkraum().empfangeFunkspruch(this.kenngruppe); + String morsecode = mc.convertMorsecodeToBuchstabe(codierteNachricht[1]); + String decodiert = ""; + + for (char buchstabe : morsecode.toCharArray()) { + decodiert += this.codiere(buchstabe); + } + + codierteNachricht[2] = decodiert; + + } catch (IOException e) { + e.printStackTrace(); + } + return codierteNachricht; } /** @@ -88,6 +109,8 @@ public class Hardware { * @return char : Der ver/entschlüsselte Buchstabe */ public char codiere(char buchstabe) { + this.dreheWalzen(); + buchstabe = this.steckbrett.codiere(Character.toUpperCase(buchstabe)); buchstabe = this.walzen[0].codiere(buchstabe); buchstabe = this.walzen[1].codiere(buchstabe); @@ -98,8 +121,6 @@ public class Hardware { buchstabe = this.walzen[0].codiere2(buchstabe); buchstabe = this.steckbrett.codiere(buchstabe); - this.dreheWalzen(); - this.nachricht += buchstabe; return buchstabe;