test commit

This commit is contained in:
hendrik 2018-03-29 19:51:34 +02:00
parent d9e84b899d
commit a460c751cf
10 changed files with 523 additions and 356 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,72 +1,91 @@
package application;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.io.File;
import java.io.FileInputStream;
class DBController {
class DBController
{
private Connection connection;
private Connection connection;
private String DB_PATH_Win = "C:/ProgramData/PWMaster/datenbank.db";
private String DB_PATH_Linux = System.getProperty("user.home") + "/bin/PWMaster/datenbank.db";
private String DB_PATH_Linux = System.getProperty("user.home")
+ "/bin/PWMaster/datenbank.db";
private Main main;
//private Cryption crypo = new Cryption();
private String schluessel; //Für Ver-/Entschlüsselung
public void main() {
// private Cryption crypo = new Cryption();
private String schluessel; // Für Ver-/Entschlüsselung
public void main()
{
try {
if(System.getProperty("os.name").equals("Linux")) {
connection = DriverManager.getConnection("jdbc:sqlite:" + DB_PATH_Linux);
if (System.getProperty("os.name").equals("Linux")) {
connection = DriverManager
.getConnection("jdbc:sqlite:" + DB_PATH_Linux);
} else {
connection = DriverManager.getConnection("jdbc:sqlite:" + DB_PATH_Win);
connection = DriverManager
.getConnection("jdbc:sqlite:" + DB_PATH_Win);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
DBController(Main main){
}
DBController(Main main)
{
this.main = main;
}
public void verbindeDatenbank() { //Verbinde mit der Datenbank-Datei
try {
if (connection != null)
return;
if(System.getProperty("os.name").equals("Linux")) {
connection = DriverManager.getConnection("jdbc:sqlite:" + DB_PATH_Linux);
}
public void verbindeDatenbank()
{ // Verbinde mit der Datenbank-Datei
try {
if (connection != null)
return;
if (System.getProperty("os.name").equals("Linux")) {
connection = DriverManager
.getConnection("jdbc:sqlite:" + DB_PATH_Linux);
} else {
connection = DriverManager.getConnection("jdbc:sqlite:" + DB_PATH_Win);
connection = DriverManager
.getConnection("jdbc:sqlite:" + DB_PATH_Win);
}
if (!connection.isClosed())
System.out.println();
} 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
if (!connection.isClosed())
System.out.println();
} 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);
@ -74,230 +93,277 @@ class DBController {
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();
}
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 erstelleDatenbank(){ //Erstelle Tabelle mit Reihen
try {
Statement stmt = connection.createStatement();
stmt.executeUpdate("DROP TABLE IF EXISTS konten;");
stmt.executeUpdate("CREATE TABLE konten (id, datum, konto, nutzername, email, passwort);");
} catch (SQLException e) {
System.err.println("Couldn't handle DB-Query");
e.printStackTrace();
}
public void erstelleDatenbank()
{ // Erstelle Tabelle mit Reihen
try {
Statement stmt = connection.createStatement();
stmt.executeUpdate("DROP TABLE IF EXISTS konten;");
stmt.executeUpdate(
"CREATE TABLE konten (id, datum, konto, nutzername, email, passwort);");
} catch (SQLException e) {
System.err.println("Couldn't handle DB-Query");
e.printStackTrace();
}
}
public boolean existiertDatenbank(String pPfad){ //Prüft ob die Datenbank existiert
public boolean existiertDatenbank(String pPfad)
{ // Prüft ob die Datenbank existiert
File varTmpDir = new File(pPfad);
if(!varTmpDir.exists()){
if (!varTmpDir.exists()) {
return false;
}else{
} 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
private void ausgebenSyso()
{ // Debugging Ausgabe der kompletten Datenbank
try {
if(pID == getNeueID() -1){ //Falls letzter Eintrag gelöscht werden soll
PreparedStatement ps = connection.prepareStatement("DELETE FROM konten WHERE id=?");
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)){
} 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+";" );
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");
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+";");
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);
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();
}
} 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
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()) {
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;
}
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
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;");
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)));
// 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();
}
}
} 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
public void setSchluessel(String pSchluessel)
{ // Setzt den Schlüssel für die Ver-/Entschlüsslung
schluessel = pSchluessel;
}

View File

@ -1,11 +1,11 @@
package application;
package application;
import java.io.File;
import java.io.FileInputStream;
import java.security.GeneralSecurityException;
import java.security.SecureRandom;
import java.util.Optional;
import java.util.Random;
import com.j256.twofactorauth.TimeBasedOneTimePasswordUtil;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.fxml.FXMLLoader;
@ -27,69 +27,86 @@ import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.GridPane;
public class Main extends Application {
public class Main extends Application
{
private MainWindowController mwc;
private DBController dbc = new DBController(this);
private String schluesselNutzer; //Passwort des Nutzers
private String schluesselNutzer; // Passwort des Nutzers
private Stage primaryStage;
@Override
public void start(Stage primaryStage) {
public void start(Stage primaryStage)
{
this.primaryStage = primaryStage;
mainWindow();
}
private void mainWindow(){
try {
FXMLLoader loader = new FXMLLoader(getClass().getResource("MainWindow.fxml"));
AnchorPane pane = loader.load();
//primaryStage.setWidth(1536);
//primaryStage.setHeight(864);
primaryStage.setTitle("jFxKasse"); //Title der Stage
private void mainWindow()
{
try {
FXMLLoader loader = new FXMLLoader(
getClass().getResource("MainWindow.fxml"));
AnchorPane pane = loader.load();
// Test
// primaryStage.setWidth(1536);
// primaryStage.setHeight(864);
primaryStage.setTitle("jFxKasse"); // Title der Stage
mwc = loader.getController();
mwc.setMain(this, dbc);
firstStart(); //Prüft ob das Programm zuvor gestartet wurde
firstStart(); // Prüft ob das Programm zuvor gestartet wurde
dbc.main(); //Startet die Datenbank
mwc.initUI(); //Startet die UI
mwc.fuelleTablle(); //Ladt die Einträge in die Tabelle
dbc.main(); // Startet die Datenbank
mwc.initUI(); // Startet die UI
mwc.fuelleTablle(); // Ladt die Einträge in die Tabelle
Scene scene = new Scene(pane);
scene.getStylesheets().add(Main.class.getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show(); //zeigt die Stage an
} catch(Exception e) {
scene.getStylesheets()
.add(Main.class.getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show(); // zeigt die Stage an
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
public static void main(String[] args)
{
launch(args);
}
private void firstStart() throws Exception{
if(mwc.loadSettings()){ //Wenn XML gefunden
dbc.verbindeDatenbank(); //Verbindet mit der Datenbank-Datei
}else{ //Wenn keine XML gefunden --> erster Start
private void firstStart() throws Exception
{
if (mwc.loadSettings()) { // Wenn XML gefunden
dbc.verbindeDatenbank(); // Verbindet mit der Datenbank-Datei
} else { // Wenn keine XML gefunden --> erster Start
System.out.println("keine XML gefunden!");
if(System.getProperty("os.name").equals("Linux")) {
if (System.getProperty("os.name").equals("Linux")) {
File dir = new File(System.getProperty("user.home") + "/bin/PWMaster"); //Erstellt den Unterordner
dir.mkdir(); //Erstellt den Unterordner
File dir = new File(
System.getProperty("user.home") + "/bin/PWMaster"); // Erstellt
// den
// Unterordner
dir.mkdir(); // Erstellt den Unterordner
} else {
File dir = new File("C:/ProgramData/PWMaster/"); //Erstellt den Unterordner
dir.mkdir(); //Erstellt den Unterordner
File dir = new File("C:/ProgramData/PWMaster/"); // Erstellt den
// Unterordner
dir.mkdir(); // Erstellt den Unterordner
}
mwc.saveSettings(schluesselNutzer, "dd"); // speichert das Passwort und den Individueller Schlüssel für die API in der XML
dbc.verbindeDatenbank(); //Verbindet mit der Datenbank-Datei
mwc.saveSettings(schluesselNutzer, "dd"); // speichert das Passwort und
// den Individueller
// Schlüssel für die API in
// der XML
dbc.verbindeDatenbank(); // Verbindet mit der Datenbank-Datei
dbc.erstelleDatenbank(); // Neue Datenbank-Datei wird erstellt
System.exit(0); //Programm wird beendet
System.exit(0); // Programm wird beendet
}
}
}

View File

@ -38,40 +38,62 @@ import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.GridPane;
import javafx.util.Pair;
public class MainWindowController {
public class MainWindowController
{
private static final String String = null;
Toolkit toolkit = Toolkit.getDefaultToolkit();
Clipboard clipboard = toolkit.getSystemClipboard();
@FXML
private AnchorPane mainAnchorpane;
@FXML
private TreeTableView<tableData> mainTreeTable;
private TreeTableView<tableData> mainTreeTable;
@FXML
private TreeTableColumn<tableData, String> datumSpalte;
private TreeTableColumn<tableData, String> datumSpalte;
@FXML
private TreeTableColumn<tableData, String> kontoSpalte;
@FXML
private TreeTableColumn<tableData, Integer> idSpalte = new TreeTableColumn<>("");
private TreeTableColumn<tableData, Integer> idSpalte = new TreeTableColumn<>(
"");
@FXML
private Button ueberbtn;
private Main main;
private DBController dbc;
private String filepathXMLWin = "C:/ProgramData/PWMaster/config.xml"; //Pfad wo die XML liegt
private String filepathXMLLinux = System.getProperty("user.home") + "/bin/PWMaster/config.xml"; //Pfad wo die XML liegt
private String filepathXMLWin = "C:/ProgramData/PWMaster/config.xml"; // Pfad
// wo
// die
// XML
// liegt
private String filepathXMLLinux = System.getProperty("user.home")
+ "/bin/PWMaster/config.xml"; // Pfad wo die XML liegt
private boolean showPasswort = false;
private String schluessel;
private String base32Secret;
private int id;
@FXML
TreeItem<tableData> root = new TreeItem<>(new tableData(0, "0", "0"));
Properties props = new Properties();
Properties props = new Properties();
@FXML
public void ueberbtnAction(ActionEvent event) { //Öffnet den Über-Dialog
public void ueberbtnAction(ActionEvent event)
{ // Öffnet den Über-Dialog
// Erstellt einen Dialog
Dialog<Pair<String, String>> dialog = new Dialog<>();
@ -87,97 +109,129 @@ public class MainWindowController {
grid.setVgap(10);
grid.setPadding(new Insets(20, 150, 10, 10));
grid.add(new Label("Datenbank: sqlite.org - Public Domain"
+"\nBASE64Decoder: java2s.com/Code/Jar/s/DownloadsunmiscBASE64Decoderjar.htm - GPLv2"
+"\nCrypo: blog.axxg.de/ - Copyright 2013 AxxG Alexander Grösel"
+" \nzwei Faktoren: github.com/j256/two-factor-auth - ISC License"
+" \nUI Design: eclipse.org/efxclipse/install.html - Eclipse Public License 1.0"
+" \nUI - Datenbank Integration: basierend auf Project-HomeFlix - github.com/Seil0/Project-HomeFlix - GPLv3 \n"
+" \nMaintainer: hendrik.schutter@icloud.com"
+" \n(c) 2017 Hendrik Schutter"), 0, 0);
grid.add(new Label("Datenbank: sqlite.org - Public Domain"
+ "\nBASE64Decoder: java2s.com/Code/Jar/s/DownloadsunmiscBASE64Decoderjar.htm - GPLv2"
+ "\nCrypo: blog.axxg.de/ - Copyright 2013 AxxG Alexander Grösel"
+ " \nzwei Faktoren: github.com/j256/two-factor-auth - ISC License"
+ " \nUI Design: eclipse.org/efxclipse/install.html - Eclipse Public License 1.0"
+ " \nUI - Datenbank Integration: basierend auf Project-HomeFlix - github.com/Seil0/Project-HomeFlix - GPLv3 \n"
+ " \nMaintainer: hendrik.schutter@icloud.com"
+ " \n(c) 2017 Hendrik Schutter"), 0, 0);
dialog.getDialogPane().setContent(grid); //Setzt die GridPane auf die DialogPane
dialog.getDialogPane().setContent(grid); // Setzt die GridPane auf die
// DialogPane
dialog.showAndWait();
}
@FXML
public void fuelleTablle(){ //Lädt die Datenbank in die Tabelle
public void fuelleTablle()
{ // Lädt die Datenbank in die Tabelle
dbc.setSchluessel(schluessel);
for(int i = 0; i < dbc.ladeTabelle().size(); i++){
tableData helpTableData = new tableData(dbc.ladeTabelle().get(i).getID(),
dbc.ladeTabelle().get(i).getDatum(), dbc.ladeTabelle().get(i).getKonto());
for (int i = 0; i < dbc.ladeTabelle().size(); i++) {
tableData helpTableData = new tableData(
dbc.ladeTabelle().get(i).getID(),
dbc.ladeTabelle().get(i).getDatum(),
dbc.ladeTabelle().get(i).getKonto());
root.getChildren().add(new TreeItem<tableData>(helpTableData));
}
}
public void initUI(){
public void initUI()
{
mainTreeTable.setRoot(root);
mainTreeTable.setShowRoot(false);
mainTreeTable.setEditable(false);
//Setzt die Textfelder
// Setzt die Textfelder
idSpalte.setCellValueFactory(cellData -> cellData.getValue().getValue().idProperty().asObject());
datumSpalte.setCellValueFactory(cellData -> cellData.getValue().getValue().datumProperty());
kontoSpalte.setCellValueFactory(cellData -> cellData.getValue().getValue().kontoProperty());
idSpalte.setCellValueFactory(
cellData -> cellData.getValue().getValue().idProperty().asObject());
datumSpalte.setCellValueFactory(
cellData -> cellData.getValue().getValue().datumProperty());
kontoSpalte.setCellValueFactory(
cellData -> cellData.getValue().getValue().kontoProperty());
mainTreeTable.getColumns().add(idSpalte);
mainTreeTable.getColumns().get(2).setVisible(false);
mainTreeTable.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Object>() {
@Override
public void changed(ObservableValue<?> observable, Object oldVal, Object newVal){
// last = selected; //for auto-play
int selected = mainTreeTable.getSelectionModel().getSelectedIndex(); //get selected item
id = idSpalte.getCellData(selected); //Ausgewählte Spalte
showPasswort =false;
try { //Setzt den entschlüsselten Inhalt in die Textfelder
//tf01.setText("Verschlüsseltes Passwort von " + crypo.entschluesseln(dbc.getKonto(id), schluessel) + " : " + dbc.getPasswort(id));
//tfNutzername.setText(crypo.entschluesseln(dbc.getNutzername(id), schluessel));
//tfEmail.setText(crypo.entschluesseln(dbc.getEmail(id), schluessel));
//tfPasswort.setText(crypo.entschluesseln(dbc.getPasswort(id), schluessel));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
mainTreeTable.getSelectionModel().selectedItemProperty()
.addListener(new ChangeListener<Object>() {
@Override
public void changed(ObservableValue<?> observable, Object oldVal,
Object newVal)
{
// last = selected; //for auto-play
int selected = mainTreeTable.getSelectionModel()
.getSelectedIndex(); // get selected item
id = idSpalte.getCellData(selected); // Ausgewählte Spalte
showPasswort = false;
try { // Setzt den entschlüsselten Inhalt in die Textfelder
// tf01.setText("Verschlüsseltes Passwort von " +
// crypo.entschluesseln(dbc.getKonto(id), schluessel) + " :
// " + dbc.getPasswort(id));
// tfNutzername.setText(crypo.entschluesseln(dbc.getNutzername(id),
// schluessel));
// tfEmail.setText(crypo.entschluesseln(dbc.getEmail(id),
// schluessel));
// tfPasswort.setText(crypo.entschluesseln(dbc.getPasswort(id),
// schluessel));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
public void setMain(Main main, DBController dbc){
public void setMain(Main main, DBController dbc)
{
this.main = main;
this.dbc = dbc;
}
public String getSystemDatum(){ //Gibt das System-Datum zurück
public String getSystemDatum()
{ // Gibt das System-Datum zurück
java.util.Date now = new java.util.Date();
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd.MM.yyyy");
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
"dd.MM.yyyy");
String heutigesDatum = sdf.format(now);
return heutigesDatum;
}
public void saveSettings(String schluessel, String base32Secret) throws Exception{
OutputStream outputStream; //new output-stream
public void saveSettings(String schluessel, String base32Secret)
throws Exception
{
OutputStream outputStream; // new output-stream
try {
//props.setProperty("key", crypo.verschluesseln(schluessel, crypo.getProgrammSchluessel())); //writes path into property
//props.setProperty("TOTPkey", crypo.verschluesseln(base32Secret, crypo.getProgrammSchluessel())); //writes path into property
if(System.getProperty("os.name").equals("Linux")) {
// props.setProperty("key", crypo.verschluesseln(schluessel,
// crypo.getProgrammSchluessel())); //writes path into property
// props.setProperty("TOTPkey", crypo.verschluesseln(base32Secret,
// crypo.getProgrammSchluessel())); //writes path into property
if (System.getProperty("os.name").equals("Linux")) {
outputStream = new FileOutputStream(filepathXMLLinux);
} else {
outputStream = new FileOutputStream(filepathXMLWin);
}
props.storeToXML(outputStream, "PWMaster settings"); //writes new .xml
props.storeToXML(outputStream, "PWMaster settings"); // writes new .xml
outputStream.close();
} catch (IOException e) {
}
}
public boolean loadSettings() throws Exception{ //Ladt die Daten aus der XML
public boolean loadSettings() throws Exception
{ // Ladt die Daten aus der XML
InputStream inputStream;
try {
if(System.getProperty("os.name").equals("Linux")) {
if (System.getProperty("os.name").equals("Linux")) {
inputStream = new FileInputStream(filepathXMLLinux);
} else {
inputStream = new FileInputStream(filepathXMLWin);
}
props.loadFromXML(inputStream);
//schluessel = crypo.entschluesseln(props.getProperty("key"), crypo.getProgrammSchluessel()); //liest schluessel von property
//base32Secret = crypo.entschluesseln(props.getProperty("TOTPkey"), crypo.getProgrammSchluessel()); //liest schluessel von property
// schluessel = crypo.entschluesseln(props.getProperty("key"),
// crypo.getProgrammSchluessel()); //liest schluessel von property
// base32Secret = crypo.entschluesseln(props.getProperty("TOTPkey"),
// crypo.getProgrammSchluessel()); //liest schluessel von property
inputStream.close();
return true;
} catch (IOException e) {
@ -185,17 +239,25 @@ public class MainWindowController {
return false;
}
}
public String getSchluesselXML(){ //Gibt den Schlüssel zurück für die Main
public String getSchluesselXML()
{ // Gibt den Schlüssel zurück für die Main
return schluessel;
}
public void starteDB(){ //Startet die Datenbank
public void starteDB()
{ // Startet die Datenbank
dbc.verbindeDatenbank();
}
public void erzeugeDB(){ //Erzeuge die Datenbank
public void erzeugeDB()
{ // Erzeuge die Datenbank
dbc.erstelleDatenbank();
dbc.verbindeDatenbank();
}
public String getbase32Secret(){ //Gibt den base32Secret zurück für die Main
public String getbase32Secret()
{ // Gibt den base32Secret zurück für die Main
return base32Secret;
}
}

View File

@ -5,42 +5,64 @@ import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
public class tableData { //Datenobjekt mit der ID, Datum und Konto
public class tableData
{ // Datenobjekt mit der ID, Datum und Konto
private final IntegerProperty id = new SimpleIntegerProperty();
private final StringProperty datum = new SimpleStringProperty();
private final StringProperty konto = new SimpleStringProperty();
public tableData(final int id, final String datum, final String konto){
public tableData(final int id, final String datum, final String konto)
{
this.id.set(id);
this.datum.set(datum);
this.konto.set(konto);
}
public IntegerProperty idProperty(){
public IntegerProperty idProperty()
{
return id;
}
public StringProperty datumProperty(){
public StringProperty datumProperty()
{
return datum;
}
public StringProperty kontoProperty(){
public StringProperty kontoProperty()
{
return konto;
}
public int getID(){
public int getID()
{
return idProperty().get();
}
public String getDatum(){
public String getDatum()
{
return datumProperty().get();
}
public String getKonto(){
public String getKonto()
{
return kontoProperty().get();
}
public final void setID(int id){
public final void setID(int id)
{
idProperty().set(id);
}
public final void setdatum(String datum){
public final void setdatum(String datum)
{
datumProperty().set(datum);
}
public final void setkonto(String konto){
public final void setkonto(String konto)
{
kontoProperty().set(konto);
}
}