Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • d.eisold/enigma
  • Janschubi1993/enigma
  • TsunamiKlaus/enigma
  • alfatrainingkurse/java/enigma
  • FloriN/enigma
  • PaoloPinkel/enigma
6 results
Show changes
Commits on Source (252)
Showing
with 230 additions and 48 deletions
Praesentation/Folie1.PNG

1.46 MiB

Praesentation/Folie10.PNG

108 KiB

Praesentation/Folie11.PNG

108 KiB

Praesentation/Folie12.PNG

213 KiB

Praesentation/Folie13.PNG

118 KiB

Praesentation/Folie14.PNG

63.7 KiB

Praesentation/Folie2.PNG

86.8 KiB

Praesentation/Folie3.PNG

106 KiB

Praesentation/Folie4.PNG

761 KiB

Praesentation/Folie5.PNG

123 KiB

Praesentation/Folie6.PNG

125 KiB

Praesentation/Folie7.PNG

139 KiB

Praesentation/Folie8.PNG

145 KiB

Praesentation/Folie9.PNG

364 KiB

Praesentation/Screenshot.JPG

84.9 KiB

![alt text](Folie1.PNG "Präsentation Folie 1")
![alt text](Folie2.PNG "Präsentation Folie 2")
![alt text](Folie3.PNG "Präsentation Folie 3")
![alt text](Folie4.PNG "Präsentation Folie 4")
![alt text](Folie5.PNG "Präsentation Folie 5")
![alt text](Folie6.PNG "Präsentation Folie 6")
![alt text](Folie7.PNG "Präsentation Folie 7")
![alt text](Folie8.PNG "Präsentation Folie 8")
![alt text](Folie9.PNG "Präsentation Folie 9")
![alt text](Folie10.PNG "Präsentation Folie 10")
![alt text](Folie11.PNG "Präsentation Folie 11")
![alt text](Folie12.PNG "Präsentation Folie 12")
![alt text](Folie13.PNG "Präsentation Folie 13")
![alt text](Folie14.PNG "Präsentation Folie 14")
## Der Beginn einer Reise
* [Anforderungskatalog und Planung](https://www.gitrepo.de/alfatrainingkurse/java/enigma/wikis/Anforderungskatalog)
## Ablauf des Projektes
* Wie wurde gearbeitet
* gitrepo.de
* Git
* Was ist Git?
* Repository / Fork
* Funktionen Commit/Push/Pull
* Tickets
* CI/CD
* Welche Probleme sind aufgetreten
* Codierung von Buchstaben (Knoten im Hirn)
* Generierung von Steckbrett Ports
* lampen leuchten lassen
* Abrufen und senden von Nachrichten
* Besondere (für uns) Lösungen
### Zahlen, Daten, Fakten
* Zeilen insgesamt: 3056
* Code: 1619 (53%)
* XML: 110
* Kommentare: 1076 (35%)
* Leerzeilen: 365 (12%)
* Commits: 461
* Merge Requests: 146
* Tickets: 29
* Pipelines 471
## Klassendiagram
![Ablaufdiagram Enigma](http://plantuml.gitrepo.de/png/U9oTM4jpspOGlkjNyDPaNFhGeoVJIU97aedbU2GrpiJrU21gHI820HO0uzHfyjkx8CK7G81Yh8D4xRTOBFODlbIQI5tcR3RJL3E8xk_d7yxEBtzJqIaZIaLdbAIIvFVtV_FPB8euoK4L986eaE8BxFGnS9hc9FgEO1_EnGROdXf5IINBNd9SiHoVulUwJBAMrtpYI9CqEeaernRrWR17u8oaK8EtTnOiAK-L1iPAddeP44nsNq6kAT_KF4b6vEtTxLt3qsC_YXhTdZsto5lGIRP29PHACbRY3p27HOkbDjeuv1GqhXiIRzfp3R55xr13T6cVwDdp5kvn_epKSEFO48F2AtGWt6NmwFrZDidd52H8n-Sxu3oLPL4OxzRsit1EaapI9DD-M1KIVTMvP1fNhKj090R7ve58ey_R_QE59qtmdhInuWPGTL37RqbDdaI5lDWIdi9LS_W0pa4kdQFvmdOacYhSSJbm7rFjzZ1ovHwumZw2t9QGhj68husUcgm7Ggfp40q7ZeA1_xuDbY4MifN9bt713FIZ1lKPS3NmIm7A_3fCA0AsK5bgBK7hQo7TdIHWTZGXus0A-2ReJZLoCiGUOJ6iAXMzKyU7rdwv5efgAjppT1oEu-Bw77vTusW3lf3jqJqrC6vT_5uKMmUY7DKZZ2gps6izr8ZmZSZR0FgbkdC16GFPBpeeyEAlgzFLkmzNzzUByujtdto50BdcvylbgpVdOqneo4myd4if97PD9ko38smAn07Yf5EKV2T9cLlLioi41gwBd2_kFEYKFHjdE1MxxiTeZIfwVCssYiZANCqV9xws33SJ4baMpREbTI29_CLo8o43RtKoZRIH7-YYlkHfUxCllxs82c-aHZOQ4VS8OtaRgWU3IZp5pNCXbKbUry-6D2S5EcabmJozgCF_ztqQ_6djtqeP-8nZPz5jxgx40SuMNebXmjUQeOD6eA7yALPe_UTac1jpKsHr3dTCYjgH4hkBxZL3_n0Y94qf9soSxoWAnfO_LweemPvSgp4S1mxX9Qn1rgsmp-MV2yPx_nH3Ll7is92m8aD1WU7DkGsOIT--OfIIg-0bevNfLBM7VLuD5XxLHV1NHhq_WkLhM8R2DI2CZ5yTlBDQRwmV8Ds4r_DSzzrT_ZO4_KiKZD__6gxZCvm6-9hmtV8VHZKuMOUQUkzXfYfn3edsAkFTyLLHz8H_noZKDFbXpfpWK68yRdvdtGvfWiGt9JqLN4l1S7ZeWLNdTiAWbNaKvOJsNO8ECLTjYu97EtDc0kpZN5iNXbPaTOjR2A5zO1mnGJONd-QNUtJ43DQ1UWQ9wvolRhPBtuGSZmyPFzi1pWfWT5H6jzjJAXDcqrS4etD1ogs7MZfcC1LpWzKcsMceE2oCGMbAARU9m_4zZdBWfKK8ZKLxUyoH_xNcA_YcNSX7ypRhsDkguzxW7hXnnRrUFfaSKi1xh-ZcSM_xGDz9i43dieEI7oYM1KF-Y8Fxsd5n_kzAf2d3gg-ruCh2C2nJ7AHKFIsNuDdtHiYT4mRxsM0X8AVetfNuJ3Bcup3qbMZuaEDGNimnOttrmSfbixxgLxM86rWha5zf0lN2y8NzA39A0MKEKWdpQVBYlxWiukWB-Kgstuv9KJ2Q4EDOKyUQv-5QK-JsIprIX_nsDV2lH9d3XSwx714FbZbl-4wyRyw6WeEDOSeMlNRnT9NVTkzzikwzppXhKDYYTyUHJnUpx5-drFhfWkf9wcG_oHmAY36RrrR4qUhfbculinWS-yUGi9OrAAoxlfn4UL2fZii8wXBOcAJz4rIYUeNWKy7aoEmbDXFpDlr_rhUkvW00 "Ablaufdiagram der Enigma")
## Interesannte Codestellen
* Walze:
* [Konstruktor](https://www.gitrepo.de/alfatrainingkurse/java/enigma/blob/master/src/main/java/projekt/enigma/model/Walze.java#L53)
* Steckbrett
* [setzeVertauschung](https://www.gitrepo.de/alfatrainingkurse/java/enigma/blob/master/src/main/java/projekt/enigma/model/Steckbrett.java#L52)
* [ueberpruefeVertauschung](https://www.gitrepo.de/alfatrainingkurse/java/enigma/blob/master/src/main/java/projekt/enigma/model/Steckbrett.java#L104)
* Codebuch
* [Konstruktor](https://www.gitrepo.de/alfatrainingkurse/java/enigma/blob/master/src/main/java/projekt/enigma/model/Codebuch.java#L59)
* [fetchTagesschluessel](https://www.gitrepo.de/alfatrainingkurse/java/enigma/blob/master/src/main/java/projekt/enigma/model/Codebuch.java#L81)
* Funkraum
* [empfangeFunkspruch](https://www.gitrepo.de/alfatrainingkurse/java/enigma/blob/master/src/main/java/projekt/enigma/model/Funkraum.java#L38)
* [sendeFunkspruch](https://www.gitrepo.de/alfatrainingkurse/java/enigma/blob/master/src/main/java/projekt/enigma/model/Funkraum.java#L90)
* Morsecode
* [Konstruktor](https://www.gitrepo.de/alfatrainingkurse/java/enigma/blob/master/src/main/java/projekt/enigma/model/Morsecode.java#L18)
* [convertBuchstabeToMorsecode](`convertBuchstabeToMorsecode`)
* DatenbankSqlite
* [getCodebuch](https://www.gitrepo.de/alfatrainingkurse/java/enigma/blob/master/src/main/java/projekt/enigma/database/DatenbankSqlite.java#L54)
* Zusammenfassung codiere
* [Codiere Funktion](https://www.gitrepo.de/alfatrainingkurse/java/enigma/snippets/12)
### Ablauf der Codierung
![Ablaufdiagram Codierung](http://plantuml.gitrepo.de/png/U9o5aR4EWZ0GXlS-HHCNwA01Drmm3kegCGx6eT0J21NCSOJ4frTeD35feTCbttVNQ_-u9OdKFJGR2nO9iMjK2GWy8IphN8WDwujI0_T-28LOPgRqZENxZFF8AcI5H7zby46YwYM23I-su_ct54815wbVK7lV8Gb1LgK8H8vRZ2_4DRXDyt26h-ty17SD5JMkLrhwmxa574BW4AR-06h5nyJOaER-VEJRhirb2aEKBJLF5d-K8V8tFTUTQm00 "Ablaufdiagram Codierung")
### Erklärung Datentyp char - String - Enum
* Zuerst char[] (Warum)
* Dann String (Warum)
* Vorteile Enum (Warum)
## Enigma Demo
* Kenngruppe Abfrage
* Testen Kenngruppe Dialog und Fehler
* Enigma
* Senden ohne Nachricht und Fehler
* Empfangen ohne hinterlegte Nachricht und Fehler
* Tagesschlüssel
* Eingabe Nachricht
* Senden einer Nachricht
* Empfang einer Nachricht
* Zurücksetzen
* Setzen von Walzen und Ringen
* Setzen von gleichen Walzen und Fehler
* Senden & Empfangen
## GUI Controller
![Screenshot](Screenshot.JPG "Screenshot der Enigma")
\ No newline at end of file
...@@ -17,3 +17,5 @@ Ebenfalls wichtig ist eure Kenngruppe. Dies hat früher den Personenkreis bezeic ...@@ -17,3 +17,5 @@ Ebenfalls wichtig ist eure Kenngruppe. Dies hat früher den Personenkreis bezeic
Wenn ihr also auf mehreren Clients die selbe Kenngruppe nutzt, dann könnt ihr untereinander eure Nachrichten lesen.\ Wenn ihr also auf mehreren Clients die selbe Kenngruppe nutzt, dann könnt ihr untereinander eure Nachrichten lesen.\
\ \
Im [Wiki](https://www.gitrepo.de/alfatrainingkurse/java/enigma/wikis/home) findet ihr auch noch einige Informationen zu dem Projekt. Im [Wiki](https://www.gitrepo.de/alfatrainingkurse/java/enigma/wikis/home) findet ihr auch noch einige Informationen zu dem Projekt.
![Screenshot](Praesentation/Screenshot.JPG "Screenshot der Enigma")
\ No newline at end of file
File added
...@@ -56,6 +56,12 @@ ...@@ -56,6 +56,12 @@
<version>4.12</version> <version>4.12</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/org.controlsfx/controlsfx -->
<dependency>
<groupId>org.controlsfx</groupId>
<artifactId>controlsfx</artifactId>
<version>11.0.0</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
<plugins> <plugins>
......
package projekt.enigma; package projekt.enigma;
import projekt.enigma.model.Codierer;
import javafx.application.Application; import javafx.application.Application;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.scene.Parent; import javafx.geometry.Insets;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyCode;
import javafx.scene.layout.VBox;
import javafx.stage.Stage; import javafx.stage.Stage;
import projekt.enigma.model.Fehler;
import java.io.IOException; import java.io.IOException;
/** /**
* JavaFX App * JavaFX App
* Startklasse fuer JavaFX Application, durch die Erweiterung um die Klasse Application.
* Baut die Benutzeroberflaeche in ihren Grundstrukturen auf.
*/ */
public class App extends Application { public class App extends Application {
/** /**
* TODO Dokumentieren * Deklariert den GuiController.
*/ */
private static Scene scene; private static GuiController gc;
private Codierer c;
/**
* debug : int : fuer die Funktion debug der Klasse Fehler notwendig.
*/
private static int debug;
/**
* Startet die Klasse App und setzt den debug-Wert 1.
*
* @param args : String[] : Standard-Kommandozeilen-Argument.
*/
public static void main(String[] args) {
debug = 0;
launch(args);
}
/**
* Gibt der Getter einen int > 0 zurueck, wird eine Meldung auf der Konsole ausgegeben.
*
* @return debug : int : bestimmt die Eingabe der debung-Methode in der Klasse Fehler.
*/
public static int getDebug() {
return debug;
}
/**
* Initialisierung der Variablen fuer die JavaFX Scene Kenngruppe.
* Abfrage der Kenngruppe und Reaktion auf die Eingabe.
*
* @param primaryStage : Stage : Fenster zur Eingabe der Kenngruppe.
* @throws IOException : wird bei fehlerhafter Eingabe geworfen.
*/
@Override
public void start(Stage primaryStage) throws IOException {
primaryStage.setTitle("Enigma");
primaryStage.setResizable(false);
Label lblEingbae = new Label("Bitte Kenngruppe eingeben!");
TextField tfEingabe = new TextField();
Button btnKenngruppe = new Button("Kenngruppe setzen!");
VBox layout = new VBox();
layout.setSpacing(10);
layout.setPadding(new Insets(20, 30, 10, 30));
btnKenngruppe.setMaxWidth(Double.MAX_VALUE);
// baut die Scene fuer die Kenngruppenabfrage auf
layout.getChildren().addAll(lblEingbae, tfEingabe, btnKenngruppe);
Scene sceKenngruppe = new Scene(layout);
/** // laden der FXML und der Enigma-Ansicht, um Ladezeiten zu verringern
* TODO Dokumentieren FXMLLoader guiLoader = new FXMLLoader(App.class.getResource("gui.fxml"));
* Scene sceApp = new Scene(guiLoader.load(), 962, 677);
* @param fxml
* @throws IOException
*/
static void setRoot(String fxml) throws IOException {
scene.setRoot(loadFXML(fxml));
}
/** /*Bestaetigen der Kenngruppe, Ausgabe einer Fehlermeldung im Fall einer falschen Eingabe und starten
* TODO Dokumentieren des Enigma-Fensters */
* tfEingabe.setOnKeyPressed(e -> {
* @param fxml if (e.getCode() == KeyCode.ENTER) {
* @return if (enter(tfEingabe.getText())) {
* @throws IOException gc = guiLoader.getController();
*/ gc.setKenngruppe(tfEingabe.getText());
private static Parent loadFXML(String fxml) throws IOException { primaryStage.setScene(sceApp);
FXMLLoader fxmlLoader = new FXMLLoader(App.class.getResource(fxml + ".fxml")); } else {
return fxmlLoader.load(); tfEingabe.setText("");
} new Fehler().showErrorDialog("error", "Kenngruppe falsch",
"Regeln für die Kenngruppe: 4-8 Zeichen sowie nur Buchstaben von A-Z.");
}
}
});
btnKenngruppe.setOnAction(e -> {
if (enter(tfEingabe.getText())) {
gc = guiLoader.getController();
gc.setKenngruppe(tfEingabe.getText());
primaryStage.setScene(sceApp);
} else {
tfEingabe.setText("");
new Fehler().showErrorDialog("error", "Kenngruppe falsch",
"Regeln für die Kenngruppe: 4-8 Zeichen sowie Buchstaben von A-Z.");
}
});
primaryStage.setScene(sceKenngruppe);
primaryStage.show();
}
/** /**
* TODO Dokumentieren * Ueberprueft die Gueltigkeit der Kenngruppeneingabe.
* * Nur Zeichen von A-Z sind zugelassen und die Kenngruppe muss aus mind. 4 und max. 8 Zeichen bestehen.
* @param args *
*/ * @param kenngruppe : String : Eingabewert aus dem Fenster.
public static void main(String[] args) { * @return result : boolean : ist die Kenngruppe ungueltig wird false zurueckgegeben, sonst true.
Application.launch(); */
} private boolean enter(String kenngruppe) {
String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
boolean result = true;
/** for (char c : kenngruppe.toUpperCase().toCharArray()) {
* TODO Dokumentieren if (!alphabet.contains(String.valueOf(c))) {
* result = false;
* @param stage break;
* @throws IOException }
*/ }
@Override if ((kenngruppe.length() > 8) || (kenngruppe.length() < 4)) {
public void start(Stage stage) throws IOException { result = false;
scene = new Scene(loadFXML("gui")); }
stage.setScene(scene);
stage.setResizable(true);
stage.show();
}
return result;
}
} }