Skip to content
Snippets Groups Projects
Commit d621df68 authored by Dennis Eisold's avatar Dennis Eisold
Browse files

Merge branch 'master' into 'master'

Master

See merge request alfatrainingkurse/java/enigma!23
parents 4c17dfcc 82b5d272
No related branches found
No related tags found
No related merge requests found
......@@ -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;
}
}
......@@ -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(){
......
......@@ -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;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment