391 lines
11 KiB
Java
391 lines
11 KiB
Java
package application;
|
|
|
|
import java.sql.Connection;
|
|
import java.sql.DriverManager;
|
|
import java.sql.PreparedStatement;
|
|
import java.sql.ResultSet;
|
|
import java.sql.SQLException;
|
|
import java.sql.Statement;
|
|
import java.util.ArrayList;
|
|
import java.io.File;
|
|
import java.io.FileInputStream;
|
|
|
|
class DBController
|
|
{
|
|
|
|
private Connection connection;
|
|
|
|
private String DB_PATH_Linux = System.getProperty("user.home")
|
|
+ "/bin/jFxKasse/";
|
|
|
|
public String dbname;
|
|
|
|
private Main main;
|
|
|
|
// private Cryption crypo = new Cryption();
|
|
private String schluessel; // Für Ver-/Entschlüsselung
|
|
|
|
boolean databasepresent = false;
|
|
|
|
public void main()
|
|
{
|
|
try {
|
|
connection = DriverManager
|
|
.getConnection("jdbc:sqlite:" + DB_PATH_Linux + dbname + ".db");
|
|
|
|
} catch (SQLException e) {
|
|
// TODO Auto-generated catch block
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
DBController(Main main)
|
|
{
|
|
this.main = main;
|
|
}
|
|
|
|
public void verbindeDatenbank()
|
|
{ // Verbinde mit der Datenbank-Datei
|
|
System.out.println("Verbinde ... DB name: " + dbname);
|
|
try {
|
|
if (connection != null)
|
|
return;
|
|
|
|
connection = DriverManager.getConnection("jdbc:sqlite:" + DB_PATH_Linux + dbname + ".db");
|
|
|
|
|
|
if (!connection.isClosed())
|
|
System.out.println("DB Datei-Verbindung erstellt");
|
|
} catch (SQLException e) {
|
|
throw new RuntimeException(e);
|
|
}
|
|
Runtime.getRuntime().addShutdownHook(new Thread() {
|
|
public void run()
|
|
{
|
|
try {
|
|
if (!connection.isClosed() && connection != null) {
|
|
connection.close();
|
|
if (connection.isClosed())
|
|
System.out.println();
|
|
}
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
public void fuellenDatenbank(int pID, String pDatum, String pKonto,
|
|
String pNutzername, String pEmail, String pPasswort)
|
|
{ // Neuen Eintrag erstellen
|
|
try {
|
|
PreparedStatement ps = connection.prepareStatement(
|
|
"INSERT INTO konten VALUES (?, ?, ?, ?, ?, ?);");
|
|
ps.setInt(1, pID); // Primärschlässel
|
|
ps.setString(2, pDatum);
|
|
ps.setString(3, pKonto);
|
|
ps.setString(4, pNutzername);
|
|
ps.setString(5, pEmail);
|
|
ps.setString(6, pPasswort);
|
|
|
|
ps.addBatch();
|
|
connection.setAutoCommit(false);
|
|
ps.executeBatch(); // SQL ausführen
|
|
connection.setAutoCommit(true);
|
|
// connection.close();
|
|
} catch (SQLException e) {
|
|
System.err.println("Couldn't handle DB-Query");
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public void erstelleTabellePositionen()
|
|
{ // Erstelle Tabelle mit Reihen
|
|
System.out.println("Erstelle Tabelle Positionen");
|
|
try {
|
|
Statement stmt = connection.createStatement();
|
|
stmt.executeUpdate("DROP TABLE IF EXISTS positionen;");
|
|
stmt.executeUpdate(
|
|
"CREATE TABLE positionen (id, name, value, color);");
|
|
} catch (SQLException e) {
|
|
System.err.println("Couldn't handle DB-Query");
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
|
|
public void erstelleTabelleJobs()
|
|
{ // Erstelle Tabelle mit Reihen
|
|
System.out.println("Erstelle Tabelle Jobs");
|
|
try {
|
|
Statement stmt = connection.createStatement();
|
|
stmt.executeUpdate("DROP TABLE IF EXISTS jobs;");
|
|
stmt.executeUpdate(
|
|
"CREATE TABLE jobs (id, time, positionen, state, value);");
|
|
} catch (SQLException e) {
|
|
System.err.println("Couldn't handle DB-Query");
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public boolean existiertDatenbank(String pPfad)
|
|
{ // Prüft ob die Datenbank existiert
|
|
File varTmpDir = new File(pPfad);
|
|
if (!varTmpDir.exists()) {
|
|
return false;
|
|
} else {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
private void ausgebenSyso()
|
|
{ // Debugging Ausgabe der kompletten Datenbank
|
|
try {
|
|
Statement stmt = connection.createStatement();
|
|
ResultSet rs = stmt.executeQuery("SELECT * FROM konten;");
|
|
while (rs.next()) {
|
|
System.out.println("Datum = " + rs.getString("datum"));
|
|
System.out.println("Konto = " + rs.getString("konto"));
|
|
System.out.println("Nutzername = " + rs.getString("nutzername"));
|
|
System.out.println("E-Mail = " + rs.getString("email"));
|
|
System.out.println("Passwort = " + rs.getString("passwort"));
|
|
System.out.println(" ");
|
|
}
|
|
|
|
} catch (SQLException e) {
|
|
System.err.println("Couldn't handle DB-Query");
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public String getDatum(int pID)
|
|
{ // Gibt das Datum zurück
|
|
try {
|
|
Statement stmt = connection.createStatement();
|
|
ResultSet rs = stmt.executeQuery(
|
|
"SELECT id, datum FROM konten WHERE id = " + pID + ";");
|
|
return rs.getString("datum");
|
|
} catch (SQLException e) {
|
|
System.err.println("Couldn't handle DB-Query");
|
|
e.printStackTrace();
|
|
return "Error 404";
|
|
}
|
|
}
|
|
|
|
public String getKonto(int pID)
|
|
{ // Gibt das Konto zurück
|
|
try {
|
|
Statement stmt = connection.createStatement();
|
|
ResultSet rs = stmt.executeQuery(
|
|
"SELECT id, konto FROM konten WHERE id = " + pID + ";");
|
|
return rs.getString("konto");
|
|
} catch (SQLException e) {
|
|
System.err.println("Couldn't handle DB-Query");
|
|
e.printStackTrace();
|
|
return "Error 404";
|
|
}
|
|
}
|
|
|
|
public String getNutzername(int pID)
|
|
{ // Gibt den Nutzernamen zurück
|
|
try {
|
|
Statement stmt = connection.createStatement();
|
|
ResultSet rs = stmt.executeQuery(
|
|
"SELECT id, nutzername FROM konten WHERE id = " + pID + ";");
|
|
return rs.getString("nutzername");
|
|
} catch (SQLException e) {
|
|
System.err.println("Couldn't handle DB-Query");
|
|
e.printStackTrace();
|
|
return "Error 404";
|
|
}
|
|
}
|
|
|
|
public String getEmail(int pID)
|
|
{ // Gibt die Email zurück
|
|
try {
|
|
Statement stmt = connection.createStatement();
|
|
ResultSet rs = stmt.executeQuery(
|
|
"SELECT id, email FROM konten WHERE id = " + pID + ";");
|
|
return rs.getString("email");
|
|
|
|
} catch (SQLException e) {
|
|
System.err.println("Couldn't handle DB-Query");
|
|
e.printStackTrace();
|
|
return "Error 404";
|
|
}
|
|
}
|
|
|
|
public String getPasswort(int pID)
|
|
{ // Gibt das Passwort zurück
|
|
try {
|
|
Statement stmt = connection.createStatement();
|
|
ResultSet rs = stmt.executeQuery(
|
|
"SELECT id, passwort FROM konten WHERE id = " + pID + ";");
|
|
return rs.getString("passwort");
|
|
|
|
} catch (SQLException e) {
|
|
System.err.println("Couldn't handle DB-Query");
|
|
e.printStackTrace();
|
|
return "Error 404";
|
|
}
|
|
|
|
}
|
|
|
|
public void setDatum(int pID, String pDatum)
|
|
{ // Setzt das Datum
|
|
try {
|
|
Statement stmt = connection.createStatement();
|
|
stmt.executeUpdate("UPDATE konten SET datum = '" + pDatum
|
|
+ "'WHERE id =" + pID + ";");
|
|
} catch (SQLException e) {
|
|
System.err.println("Couldn't handle DB-Query");
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public void setKonto(int pID, String pKonto)
|
|
{ // Setzt das Konto
|
|
try {
|
|
Statement stmt = connection.createStatement();
|
|
stmt.executeUpdate("UPDATE konten SET konto = '" + pKonto
|
|
+ "'WHERE id =" + pID + ";");
|
|
} catch (SQLException e) {
|
|
System.err.println("Couldn't handle DB-Query");
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public void setNutername(int pID, String pNutername)
|
|
{ // Setzt den Nutzername
|
|
try {
|
|
Statement stmt = connection.createStatement();
|
|
stmt.executeUpdate("UPDATE konten SET nutzername = '" + pNutername
|
|
+ "'WHERE id =" + pID + ";");
|
|
} catch (SQLException e) {
|
|
System.err.println("Couldn't handle DB-Query");
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public void setEmail(int pID, String pEmail)
|
|
{ // Setzt die Email
|
|
try {
|
|
Statement stmt = connection.createStatement();
|
|
stmt.executeUpdate("UPDATE konten SET email = '" + pEmail
|
|
+ "'WHERE id =" + pID + ";");
|
|
} catch (SQLException e) {
|
|
System.err.println("Couldn't handle DB-Query");
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public void setPasswort(int pID, String pPasswort)
|
|
{ // Setzt das Passwort
|
|
try {
|
|
Statement stmt = connection.createStatement();
|
|
stmt.executeUpdate("UPDATE konten SET passwort = '" + pPasswort
|
|
+ "'WHERE id =" + pID + ";");
|
|
} catch (SQLException e) {
|
|
System.err.println("Couldn't handle DB-Query");
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public void loeschenEintrag(int pID)
|
|
{ // Löscht den Eintrag
|
|
int alteOrdnung = getNeueID(); // Speichert die ID des letzten Eintrags
|
|
try {
|
|
if (pID == getNeueID() - 1) { // Falls letzter Eintrag gelöscht werden
|
|
// soll
|
|
PreparedStatement ps = connection
|
|
.prepareStatement("DELETE FROM konten WHERE id=?");
|
|
ps.setInt(1, pID);
|
|
ps.executeUpdate();
|
|
} else { // Wenn ein Eintrag in mitten der DB gelöscht wird, dann wird
|
|
// hochkopiert
|
|
while (!(pID + 1 == alteOrdnung - 1)) {
|
|
int pIDneu = pID + 1;
|
|
Statement stmt = connection.createStatement();
|
|
ResultSet rs = stmt.executeQuery(
|
|
"SELECT id, datum, konto, nutzername, email, passwort FROM konten WHERE id = "
|
|
+ pIDneu + ";");
|
|
|
|
String pDatum = rs.getString("datum");
|
|
String pKonto = rs.getString("konto");
|
|
String pNutzername = rs.getString("nutzername");
|
|
String pEmail = rs.getString("email");
|
|
String pPasswort = rs.getString("passwort");
|
|
|
|
stmt.executeUpdate("UPDATE konten SET datum = '" + pDatum
|
|
+ "', konto = '" + pKonto + "', nutzername = '"
|
|
+ pNutzername + "', email = '" + pEmail + "', passwort = '"
|
|
+ pPasswort + "'WHERE id =" + pID + ";");
|
|
pID = pID + 1;
|
|
}
|
|
PreparedStatement ps = connection
|
|
.prepareStatement("DELETE FROM konten WHERE id=?");
|
|
ps.setInt(1, alteOrdnung - 1);
|
|
ps.executeUpdate();
|
|
}
|
|
} catch (SQLException e) {
|
|
System.err.println("Couldn't handle DB-Query");
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public int getNeueID()
|
|
{ // Gibt die ID des nächsten Eintrags zurück
|
|
int neueID = 0;
|
|
try {
|
|
Statement stmt = connection.createStatement();
|
|
ResultSet rs = stmt.executeQuery("SELECT * FROM konten;");
|
|
while (rs.next()) {
|
|
neueID = rs.getInt("id") + 1;
|
|
}
|
|
rs.close();
|
|
} catch (SQLException e) {
|
|
System.err.println("Couldn't handle DB-Query");
|
|
e.printStackTrace();
|
|
}
|
|
return neueID;
|
|
}
|
|
|
|
public ArrayList<tableData> ladeTabelle()
|
|
{ // Gibt ein Objekt daten mit allen Einträgen der DB zurück
|
|
ArrayList<tableData> daten = new ArrayList<>();
|
|
try {
|
|
Statement stmt = connection.createStatement();
|
|
ResultSet rs = stmt.executeQuery("SELECT * FROM konten;");
|
|
while (rs.next()) {
|
|
try {
|
|
// Entschlüsselte Daten werden als Datenobjekt gespeichert
|
|
// daten.add(new tableData(rs.getInt("id"),
|
|
// crypo.entschluesseln(rs.getString("datum"), schluessel),
|
|
// crypo.entschluesseln(rs.getString("konto"),schluessel)));
|
|
} catch (Exception e) {
|
|
// TODO Auto-generated catch block
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
} catch (SQLException e) {
|
|
System.err.println("Couldn't handle DB-Query");
|
|
e.printStackTrace();
|
|
}
|
|
return daten;
|
|
}
|
|
|
|
public void setSchluessel(String pSchluessel)
|
|
{ // Setzt den Schlüssel für die Ver-/Entschlüsslung
|
|
schluessel = pSchluessel;
|
|
}
|
|
|
|
public boolean getDatabasePresent() {
|
|
return databasepresent;
|
|
}
|
|
|
|
public void setDatabasePresent(boolean status) {
|
|
databasepresent = status;
|
|
}
|
|
|
|
}
|