Skip to content
Snippets Groups Projects
Commit 59e0c1d3 authored by Flori N's avatar Flori N
Browse files

threading, Funkraum als public

parent 9b828d8a
No related branches found
No related tags found
No related merge requests found
package projekt.enigma; package projekt.enigma;
import projekt.enigma.threads.ThreadApp;
import projekt.enigma.threads.ThreadFunkraum;
import java.sql.SQLException; import java.sql.SQLException;
public class Main { public class Main {
public static void main(String[] args) throws SQLException { 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();
} }
} }
...@@ -19,24 +19,25 @@ import java.util.ArrayList; ...@@ -19,24 +19,25 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
* Hier sitzt der Funker * Hier sitzt der Funker.
* Der Funkraum kann Funksprüche empfangen und senden. * Der Funkraum kann Funksprueche empfangen und senden.
* Hierfür wird eine Verbindung zu einem externen Service aufgebaut. * Hierfuer wird eine Verbindung zu einem externen Service aufgebaut.
* Dieser Servive erwartet die Nachrichten im JSON Format. Dazu wird ein k als Kenngruppe * 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. * 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. * die Grundeinstellungen aus dem Codebuch, für diesen Tag, raussuchen kann.
* {'m': 'Hello world', 't': '26'} * {'m': 'Hello world', 't': '26'}
* *
* @param kenngruppe : String : Kenngruppe dieser Engiam * @param kenngruppe : String : Kenngruppe dieser Enigma
* @return String[] : String Array wobei Index 0 dem Empfangstag entspricht und index 1 der empfangenen Nachricht * @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]; String[] funkspruch = new String[2];
HttpClient httpclient = HttpClients.createDefault(); HttpClient httpclient = HttpClients.createDefault();
...@@ -73,22 +74,21 @@ class Funkraum { ...@@ -73,22 +74,21 @@ class Funkraum {
/** /**
* Dem Service senden wir unsere Nachricht als POST Parameter (m) und unsere Kenngruppe (k). * 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 * Dieser nimmt die Daten entgegen und hierlerlegt sie auf seinem Stapel (Datenbank) von dem die Nachrichten
* irgendwann, auf Anfrage, wieder abgerufen werden können. * irgendwann, auf Anfrage, wieder abgerufen werden koennen.
* <p> * <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} * {'result': 200}
* <p> * <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. * 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 * @param kenngruppe : String : Die Kenngruppe dieser Engima
* @throws IOException : Exception : Funkspruch konnte nicht gesendet werden * @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(); HttpClient httpclient = HttpClients.createDefault();
HttpPost httppost = new HttpPost("https://enigma.itstall.de/"); HttpPost httppost = new HttpPost("https://enigma.itstall.de/");
...@@ -106,9 +106,9 @@ class Funkraum { ...@@ -106,9 +106,9 @@ class Funkraum {
BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent())); BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent()));
JSONObject result = new JSONObject(reader.readLine()); JSONObject result = new JSONObject(reader.readLine());
if (result.getInt("result") != 200) { 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...");
} }
} }
} }
} }
...@@ -18,12 +18,12 @@ public class Walze { ...@@ -18,12 +18,12 @@ public class Walze {
//region Variablen //region Variablen
/** /**
* Das String Array aller bekannter aktuellen Walzen * Das String Array aller bekannter aktueller Walzen
*/ */
String[] walzen; String[] walzen;
/** /**
* alphabet : String dass die Buchstaben des Alphabets enthaelt * alphabet : String : dass die Buchstaben des Alphabets enthaelt
*/ */
private String alphabet; private String alphabet;
...@@ -33,12 +33,12 @@ public class Walze { ...@@ -33,12 +33,12 @@ public class Walze {
private char ringstellung; private char ringstellung;
/** /**
* walzennr : int : Bestimmt, welche Walze genutzt wird * walzenNr : int : Bestimmt, welche Walze genutzt wird
*/ */
private int walzenNr; private int walzenNr;
/** /**
* Die Anzahl der getätigten Walzen Drehungen * turns : int : Die Anzahl der getätigten Walzen Drehungen
*/ */
private int turns; private int turns;
//endregion //endregion
...@@ -46,12 +46,12 @@ public class Walze { ...@@ -46,12 +46,12 @@ public class Walze {
//region Konstruktor //region Konstruktor
/** /**
* Ueberschriebener Konstruktor, der die Eingangsparameter der Walze mit gibt * Ueberschriebener Konstruktor, der die Eingangsparameter der Walze mit gibt
* und die Walzen initialisiert.
* *
* @param walzenNr : int : Nummer der gewaehlten Walze * @param walzenNr : int : Nummer der gewaehlten Walze
* @param ringstellung : int : Einstellung des Umsprungpunktes * @param ringstellung : int : Einstellung des Umsprungpunktes
*/ */
public Walze(int walzenNr, int ringstellung) { public Walze(int walzenNr, int ringstellung) {
this.walzen = new String[5]; this.walzen = new String[5];
this.walzen[0] = "EKMFLGDQVZNTOWYHXUSPAIBRCJ"; this.walzen[0] = "EKMFLGDQVZNTOWYHXUSPAIBRCJ";
this.walzen[1] = "AJDKSIRUXBLHWTMCQGZNPYFVOE"; this.walzen[1] = "AJDKSIRUXBLHWTMCQGZNPYFVOE";
...@@ -77,7 +77,6 @@ public class Walze { ...@@ -77,7 +77,6 @@ public class Walze {
* TODO: Doku * TODO: Doku
*/ */
public boolean dreheWalze(int richtung) { public boolean dreheWalze(int richtung) {
boolean checkRing = false; boolean checkRing = false;
if (richtung == -1 || richtung == 1) { if (richtung == -1 || richtung == 1) {
...@@ -113,11 +112,11 @@ public class Walze { ...@@ -113,11 +112,11 @@ public class Walze {
* @return buchstabe : char : decodierter Buchstabe * @return buchstabe : char : decodierter Buchstabe
*/ */
public char codiere2(char buchstabe) { public char codiere2(char buchstabe) {
int zwischensumme = this.fetchWalze().indexOf(buchstabe) - this.turns; int zwischensumme = this.fetchWalze().indexOf(buchstabe) - this.turns;
if (zwischensumme < 0) { if (zwischensumme < 0) {
zwischensumme = this.fetchWalze().indexOf(buchstabe) - this.turns + 26; zwischensumme = this.fetchWalze().indexOf(buchstabe) - this.turns + 26;
} }
return this.alphabet.charAt(zwischensumme % 26); return this.alphabet.charAt(zwischensumme % 26);
} }
...@@ -126,18 +125,14 @@ public class Walze { ...@@ -126,18 +125,14 @@ public class Walze {
* *
* @return walze : Character[] : gibt die gewaehlte Walze zurueck * @return walze : Character[] : gibt die gewaehlte Walze zurueck
*/ */
private String fetchWalze() { private String fetchWalze() { return walzen[walzenNr]; }
return walzen[walzenNr];
}
//endregion //endregion
//region Setter //region Setter
/** /**
* * TODO: Funktionsname hat sich geändert * * TODO: Funktionsname hat sich geändert
* Gibt die Grundeinstellung der Walze ein. Nur Buchstaben von A - Z sind zugelassen. * Ermittelt den Wert, wie oft die Walze gedreht werden muss, um die Eingangswalzenstellung
* Buchstaben werden automatisch in Grossbuchstaben umgewandelt. * zu erreichen.
* Ist die Grundeinstellung nicht 'A', wird die Methode dreheWalze() aufgerufen.
* *
* @param buchstabe : Character : Einstellung der Walze * @param buchstabe : Character : Einstellung der Walze
*/ */
...@@ -180,7 +175,7 @@ public class Walze { ...@@ -180,7 +175,7 @@ public class Walze {
/** /**
* Gibt den Character zurueck, der aktuell in der Walze eingestellt ist * 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() { public Character getPosition() {
return this.alphabet.charAt(turns % 26); return this.alphabet.charAt(turns % 26);
......
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);
}
}
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");
// }
}
}
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