2018-03-29 19:45:41 +02:00
package application ;
2018-03-29 19:51:34 +02:00
import java.sql.Connection ;
import java.sql.DriverManager ;
import java.sql.PreparedStatement ;
2018-03-29 19:45:41 +02:00
import java.sql.ResultSet ;
2018-03-29 19:51:34 +02:00
import java.sql.SQLException ;
2018-03-29 19:45:41 +02:00
import java.sql.Statement ;
import java.util.ArrayList ;
import java.io.File ;
2018-03-29 19:51:34 +02:00
class DBController
{
private Connection connection ;
2018-03-29 19:45:41 +02:00
2018-03-29 19:51:34 +02:00
private String DB_PATH_Linux = System . getProperty ( " user.home " )
2018-03-31 23:50:17 +02:00
+ " /bin/jFxKasse/ " ;
2018-03-29 19:51:34 +02:00
2018-03-31 23:50:17 +02:00
public String dbname ;
2018-03-29 19:51:34 +02:00
2018-04-05 12:25:29 +02:00
@SuppressWarnings ( " unused " )
2018-04-02 20:31:47 +02:00
private Main main ;
2018-03-29 19:51:34 +02:00
public void main ( )
{
2018-03-29 19:45:41 +02:00
try {
2018-04-02 20:31:47 +02:00
connection = DriverManager
. getConnection ( " jdbc:sqlite: " + DB_PATH_Linux + dbname + " .db " ) ;
2018-03-29 19:45:41 +02:00
} catch ( SQLException e ) {
// TODO Auto-generated catch block
e . printStackTrace ( ) ;
}
2018-03-29 19:51:34 +02:00
}
DBController ( Main main )
{
2018-03-29 19:45:41 +02:00
this . main = main ;
2018-03-29 19:51:34 +02:00
}
2018-04-02 20:31:47 +02:00
public void connectDatabase ( )
{ // connect to database
2018-03-31 23:50:17 +02:00
System . out . println ( " Verbinde ... DB name: " + dbname ) ;
2018-03-29 19:51:34 +02:00
try {
if ( connection ! = null )
return ;
2018-04-02 20:31:47 +02:00
connection = DriverManager
. getConnection ( " jdbc:sqlite: " + DB_PATH_Linux + dbname + " .db " ) ;
2018-03-29 19:51:34 +02:00
if ( ! connection . isClosed ( ) )
2018-03-31 23:50:17 +02:00
System . out . println ( " DB Datei-Verbindung erstellt " ) ;
2018-03-29 19:51:34 +02:00
} 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 ( ) ;
}
}
} ) ;
}
2018-04-02 20:31:47 +02:00
public boolean existiertDatenbank ( String pPfad )
{ // Prüft ob die Datenbank existiert
File varTmpDir = new File ( pPfad ) ;
if ( ! varTmpDir . exists ( ) ) {
return false ;
} else {
return true ;
2018-03-29 19:51:34 +02:00
}
2018-03-29 19:45:41 +02:00
}
2018-04-05 12:25:29 +02:00
2018-04-02 20:31:47 +02:00
// table Position section
public void createTablePositionen ( )
{ // create table position
2018-03-31 23:50:17 +02:00
System . out . println ( " Erstelle Tabelle Positionen " ) ;
2018-03-29 19:51:34 +02:00
try {
Statement stmt = connection . createStatement ( ) ;
2018-03-31 23:50:17 +02:00
stmt . executeUpdate ( " DROP TABLE IF EXISTS positionen; " ) ;
2018-03-29 19:51:34 +02:00
stmt . executeUpdate (
2018-03-31 23:50:17 +02:00
" CREATE TABLE positionen (id, name, value, color); " ) ;
} catch ( SQLException e ) {
System . err . println ( " Couldn't handle DB-Query " ) ;
e . printStackTrace ( ) ;
}
2018-03-29 19:51:34 +02:00
2018-04-02 20:31:47 +02:00
// create 25 demo/default data entries
for ( int i = 0 ; i < 25 ; i + + ) {
2018-04-05 12:25:29 +02:00
fillPositionen ( i + 1 , " Noch frei " , ( float ) 0 . 00 , " #ad0000 " ) ;
2018-03-29 19:45:41 +02:00
}
}
2018-03-29 19:51:34 +02:00
2018-04-02 20:31:47 +02:00
public void fillPositionen ( int pID , String pName , float pValue ,
String pColor )
{ // create new data in table
System . out . println ( " Erstelle neuen positionen eintrag " ) ;
2018-03-29 19:51:34 +02:00
try {
2018-04-02 20:31:47 +02:00
PreparedStatement ps = connection
. prepareStatement ( " INSERT INTO positionen VALUES (?, ?, ?, ?); " ) ;
ps . setInt ( 1 , pID ) ; // primary
ps . setString ( 2 , pName ) ;
ps . setFloat ( 3 , pValue ) ;
ps . setString ( 4 , pColor ) ;
2018-03-29 19:45:41 +02:00
2018-04-02 20:31:47 +02:00
ps . addBatch ( ) ;
connection . setAutoCommit ( false ) ;
ps . executeBatch ( ) ; // SQL execution
connection . setAutoCommit ( true ) ;
2018-03-29 19:51:34 +02:00
} catch ( SQLException e ) {
System . err . println ( " Couldn't handle DB-Query " ) ;
e . printStackTrace ( ) ;
}
2018-03-29 19:45:41 +02:00
}
2018-03-29 19:51:34 +02:00
2018-04-02 15:07:58 +02:00
public String getName ( int pID )
2018-03-29 19:51:34 +02:00
{ // Gibt das Datum zurück
try {
Statement stmt = connection . createStatement ( ) ;
ResultSet rs = stmt . executeQuery (
2018-04-02 15:07:58 +02:00
" SELECT id, name FROM positionen WHERE id = " + pID + " ; " ) ;
return rs . getString ( " name " ) ;
2018-03-29 19:51:34 +02:00
} catch ( SQLException e ) {
System . err . println ( " Couldn't handle DB-Query " ) ;
e . printStackTrace ( ) ;
2018-03-29 19:45:41 +02:00
return " Error 404 " ;
2018-03-29 19:51:34 +02:00
}
2018-03-29 19:45:41 +02:00
}
2018-03-29 19:51:34 +02:00
2018-04-02 15:07:58 +02:00
public String getValue ( int pID )
2018-03-29 19:51:34 +02:00
{ // Gibt das Konto zurück
try {
Statement stmt = connection . createStatement ( ) ;
ResultSet rs = stmt . executeQuery (
2018-04-02 15:07:58 +02:00
" SELECT id, value FROM positionen WHERE id = " + pID + " ; " ) ;
return rs . getString ( " value " ) ;
2018-03-29 19:51:34 +02:00
} catch ( SQLException e ) {
System . err . println ( " Couldn't handle DB-Query " ) ;
e . printStackTrace ( ) ;
2018-03-29 19:45:41 +02:00
return " Error 404 " ;
2018-03-29 19:51:34 +02:00
}
2018-03-29 19:45:41 +02:00
}
2018-03-29 19:51:34 +02:00
2018-04-02 15:07:58 +02:00
public String getColor ( int pID )
2018-03-29 19:51:34 +02:00
{ // Gibt den Nutzernamen zurück
try {
Statement stmt = connection . createStatement ( ) ;
ResultSet rs = stmt . executeQuery (
2018-04-02 15:07:58 +02:00
" SELECT id, color FROM positionen WHERE id = " + pID + " ; " ) ;
return rs . getString ( " color " ) ;
2018-03-29 19:51:34 +02:00
} catch ( SQLException e ) {
System . err . println ( " Couldn't handle DB-Query " ) ;
e . printStackTrace ( ) ;
2018-03-29 19:45:41 +02:00
return " Error 404 " ;
2018-03-29 19:51:34 +02:00
}
2018-03-29 19:45:41 +02:00
}
2018-03-29 19:51:34 +02:00
2018-04-02 15:07:58 +02:00
public void setName ( int pID , String pName )
2018-03-29 19:51:34 +02:00
{ // Setzt das Datum
try {
Statement stmt = connection . createStatement ( ) ;
2018-04-02 15:07:58 +02:00
stmt . executeUpdate ( " UPDATE positionen SET name = ' " + pName
2018-03-29 19:51:34 +02:00
+ " 'WHERE id = " + pID + " ; " ) ;
} catch ( SQLException e ) {
System . err . println ( " Couldn't handle DB-Query " ) ;
e . printStackTrace ( ) ;
}
2018-03-29 19:45:41 +02:00
}
2018-04-02 15:07:58 +02:00
public void setValue ( int pID , String pValue )
2018-03-29 19:51:34 +02:00
{ // Setzt das Konto
try {
Statement stmt = connection . createStatement ( ) ;
2018-04-02 15:07:58 +02:00
stmt . executeUpdate ( " UPDATE positionen SET value = ' " + pValue
2018-03-29 19:51:34 +02:00
+ " 'WHERE id = " + pID + " ; " ) ;
} catch ( SQLException e ) {
System . err . println ( " Couldn't handle DB-Query " ) ;
e . printStackTrace ( ) ;
}
2018-03-29 19:45:41 +02:00
}
2018-04-02 15:07:58 +02:00
public void setColor ( int pID , String pColor )
2018-03-29 19:51:34 +02:00
{ // Setzt den Nutzername
try {
Statement stmt = connection . createStatement ( ) ;
2018-04-02 15:07:58 +02:00
stmt . executeUpdate ( " UPDATE positionen SET color = ' " + pColor
2018-03-29 19:51:34 +02:00
+ " 'WHERE id = " + pID + " ; " ) ;
} catch ( SQLException e ) {
System . err . println ( " Couldn't handle DB-Query " ) ;
e . printStackTrace ( ) ;
}
2018-03-29 19:45:41 +02:00
}
2018-04-02 20:31:47 +02:00
public ArrayList < tableDataPositionen > ladeTabellePositionen ( )
{ // Gibt ein Objekt daten mit allen Einträgen der DB zurück
ArrayList < tableDataPositionen > daten = new ArrayList < > ( ) ;
2018-03-29 19:51:34 +02:00
try {
Statement stmt = connection . createStatement ( ) ;
2018-04-02 20:31:47 +02:00
ResultSet rs = stmt . executeQuery ( " SELECT * FROM positionen; " ) ;
while ( rs . next ( ) ) {
try {
// Entschlüsselte Daten werden als Datenobjekt gespeichert
daten . add ( new tableDataPositionen ( rs . getInt ( " id " ) ,
rs . getString ( " name " ) , rs . getString ( " value " ) ,
rs . getString ( " color " ) ) ) ;
} catch ( Exception e ) {
// TODO Auto-generated catch block
e . printStackTrace ( ) ;
2018-03-29 19:45:41 +02:00
}
}
2018-03-29 19:51:34 +02:00
} catch ( SQLException e ) {
System . err . println ( " Couldn't handle DB-Query " ) ;
e . printStackTrace ( ) ;
}
2018-04-02 20:31:47 +02:00
return daten ;
2018-03-29 19:45:41 +02:00
}
2018-04-02 20:31:47 +02:00
public void ausgebenSysoPositionen ( )
{ // Debugging Ausgabe der kompletten Tabelle
System . out . println ( " Print positionen " ) ;
2018-03-29 19:51:34 +02:00
try {
Statement stmt = connection . createStatement ( ) ;
2018-04-02 20:31:47 +02:00
ResultSet rs = stmt . executeQuery ( " SELECT * FROM positionen; " ) ;
2018-03-29 19:51:34 +02:00
while ( rs . next ( ) ) {
2018-04-02 20:31:47 +02:00
System . out . println ( " id = " + rs . getString ( " id " ) ) ;
System . out . println ( " name = " + rs . getString ( " name " ) ) ;
System . out . println ( " vale = " + rs . getString ( " value " ) ) ;
System . out . println ( " color = " + rs . getString ( " color " ) ) ;
System . out . println ( " " ) ;
2018-03-29 19:51:34 +02:00
}
2018-04-02 20:31:47 +02:00
2018-03-29 19:51:34 +02:00
} catch ( SQLException e ) {
System . err . println ( " Couldn't handle DB-Query " ) ;
e . printStackTrace ( ) ;
}
2018-03-29 19:45:41 +02:00
}
2018-04-02 20:31:47 +02:00
// table Jobs section
public void erstelleTabelleJobs ( )
{ // Erstelle Tabelle mit Reihen
System . out . println ( " Erstelle Tabelle Jobs " ) ;
2018-03-29 19:51:34 +02:00
try {
Statement stmt = connection . createStatement ( ) ;
2018-04-02 20:31:47 +02:00
stmt . executeUpdate ( " DROP TABLE IF EXISTS jobs; " ) ;
stmt . executeUpdate (
" CREATE TABLE jobs (id, time, positionen, state, value); " ) ;
2018-03-29 19:51:34 +02:00
} catch ( SQLException e ) {
System . err . println ( " Couldn't handle DB-Query " ) ;
e . printStackTrace ( ) ;
}
2018-03-29 19:45:41 +02:00
}
2018-03-29 19:51:34 +02:00
2018-04-02 20:31:47 +02:00
2018-03-31 23:50:17 +02:00
2018-03-29 19:45:41 +02:00
}