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

- module-info.java gelöscht, brauchen wir nicht

- SQLite Anbindung fertig gestellt
- Codebuch Klasse geschrieben
parent 4c5001e0
No related branches found
No related tags found
No related merge requests found
package Enigma;
import Enigma.model.DatenbankSqlite;
import Enigma.model.Morsecode;
import java.sql.SQLException;
public class Main {
public static void main(String[] args) {
App.main(args);
}
public static void main(String[] args) {
App.main(args);
}
}
package Enigma.model;
/**
* Das Codebuch war eines der essentiel wichtigen Sachen bei der Enigma.
* Jeder Enigma gehörte auch ein Codebuch bei, welches notwenidg war um die Nachrichten zu ver/entschlüsseln.
* Im Codebuch standen für jeden Tag des Monats die notwendigen Einstellungen welche vorgenommen werden
* mussten um die Texte zu ver/entschlüsseln.
* Hiernach wurden die Walzen eingesetzt, die Ringe für den Rücksprung der Walzen gesetzt und deren Grundeinstellung
* vorgenommen.
* Bei der Enigma um welche es hier geht (Enigma I) gab es zusätzlich ein Steckbrett, welches ebenfalls im Codebuch
* festgelegt war.
*
* Dieses Codebuch Objekt enthält die Einstellungen eines Tages, welche mittels Getter und Setter
* verarbeitet werden können.
*
* Zusätzlich gibt es zu Debug Zwecken eine überschriebene toString Funktion welche das Objekt als String zurück
* geben kann.
*/
public class Codebuch {
private int tag;
private String[] Walzenlage = new String[3];
private String[] Ringstellung = new String[3];
private String[] Grundstellung = new String[3];
private String[] Steckverbindung = new String[10];
/**
* Gibt die aktuelle Instanz des Codebuches als String zurück.
* Hierbei werden der Tag die Walzenlagen, Ring/Grundstellung sowie die Steckverbindungen zurück gegeben.
*
* @return String : String des gesamten Objektes
*/
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
boolean wlLoop = false;
boolean rsLoop = false;
boolean gsLoop = false;
boolean svLoop = false;
sb.append("Tag: ").append(this.getTag()).append("\n");
sb.append("Walzenlage: ");
for(String wl : this.getWalzenlage()) {
sb.append(wl).append(",");
wlLoop = true;
}
if(wlLoop) {
sb.setLength(sb.length() - 1);
}
sb.append("\n");
sb.append("Ringstellung: ");
for(String rs : this.getRingstellung()) {
sb.append(rs).append(",");
rsLoop = true;
}
if(rsLoop) {
sb.setLength(sb.length() - 1);
}
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: ");
for (String s : this.getSteckverbindung()) {
if (!s.isEmpty()) {
sb.append(s).append(",");
svLoop = true;
}
}
if(svLoop) {
sb.setLength(sb.length() - 1);
}
sb.append("\n");
return sb.toString();
}
/**
* Gibt den Tag dieser Instanz zurück
* @return int : Tag
*/
public int getTag() {
return tag;
}
/**
* Gibt die Walzenlage dieser Instanz zurück
* @return String[] : Walzenlage
*/
public String[] getWalzenlage() {
return Walzenlage;
}
/**
* Gibt die Ringstellung dieser Instanz zurück
* @return String[] : Ringstellung
*/
public String[] getRingstellung() {
return Ringstellung;
}
/**
* Gibt die Grundstellung dieser Instanz zurück
* @return String[] : Grundstellung
*/
public String[] getGrundstellung() {
return Grundstellung;
}
/**
* Gibt die Steckverbindung dieser Instanz zurück
* @return String[] : Steckverbindung
*/
public String[] getSteckverbindung() {
return Steckverbindung;
}
/**
* Setzt den Tag dieser Instanz
* @param tag : int
*/
public void setTag(int tag) {
this.tag = tag;
}
/**
* Setzt die Walzenlage dieser Instanz
* @param walzenlage : String[]
*/
public void setWalzenlage(String[] walzenlage) {
Walzenlage = walzenlage;
}
/**
* Setzt die Ringstellung dieser Instanz
* @param ringstellung : String[]
*/
public void setRingstellung(String[] ringstellung) {
Ringstellung = ringstellung;
}
/**
* Setzt die Grundstellung dieser Instanz
* @param grundstellung : String[]
*/
public void setGrundstellung(String[] grundstellung) {
Grundstellung = grundstellung;
}
/**
* Setzt die Steckverbindung dieser Instanz
* @param steckverbindung : String[]
*/
public void setSteckverbindung(String[] steckverbindung) {
Steckverbindung = steckverbindung;
}
}
package Enigma.model;
import java.sql.*;
/**
* Dies ist die SQLite Datenbank Klasse
* In der SQLite Datei im Resources Ordner liegt das Codebuch welches benötigt wird um die
* Nachrichten mit der Enigma zu ver/entschlüsseln.
* Die Datenbank ist statisch und deshalb konnte sie im Resources Ordner hinterlegt werden.
* Für jeden Tag des Monats (1-31) ist ein eigener Eintrag enthalten welcher über die Funktion
* getCodebuch abgerufen werden kann.
* Zurückgegeben wird ein Array welcher in der getCodebuch Funktion genauer dokumentiert ist.
*/
public class DatenbankSqlite {
/**
* Verbindung zur SQLite Datenbank aufbauen.
* Die Datei liegt in den Resources und ändert sich nicht,
* weshalb der Pfad zu derselben fest hinterlegt ist.
*
* @return conn : Connection
*/
private Connection connect() {
String url = "jdbc:sqlite::resource:Enigma/codebuch.sqlite";
Connection conn = null;
try {
conn = DriverManager.getConnection(url);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/**
* Liest das Codebuch aus der SQLite Datenbank aus
* Dieser Funktion muss ein tag als int Wert übergeben werden.
* Anschließend wir eine Verbindung zur SQLite Datenbank aufgebaut und das Codebuch angefragt.
* Dieses wird in ein Object vom Type Codebuch gepackt und zurück gegeben.
*
* @param tag : int : Tag für welchen ein Codebuch benötigt wird.
* @return Codebuch : Codebuch Object mit dem Codebuch des angefragten Tages
*/
public Codebuch getCodebuch(int tag) throws SQLException {
Codebuch cb = new Codebuch();
Connection conn = this.connect();
PreparedStatement pstm = conn.prepareStatement("SELECT * FROM table_codebuch WHERE Tag=? LIMIT 1");
pstm.setInt(1, tag);
ResultSet rs = pstm.executeQuery();
while (rs.next()) {
cb.setTag(rs.getInt("Tag"));
cb.setWalzenlage(rs.getString("Walzenlage").split(","));
cb.setRingstellung(rs.getString("Ringstellung").split(","));
cb.setGrundstellung(rs.getString("Grundstellung").split(","));
cb.setSteckverbindung(rs.getString("Steckverbindung").split(","));
}
return cb;
}
}
module Projektarbeit {
requires javafx.controls;
requires javafx.fxml;
opens Enigma to javafx.fxml;
exports Enigma;
}
\ No newline at end of file
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