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

Codebuch Grundeinstellungen entfernt. Funkraum für externe kommunikation erstellt.

parent 209335ee
No related branches found
No related tags found
1 merge request!9Funkraum, Anpassungen auf Java Konventionen, Unit Tests
...@@ -37,7 +37,18 @@ ...@@ -37,7 +37,18 @@
<artifactId>mariadb-java-client</artifactId> <artifactId>mariadb-java-client</artifactId>
<version>2.5.2</version> <version>2.5.2</version>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.10</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20190722</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
<plugins> <plugins>
......
package Enigma; package Enigma;
import Enigma.model.DatenbankSqlite; import Enigma.model.Funkraum;
import Enigma.model.Morsecode;
import java.sql.SQLException; import java.io.IOException;
public class Main { public class Main {
public static void main(String[] args) { public static void main(String[] args) {
Funkraum fr = new Funkraum();
try {
fr.sendeFunkspruch("Testen wir doch mal das ganze", "deisold");
} catch (IOException e) {
e.printStackTrace();
}
try {
String[] funkspruch = fr.empfangeFunkspruch("deisold");
System.out.println("Empfangen: " + funkspruch[0]);
System.out.println("Nachricht: " + funkspruch[1]);
} catch (IOException e) {
e.printStackTrace();
}
App.main(args); App.main(args);
} }
......
...@@ -20,7 +20,6 @@ public class Codebuch { ...@@ -20,7 +20,6 @@ public class Codebuch {
private int tag; private int tag;
private String[] Walzenlage = new String[3]; private String[] Walzenlage = new String[3];
private String[] Ringstellung = new String[3]; private String[] Ringstellung = new String[3];
private String[] Grundstellung = new String[3];
private String[] Steckverbindung = new String[10]; private String[] Steckverbindung = new String[10];
/** /**
...@@ -34,7 +33,6 @@ public class Codebuch { ...@@ -34,7 +33,6 @@ public class Codebuch {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
boolean wlLoop = false; boolean wlLoop = false;
boolean rsLoop = false; boolean rsLoop = false;
boolean gsLoop = false;
boolean svLoop = false; boolean svLoop = false;
sb.append("Tag: ").append(this.getTag()).append("\n"); sb.append("Tag: ").append(this.getTag()).append("\n");
...@@ -59,16 +57,6 @@ public class Codebuch { ...@@ -59,16 +57,6 @@ public class Codebuch {
} }
sb.append("\n"); sb.append("\n");
sb.append("Grundstellung: ");
for (String gs : this.getGrundstellung()) {
sb.append(gs).append(",");
gsLoop = true;
}
if(gsLoop) {
sb.setLength(sb.length() - 1);
}
sb.append("\n");
sb.append("Steckverbindung: "); sb.append("Steckverbindung: ");
for (String s : this.getSteckverbindung()) { for (String s : this.getSteckverbindung()) {
if (!s.isEmpty()) { if (!s.isEmpty()) {
...@@ -108,14 +96,6 @@ public class Codebuch { ...@@ -108,14 +96,6 @@ public class Codebuch {
return Ringstellung; return Ringstellung;
} }
/**
* Gibt die Grundstellung dieser Instanz zurück
* @return String[] : Grundstellung
*/
public String[] getGrundstellung() {
return Grundstellung;
}
/** /**
* Gibt die Steckverbindung dieser Instanz zurück * Gibt die Steckverbindung dieser Instanz zurück
* @return String[] : Steckverbindung * @return String[] : Steckverbindung
...@@ -148,14 +128,6 @@ public class Codebuch { ...@@ -148,14 +128,6 @@ public class Codebuch {
Ringstellung = ringstellung; Ringstellung = ringstellung;
} }
/**
* Setzt die Grundstellung dieser Instanz
* @param grundstellung : String[]
*/
public void setGrundstellung(String[] grundstellung) {
Grundstellung = grundstellung;
}
/** /**
* Setzt die Steckverbindung dieser Instanz * Setzt die Steckverbindung dieser Instanz
* @param steckverbindung : String[] * @param steckverbindung : String[]
......
...@@ -55,7 +55,6 @@ public class DatenbankSqlite { ...@@ -55,7 +55,6 @@ public class DatenbankSqlite {
cb.setTag(rs.getInt("Tag")); cb.setTag(rs.getInt("Tag"));
cb.setWalzenlage(rs.getString("Walzenlage").split(",")); cb.setWalzenlage(rs.getString("Walzenlage").split(","));
cb.setRingstellung(rs.getString("Ringstellung").split(",")); cb.setRingstellung(rs.getString("Ringstellung").split(","));
cb.setGrundstellung(rs.getString("Grundstellung").split(","));
cb.setSteckverbindung(rs.getString("Steckverbindung").split(",")); cb.setSteckverbindung(rs.getString("Steckverbindung").split(","));
} }
......
package Enigma.model;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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.
* 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.
* Beides wird als String gesendet.
*/
public class Funkraum {
/**
* Zum Empfangen liefert der Server, anstatt der Kenngruppe (k) den Empfangstag 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
* @throws IOException
*/
public String[] empfangeFunkspruch(String kenngruppe) throws IOException {
String[] funkspruch = new String[2];
HttpClient httpclient = HttpClients.createDefault();
HttpPost httppost = new HttpPost("https://enigma.itstall.de/");
// Anfrage Parameter und Encoding setzen
List<NameValuePair> params = new ArrayList<NameValuePair>(2);
params.add(new BasicNameValuePair("k", kenngruppe));
httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
// POST Request ausführen und Rückgabe verarbeiten
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
if (entity != null) {
BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent()));
JSONObject result = new JSONObject(reader.readLine());
if(!result.getString("m").isEmpty()) {
funkspruch[0] = result.getString("t");
funkspruch[1] = result.getString("m");
}
}
return funkspruch;
}
/**
* 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.
*
* Darauf antworter der Server dann mit einem JSON Object in dem das Ergebnis der Anfrage zu sehen ist.
* {'result': 200}
*
* Die 200 heißt hier das alles erfolgreich durchgeführt 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.
*
* @param funkspruch : String : Der zu sendede Funkspruch
* @param kenngruppe : String : Die Kenngruppe dieser Engima
* @return boolean : War das senden erfolgreich? True wenn ja, false wenn nicht erfolgreich
* @throws IOException
*/
public boolean sendeFunkspruch(String funkspruch, String kenngruppe) throws IOException {
boolean boolReturn = false;
HttpClient httpclient = HttpClients.createDefault();
HttpPost httppost = new HttpPost("https://enigma.itstall.de/");
// Anfrage Parameter und Encoding setzen
List<NameValuePair> params = new ArrayList<NameValuePair>(2);
params.add(new BasicNameValuePair("k", kenngruppe));
params.add(new BasicNameValuePair("m", funkspruch));
httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
// POST Request ausführen und Rückgabe verarbeiten
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
if (entity != null) {
BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent()));
JSONObject result = new JSONObject(reader.readLine());
if(result.getInt("result") == 200) {
boolReturn = true;
}
}
return boolReturn;
}
}
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