From 59e0c1d3f9d6dde178ad302205ab0828ec160255 Mon Sep 17 00:00:00 2001 From: FloriN <lisa.nicomisch@tutamail.com> Date: Mon, 2 Dec 2019 13:06:00 +0100 Subject: [PATCH] threading, Funkraum als public --- src/main/java/projekt/enigma/Main.java | 9 ++++- .../java/projekt/enigma/model/Funkraum.java | 40 +++++++++---------- src/main/java/projekt/enigma/model/Walze.java | 25 +++++------- .../projekt/enigma/threads/ThreadApp.java | 17 ++++++++ .../enigma/threads/ThreadFunkraum.java | 26 ++++++++++++ 5 files changed, 81 insertions(+), 36 deletions(-) create mode 100644 src/main/java/projekt/enigma/threads/ThreadApp.java create mode 100644 src/main/java/projekt/enigma/threads/ThreadFunkraum.java diff --git a/src/main/java/projekt/enigma/Main.java b/src/main/java/projekt/enigma/Main.java index f016016..31b558d 100644 --- a/src/main/java/projekt/enigma/Main.java +++ b/src/main/java/projekt/enigma/Main.java @@ -1,11 +1,18 @@ package projekt.enigma; +import projekt.enigma.threads.ThreadApp; +import projekt.enigma.threads.ThreadFunkraum; + import java.sql.SQLException; public class Main { public static void main(String[] args) throws SQLException { - App.main(args); + Thread app = new Thread(new ThreadApp()); +// Thread funk = new Thread(new ThreadFunkraum()); + + app.start(); +// funk.start(); } } diff --git a/src/main/java/projekt/enigma/model/Funkraum.java b/src/main/java/projekt/enigma/model/Funkraum.java index 96a3a35..f596cfa 100644 --- a/src/main/java/projekt/enigma/model/Funkraum.java +++ b/src/main/java/projekt/enigma/model/Funkraum.java @@ -19,24 +19,25 @@ import java.util.ArrayList; import java.util.List; /** - * Hier sitzt der Funker - * Der Funkraum kann Funksprüche empfangen und senden. - * Hierfür wird eine Verbindung zu einem externen Service aufgebaut. + * Hier sitzt der Funker. + * Der Funkraum kann Funksprueche empfangen und senden. + * Hierfuer wird eine Verbindung zu einem externen Service aufgebaut. * Dieser Servive erwartet die Nachrichten im JSON Format. Dazu wird ein k als Kenngruppe - * (Benutzername) übergeben und falls eine Nachricht gesendet werden soll, zusätzlich ein m mit der Nachricht. + * (Benutzername) uebergeben und falls eine Nachricht gesendet werden soll, zusätzlich ein m mit der Nachricht. * Beides wird als String gesendet. */ -class Funkraum { +public class Funkraum { + /** - * Zum Empfangen liefert der Server, anstatt der Kenngruppe (k) den Empfangstag der Nachricht mit damit man + * Zum Empfangen liefert der Server, anstatt der Kenngruppe (k), den Empfangstag (t) der Nachricht mit, damit man * die Grundeinstellungen aus dem Codebuch, für diesen Tag, raussuchen kann. * {'m': 'Hello world', 't': '26'} * - * @param kenngruppe : String : Kenngruppe dieser Engiam - * @return String[] : String Array wobei Index 0 dem Empfangstag entspricht und index 1 der empfangenen Nachricht + * @param kenngruppe : String : Kenngruppe dieser Enigma + * @return funkspruch : String[] : String Array wobei Index 0 dem Empfangstag entspricht und Index 1 + * der empfangenen Nachricht */ - String[] empfangeFunkspruch(String kenngruppe) { - + public String[] empfangeFunkspruch(String kenngruppe) { String[] funkspruch = new String[2]; HttpClient httpclient = HttpClients.createDefault(); @@ -73,22 +74,21 @@ class Funkraum { /** * Dem Service senden wir unsere Nachricht als POST Parameter (m) und unsere Kenngruppe (k). - * Dieser nimmt die Daten entgegeb und hierlerlegt sie auf seinem Stapel (Datenbank) von dem die Nachrichten - * irgendwann, auf Anfrage, wieder abgerufen werden können. + * Dieser nimmt die Daten entgegen und hierlerlegt sie auf seinem Stapel (Datenbank) von dem die Nachrichten + * irgendwann, auf Anfrage, wieder abgerufen werden koennen. * <p> - * Darauf antworter der Server dann mit einem JSON Object in dem das Ergebnis der Anfrage zu sehen ist. + * Darauf antwortet der Server mit einem JSON Object in dem das Ergebnis der Anfrage zu sehen ist. * {'result': 200} * <p> - * Die 200 heißt hier das alles erfolgreich durchgeführt werden konnte. Steht hier etwas anderes, ist ein Fehler + * Die 200 heißt hier, dass alles erfolgreich durchgefuehrt werden konnte. Steht hier etwas anderes, ist ein Fehler * aufgetreten und die Anfrage war nicht erfolgreich. - * In letzterem Fall sollte eine Meldung an den Benutzer ausgegeben werden und ggF später erneut versucht. + * In letzterem Fall sollte eine Meldung an den Benutzer ausgegeben werden und ggf spaeter erneut versucht werden. * - * @param funkspruch : String : Der zu sendede Funkspruch + * @param funkspruch : String : Der zu sendende Funkspruch * @param kenngruppe : String : Die Kenngruppe dieser Engima * @throws IOException : Exception : Funkspruch konnte nicht gesendet werden */ - void sendeFunkspruch(String funkspruch, String kenngruppe) throws HttpException, IOException { - + public void sendeFunkspruch(String funkspruch, String kenngruppe) throws HttpException, IOException { HttpClient httpclient = HttpClients.createDefault(); HttpPost httppost = new HttpPost("https://enigma.itstall.de/"); @@ -106,9 +106,9 @@ class Funkraum { BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent())); JSONObject result = new JSONObject(reader.readLine()); if (result.getInt("result") != 200) { - throw new HttpException("Der andere Funker mag deine Nachricht nicht. Rüge ihn wenn du ihn wieder siehst..."); + throw new HttpException("Der andere Funker mag deine Nachricht nicht. " + + "Rüge ihn wenn du ihn wieder siehst..."); } } - } } diff --git a/src/main/java/projekt/enigma/model/Walze.java b/src/main/java/projekt/enigma/model/Walze.java index 118ad4f..2cd9039 100644 --- a/src/main/java/projekt/enigma/model/Walze.java +++ b/src/main/java/projekt/enigma/model/Walze.java @@ -18,12 +18,12 @@ public class Walze { //region Variablen /** - * Das String Array aller bekannter aktuellen Walzen + * Das String Array aller bekannter aktueller Walzen */ String[] walzen; /** - * alphabet : String dass die Buchstaben des Alphabets enthaelt + * alphabet : String : dass die Buchstaben des Alphabets enthaelt */ private String alphabet; @@ -33,12 +33,12 @@ public class Walze { private char ringstellung; /** - * walzennr : int : Bestimmt, welche Walze genutzt wird + * walzenNr : int : Bestimmt, welche Walze genutzt wird */ private int walzenNr; /** - * Die Anzahl der getätigten Walzen Drehungen + * turns : int : Die Anzahl der getätigten Walzen Drehungen */ private int turns; //endregion @@ -46,12 +46,12 @@ public class Walze { //region Konstruktor /** * Ueberschriebener Konstruktor, der die Eingangsparameter der Walze mit gibt + * und die Walzen initialisiert. * * @param walzenNr : int : Nummer der gewaehlten Walze * @param ringstellung : int : Einstellung des Umsprungpunktes */ public Walze(int walzenNr, int ringstellung) { - this.walzen = new String[5]; this.walzen[0] = "EKMFLGDQVZNTOWYHXUSPAIBRCJ"; this.walzen[1] = "AJDKSIRUXBLHWTMCQGZNPYFVOE"; @@ -77,7 +77,6 @@ public class Walze { * TODO: Doku */ public boolean dreheWalze(int richtung) { - boolean checkRing = false; if (richtung == -1 || richtung == 1) { @@ -113,11 +112,11 @@ public class Walze { * @return buchstabe : char : decodierter Buchstabe */ public char codiere2(char buchstabe) { - int zwischensumme = this.fetchWalze().indexOf(buchstabe) - this.turns; if (zwischensumme < 0) { zwischensumme = this.fetchWalze().indexOf(buchstabe) - this.turns + 26; } + return this.alphabet.charAt(zwischensumme % 26); } @@ -126,18 +125,14 @@ public class Walze { * * @return walze : Character[] : gibt die gewaehlte Walze zurueck */ - private String fetchWalze() { - - return walzen[walzenNr]; - } + private String fetchWalze() { return walzen[walzenNr]; } //endregion //region Setter /** * * TODO: Funktionsname hat sich geändert - * Gibt die Grundeinstellung der Walze ein. Nur Buchstaben von A - Z sind zugelassen. - * Buchstaben werden automatisch in Grossbuchstaben umgewandelt. - * Ist die Grundeinstellung nicht 'A', wird die Methode dreheWalze() aufgerufen. + * Ermittelt den Wert, wie oft die Walze gedreht werden muss, um die Eingangswalzenstellung + * zu erreichen. * * @param buchstabe : Character : Einstellung der Walze */ @@ -180,7 +175,7 @@ public class Walze { /** * Gibt den Character zurueck, der aktuell in der Walze eingestellt ist * - * @return Character am Index 0 des (verschobenen) Alphabets zurueck + * @return Character am Index 0 des (verschobenen) Alphabets */ public Character getPosition() { return this.alphabet.charAt(turns % 26); diff --git a/src/main/java/projekt/enigma/threads/ThreadApp.java b/src/main/java/projekt/enigma/threads/ThreadApp.java new file mode 100644 index 0000000..47cbfb2 --- /dev/null +++ b/src/main/java/projekt/enigma/threads/ThreadApp.java @@ -0,0 +1,17 @@ +package projekt.enigma.threads; + +import projekt.enigma.App; + +import java.sql.SQLException; + +public class ThreadApp implements Runnable { + private String[] args; + + @Override + public void run() { + System.out.println("ThreadApp" + Thread.currentThread()); + App app = new App(); + app.main(args); + + } +} diff --git a/src/main/java/projekt/enigma/threads/ThreadFunkraum.java b/src/main/java/projekt/enigma/threads/ThreadFunkraum.java new file mode 100644 index 0000000..b4a978d --- /dev/null +++ b/src/main/java/projekt/enigma/threads/ThreadFunkraum.java @@ -0,0 +1,26 @@ +package projekt.enigma.threads; + +import org.apache.http.HttpException; +import projekt.enigma.model.Codierer; +import projekt.enigma.model.Funkraum; + +import java.io.IOException; + +public class ThreadFunkraum implements Runnable { + String kenngruppe = new Codierer().getKenngruppe(); +// String funkspruch; + @Override + public void run() { + Funkraum funkraum = new Funkraum(); + System.out.println("Threadfunkraum" + Thread.currentThread()); + funkraum.empfangeFunkspruch(kenngruppe); + +// try { +// funkraum.sendeFunkspruch(funkspruch, kenngruppe); +// } catch (HttpException he) { +// System.err.println("Error"); +// } catch (IOException io) { +// System.err.println("Error"); +// } + } +} -- GitLab