JsonHelper + PostgresHelper + acquire package (/transactions/packages)
This commit is contained in:
		@@ -1,5 +1,7 @@
 | 
				
			|||||||
package at.reisinger;
 | 
					package at.reisinger;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import at.reisinger.server.helper.PostgresHelper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.sql.*;
 | 
					import java.sql.*;
 | 
				
			||||||
import java.util.ArrayList;
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -13,97 +15,158 @@ public class DBConnection {
 | 
				
			|||||||
    private Connection c;
 | 
					    private Connection c;
 | 
				
			||||||
    private Statement stmt;
 | 
					    private Statement stmt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private Connection con() {
 | 
					 | 
				
			||||||
        this.c = null;
 | 
					 | 
				
			||||||
        try {
 | 
					 | 
				
			||||||
            Class.forName("org.postgresql.Driver");
 | 
					 | 
				
			||||||
            this.c = DriverManager
 | 
					 | 
				
			||||||
                    .getConnection("jdbc:postgresql://postgres.dergeorg.at:5432/mtcg",
 | 
					 | 
				
			||||||
                            "user", "user");
 | 
					 | 
				
			||||||
        } catch (Exception e) {
 | 
					 | 
				
			||||||
            e.printStackTrace();
 | 
					 | 
				
			||||||
            System.err.println(e.getClass().getName() + ": " + e.getMessage());
 | 
					 | 
				
			||||||
            System.exit(0);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        return c;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Erstellt alle Beispieldaten und simuliert somit den
 | 
					     * Erstellt alle Beispieldaten und simuliert somit den
 | 
				
			||||||
     * Verbindungsaufbau zu einer DB
 | 
					     * Verbindungsaufbau zu einer DB
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public DBConnection() {
 | 
					    public DBConnection() {
 | 
				
			||||||
        this.c = con();
 | 
					        this.c = PostgresHelper.con();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Erstellt alle Tabellen die für den Betrieb der Software bennötigt werden
 | 
					     * Erstellt alle Tabellen die für den Betrieb der Software bennötigt werden
 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @throws SQLException
 | 
					 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public void init() {
 | 
					    public void init() {
 | 
				
			||||||
        this.c = con();
 | 
					        PostgresHelper.executeUpdateMessage("CREATE TABLE IF NOT EXISTS USERS (username TEXT PRIMARY KEY NOT NULL, nachname TEXT NOT NULL, email TEXT NOT NULL, password TEXT NOT NULL)", "User Table created");
 | 
				
			||||||
        try {
 | 
					        PostgresHelper.executeUpdate("CREATE TABLE IF NOT EXISTS CARD(NAME TEXT not null,DAMAGE FLOAT not null,ELEMENTTYP TEXT not null,CARDTYPE TEXT not null, PRIMARY KEY (\"name\"));");
 | 
				
			||||||
            stmt = this.c.createStatement();
 | 
					        PostgresHelper.executeUpdateMessage("create unique index IF NOT EXISTS card_name_uindex on CARD (NAME);", "Card Table created");
 | 
				
			||||||
            String sql = "CREATE TABLE IF NOT EXISTS USERS " +
 | 
					        PostgresHelper.executeUpdateMessage("create table IF NOT EXISTS package(\"ID\" varchar(255) not null,name varchar(255) not null constraint name references card, i serial not null constraint package_i primary key );", "Package Table created");
 | 
				
			||||||
                    "(username       TEXT PRIMARY KEY     NOT NULL," +
 | 
					        PostgresHelper.executeUpdateMessage("create table IF NOT EXISTS user_cards(username TEXT not null constraint user_cards_users_username_fk references users,name text not null, gesperrt boolean not null);", "UserCards Table created");
 | 
				
			||||||
                    " nachname           TEXT    NOT NULL, " +
 | 
					    }
 | 
				
			||||||
                    " email            TEXT     NOT NULL, " +
 | 
					 | 
				
			||||||
                    " password        TEXT NOT NULL)";
 | 
					 | 
				
			||||||
            stmt.executeUpdate(sql);
 | 
					 | 
				
			||||||
            stmt.close();
 | 
					 | 
				
			||||||
            this.c.close();
 | 
					 | 
				
			||||||
        } catch (Exception e) {
 | 
					 | 
				
			||||||
            System.err.println(e.getClass().getName() + ": " + e.getMessage());
 | 
					 | 
				
			||||||
            System.exit(0);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        System.out.println("User Table created");
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        this.c = con();
 | 
					    /**
 | 
				
			||||||
        try {
 | 
					     * Holt ein Random package aus dem Shop
 | 
				
			||||||
            stmt = this.c.createStatement();
 | 
					     *
 | 
				
			||||||
            String sql = "CREATE TABLE IF NOT EXISTS CARD(NAME TEXT not null,DAMAGE FLOAT not null,ELEMENTTYP TEXT not null,CARDTYPE TEXT not null, PRIMARY KEY (\"name\"));";
 | 
					     * @param username User der das Package haben möchte
 | 
				
			||||||
            stmt.executeUpdate(sql);
 | 
					     * @return Das Package aus dem Shop, null falls ein Fehler auftritt
 | 
				
			||||||
            stmt.close();
 | 
					     */
 | 
				
			||||||
            this.c.close();
 | 
					    public Package userAcquirePackage(String username) {
 | 
				
			||||||
        } catch (Exception e) {
 | 
					        System.out.println("Vor den coins");
 | 
				
			||||||
            System.err.println(e.getClass().getName() + ": " + e.getMessage());
 | 
					        int coins = checkCoins(username);
 | 
				
			||||||
            System.exit(0);
 | 
					        if (!(coins - 5 >= 0)) {
 | 
				
			||||||
 | 
					            return null;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        this.c = con();
 | 
					        updateCoins(coins - 5, username);
 | 
				
			||||||
        try {
 | 
					        System.out.println("nach den soins");
 | 
				
			||||||
            stmt = this.c.createStatement();
 | 
					 | 
				
			||||||
            String sql = "create unique index IF NOT EXISTS card_name_uindex on CARD (NAME);";
 | 
					 | 
				
			||||||
            stmt.executeUpdate(sql);
 | 
					 | 
				
			||||||
            stmt.close();
 | 
					 | 
				
			||||||
            this.c.close();
 | 
					 | 
				
			||||||
        } catch (Exception e) {
 | 
					 | 
				
			||||||
            System.err.println(e.getClass().getName() + ": " + e.getMessage());
 | 
					 | 
				
			||||||
            System.exit(0);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        System.out.println("Card Table created");
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        this.c = con();
 | 
					        this.c = PostgresHelper.con();
 | 
				
			||||||
 | 
					        String id = "";
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            stmt = this.c.createStatement();
 | 
					            stmt = this.c.createStatement();
 | 
				
			||||||
            String sql = "create table IF NOT EXISTS package" +
 | 
					            ResultSet rs = stmt.executeQuery("select \"ID\" as id from package LIMIT 1;");
 | 
				
			||||||
                    "(" +
 | 
					            while (rs.next()) {
 | 
				
			||||||
                    "    \"ID\" varchar(255) not null," +
 | 
					                id = rs.getString("id");
 | 
				
			||||||
                    "    name varchar(255) not null" +
 | 
					                System.out.println("id = " + id);
 | 
				
			||||||
                    "        constraint name" +
 | 
					                System.out.println();
 | 
				
			||||||
                    "            references card," +
 | 
					            }
 | 
				
			||||||
                    "    i    serial       not null" +
 | 
					            rs.close();
 | 
				
			||||||
                    "        constraint package_i" +
 | 
					 | 
				
			||||||
                    "            primary key" +
 | 
					 | 
				
			||||||
                    ");";
 | 
					 | 
				
			||||||
            stmt.executeUpdate(sql);
 | 
					 | 
				
			||||||
            stmt.close();
 | 
					            stmt.close();
 | 
				
			||||||
            this.c.close();
 | 
					            this.c.close();
 | 
				
			||||||
        } catch (Exception e) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
            System.err.println(e.getClass().getName() + ": " + e.getMessage());
 | 
					            System.err.println(e.getClass().getName() + ": " + e.getMessage());
 | 
				
			||||||
            System.exit(0);
 | 
					            return null;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        System.out.println("Package Table created");
 | 
					        System.out.println("Package selected successfully");
 | 
				
			||||||
 | 
					        this.c = PostgresHelper.con();
 | 
				
			||||||
 | 
					        String packagename = "", cardname = "", elementtyp = "", cardtype = "";
 | 
				
			||||||
 | 
					        int zeilennummer = 0, damage = 0;
 | 
				
			||||||
 | 
					        Cards cards = new Cards(new ArrayList<Card>());
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            stmt = this.c.createStatement();
 | 
				
			||||||
 | 
					            ResultSet rs = stmt.executeQuery("select  i as zeilennummer,  package.\"ID\" as id, package.name as packagename, c.name as cardname, c.DAMAGE as damage, c.ELEMENTTYP as elementtyp, c.CARDTYPE as cardtype from package join card c on c.name = package.name where \"ID\" = \'" + id + "\';");
 | 
				
			||||||
 | 
					            int count = 0;
 | 
				
			||||||
 | 
					            while (rs.next()) {
 | 
				
			||||||
 | 
					                System.out.println(count++);
 | 
				
			||||||
 | 
					                zeilennummer = rs.getInt("zeilennummer");
 | 
				
			||||||
 | 
					                id = rs.getString("id");
 | 
				
			||||||
 | 
					                packagename = rs.getString("packagename");
 | 
				
			||||||
 | 
					                cardname = rs.getString("cardname");
 | 
				
			||||||
 | 
					                elementtyp = rs.getString("elementtyp");
 | 
				
			||||||
 | 
					                cardtype = rs.getString("cardtype");
 | 
				
			||||||
 | 
					                damage = rs.getInt("damage");
 | 
				
			||||||
 | 
					                Card newCard = new Card(cardname, elementtyp + cardtype, damage);
 | 
				
			||||||
 | 
					                cards.addCard(newCard);
 | 
				
			||||||
 | 
					                System.out.println();
 | 
				
			||||||
 | 
					                Connection b = PostgresHelper.con();
 | 
				
			||||||
 | 
					                try {
 | 
				
			||||||
 | 
					                    stmt = b.createStatement();
 | 
				
			||||||
 | 
					                    String sql = "INSERT INTO public.user_cards (username, name, gesperrt) VALUES ( \'" + username + "\',\'" + newCard.getName() + "\', \'false\');";
 | 
				
			||||||
 | 
					                    System.out.println(sql);
 | 
				
			||||||
 | 
					                    stmt.executeUpdate(sql);
 | 
				
			||||||
 | 
					                    stmt.close();
 | 
				
			||||||
 | 
					                    b.close();
 | 
				
			||||||
 | 
					                } catch (Exception e) {
 | 
				
			||||||
 | 
					                    System.err.println(e.getClass().getName() + ": " + e.getMessage());
 | 
				
			||||||
 | 
					                    return null;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                System.out.println("User got Card successfully");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            rs.close();
 | 
				
			||||||
 | 
					            stmt.close();
 | 
				
			||||||
 | 
					            this.c.close();
 | 
				
			||||||
 | 
					        } catch (Exception e) {
 | 
				
			||||||
 | 
					            System.err.println(e.getClass().getName() + ": " + e.getMessage());
 | 
				
			||||||
 | 
					            return null;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        System.out.println("Package pulled successfully");
 | 
				
			||||||
 | 
					        deletePackage(id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (cards.getCards().size() != 0 && cards != null) {
 | 
				
			||||||
 | 
					            return new Package(cards, packagename, 5);
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            return null;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Löscht ein Package anhand des Namens
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param name Name des Packages das gelöscht werden soll
 | 
				
			||||||
 | 
					     * @return True bei erfolg, sonst false
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public boolean deletePackage(String name) {
 | 
				
			||||||
 | 
					        return PostgresHelper.executeUpdateMessage("DELETE FROM package WHERE \"ID\" = \'" + name + "\';", "Package deleted successfully");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Coins setzten
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param coins Anzahl die zu setzten ist
 | 
				
			||||||
 | 
					     * @return True bei erfolg, sonst false
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public boolean updateCoins(int coins, String username) {
 | 
				
			||||||
 | 
					        return PostgresHelper.executeUpdateMessage("UPDATE users SET coins = " + coins + " WHERE username = \'" + username + "\';", "Coins Updated");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Gibt die Anzahl an verfügbaren coins zurück
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return Anzahl der Coins, -1 ist error
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public int checkCoins(String username) {
 | 
				
			||||||
 | 
					        System.out.println("Check coin start");
 | 
				
			||||||
 | 
					        this.c = PostgresHelper.con();
 | 
				
			||||||
 | 
					        int coins = 0;
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            stmt = this.c.createStatement();
 | 
				
			||||||
 | 
					            ResultSet rs = stmt.executeQuery("Select coins from users where username = \'" + username + "\';");
 | 
				
			||||||
 | 
					            while (rs.next()) {
 | 
				
			||||||
 | 
					                coins = rs.getInt("coins");
 | 
				
			||||||
 | 
					                System.out.println("Count: ");
 | 
				
			||||||
 | 
					                System.out.print(coins);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            rs.close();
 | 
				
			||||||
 | 
					            stmt.close();
 | 
				
			||||||
 | 
					            this.c.close();
 | 
				
			||||||
 | 
					        } catch (Exception e) {
 | 
				
			||||||
 | 
					            System.out.println("check soin error");
 | 
				
			||||||
 | 
					            System.err.println(e.getClass().getName() + ": " + e.getMessage());
 | 
				
			||||||
 | 
					            return -1;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        System.out.println("\nCoins: " + coins);
 | 
				
			||||||
 | 
					        return coins;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -113,7 +176,7 @@ public class DBConnection {
 | 
				
			|||||||
     * @return True falls die Karte bereits existiert
 | 
					     * @return True falls die Karte bereits existiert
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public boolean cardExists(String name) {
 | 
					    public boolean cardExists(String name) {
 | 
				
			||||||
        this.c = con();
 | 
					        this.c = PostgresHelper.con();
 | 
				
			||||||
        int count = 0;
 | 
					        int count = 0;
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            stmt = this.c.createStatement();
 | 
					            stmt = this.c.createStatement();
 | 
				
			||||||
@@ -139,47 +202,36 @@ public class DBConnection {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Fügt eine Karte der DB hinzu
 | 
					     * Fügt eine Karte der DB hinzu
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
     * @param card Card die hinzugefügt werden soll
 | 
					     * @param card Card die hinzugefügt werden soll
 | 
				
			||||||
     * @return true bei erfolg, false bei error
 | 
					     * @return true bei erfolg, false bei error
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public boolean addCard(Card card) {
 | 
					    public boolean addCard(Card card) {
 | 
				
			||||||
        this.c = con();
 | 
					        return PostgresHelper.executeUpdateMessage("insert into card (NAME, DAMAGE, ELEMENTTYP, CARDTYPE) values (\'" + card.getName() + "\',\'" + card.getDamage() + "\',\'" + card.getElementTyp().name() + "\',\'" + card.getCardType().name() + "\')", "Card added");
 | 
				
			||||||
        try{
 | 
					 | 
				
			||||||
            stmt = this.c.createStatement();
 | 
					 | 
				
			||||||
            String sql = "insert into card (NAME, DAMAGE, ELEMENTTYP, CARDTYPE) values (\'" + card.getName() +"\',\'" + card.getDamage() + "\',\'" + card.getElementTyp().name() + "\',\'" + card.getCardType().name() + "\')";
 | 
					 | 
				
			||||||
            System.out.println(sql);
 | 
					 | 
				
			||||||
            stmt.executeUpdate(sql);
 | 
					 | 
				
			||||||
            stmt.close();
 | 
					 | 
				
			||||||
            this.c.close();
 | 
					 | 
				
			||||||
        } catch ( Exception e ) {
 | 
					 | 
				
			||||||
            System.err.println( e.getClass().getName()+": "+ e.getMessage() );
 | 
					 | 
				
			||||||
            return false;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        System.out.println("Card added");
 | 
					 | 
				
			||||||
        return true;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Ermittelt die nächste Package ID
 | 
					     * Ermittelt die nächste Package ID
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
     * @return Die Nächste Package id, wenn 0, dann ist ein error
 | 
					     * @return Die Nächste Package id, wenn 0, dann ist ein error
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public int nextPackageId(){
 | 
					    public int nextPackageId() {
 | 
				
			||||||
        this.c = con();
 | 
					        this.c = PostgresHelper.con();
 | 
				
			||||||
        String id = "";
 | 
					        String id = "";
 | 
				
			||||||
        try{
 | 
					        try {
 | 
				
			||||||
            stmt = this.c.createStatement();
 | 
					            stmt = this.c.createStatement();
 | 
				
			||||||
            ResultSet rs = stmt.executeQuery( "select max(\"ID\") from package;");
 | 
					            ResultSet rs = stmt.executeQuery("select max(\"ID\") from package;");
 | 
				
			||||||
            while ( rs.next() ) {
 | 
					            while (rs.next()) {
 | 
				
			||||||
                id = rs.getString("max");
 | 
					                id = rs.getString("max");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (id == null){
 | 
					            if (id == null) {
 | 
				
			||||||
                id = "0";
 | 
					                id = "0";
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            rs.close();
 | 
					            rs.close();
 | 
				
			||||||
            stmt.close();
 | 
					            stmt.close();
 | 
				
			||||||
            this.c.close();
 | 
					            this.c.close();
 | 
				
			||||||
        } catch ( Exception e ) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
            System.err.println( e.getClass().getName()+": "+ e.getMessage() );
 | 
					            System.err.println(e.getClass().getName() + ": " + e.getMessage());
 | 
				
			||||||
            return 0;
 | 
					            return 0;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        System.out.println("Package Next id is: ");
 | 
					        System.out.println("Package Next id is: ");
 | 
				
			||||||
@@ -191,121 +243,89 @@ public class DBConnection {
 | 
				
			|||||||
     * Fügt eine Package der DB hinzu,
 | 
					     * Fügt eine Package der DB hinzu,
 | 
				
			||||||
     * wenn eine Karte aus dem Package noch nicht in der Db ist,
 | 
					     * wenn eine Karte aus dem Package noch nicht in der Db ist,
 | 
				
			||||||
     * dann wird es automatisch hinzugefuegt
 | 
					     * dann wird es automatisch hinzugefuegt
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
     * @param pack Pack welches hinzugefügt werden soll
 | 
					     * @param pack Pack welches hinzugefügt werden soll
 | 
				
			||||||
     * @return True bei erfolg, false bei fehler
 | 
					     * @return True bei erfolg, false bei fehler
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public boolean addPackage(Package pack) {
 | 
					    public boolean addPackage(Package pack) {
 | 
				
			||||||
        for (Card ca : pack.getCards()) {
 | 
					        for (Card ca : pack.getCards()) {
 | 
				
			||||||
            if (!cardExists(ca.getName())) {
 | 
					            if (!cardExists(ca.getName())) {
 | 
				
			||||||
                if(!addCard(ca)){
 | 
					                if (!addCard(ca)) {
 | 
				
			||||||
                    return false;
 | 
					                    return false;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            this.c = con();
 | 
					            if(!PostgresHelper.executeUpdateMessage("INSERT INTO package (\"ID\", \"name\") values (\'" + pack.getName() + "\',\'" + ca.getName() + "\');", "Card zu Package hinzugefügt")){
 | 
				
			||||||
            try {
 | 
					 | 
				
			||||||
                stmt = this.c.createStatement();
 | 
					 | 
				
			||||||
                String sql = "INSERT INTO package (\"ID\", \"name\") values (\'" + pack.getName() + "\',\'" + ca.getName() + "\');";
 | 
					 | 
				
			||||||
                System.out.println(sql);
 | 
					 | 
				
			||||||
                stmt.executeUpdate(sql);
 | 
					 | 
				
			||||||
                stmt.close();
 | 
					 | 
				
			||||||
                this.c.close();
 | 
					 | 
				
			||||||
            } catch (Exception e) {
 | 
					 | 
				
			||||||
                System.err.println(e.getClass().getName() + ": " + e.getMessage());
 | 
					 | 
				
			||||||
                return false;
 | 
					                return false;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            System.out.println("Card zu Package hinzugefügt");
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return true;
 | 
					        return true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Fügt einen User der DB hinzu
 | 
					     * Fügt einen User der DB hinzu
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
     * @param username Username des Users
 | 
					     * @param username Username des Users
 | 
				
			||||||
     * @param password Passwort des Users
 | 
					     * @param password Passwort des Users
 | 
				
			||||||
     * @param nachname nachname des Users
 | 
					     * @param nachname nachname des Users
 | 
				
			||||||
     * @param email Email des Users
 | 
					     * @param email    Email des Users
 | 
				
			||||||
     * @return True wenn alles erfolgreich war, false wenn es nicht erfolgreich war
 | 
					     * @return True wenn alles erfolgreich war, false wenn es nicht erfolgreich war
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public boolean addUser(String username, String password, String nachname, String email){
 | 
					    public boolean addUser(String username, String password, String nachname, String email) {
 | 
				
			||||||
        this.c = con();
 | 
					        return PostgresHelper.executeUpdateMessage("INSERT INTO users (username, nachname, email, password) values (\'" + username + "\',\'" + nachname + "\',\'" + email + "\',\'" + password + "\')", "User added");
 | 
				
			||||||
        try{
 | 
					 | 
				
			||||||
            stmt = this.c.createStatement();
 | 
					 | 
				
			||||||
            String sql = "INSERT INTO users (username, nachname, email, password) values (\'" + username +"\',\'" + nachname + "\',\'" + email + "\',\'" + password + "\')";
 | 
					 | 
				
			||||||
            System.out.println(sql);
 | 
					 | 
				
			||||||
            stmt.executeUpdate(sql);
 | 
					 | 
				
			||||||
            stmt.close();
 | 
					 | 
				
			||||||
            this.c.close();
 | 
					 | 
				
			||||||
        } catch ( Exception e ) {
 | 
					 | 
				
			||||||
            System.err.println( e.getClass().getName()+": "+ e.getMessage() );
 | 
					 | 
				
			||||||
            return false;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        System.out.println("User added");
 | 
					 | 
				
			||||||
        return true;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Sucht einen User anhand des Usernamens.
 | 
					     * Sucht einen User anhand des Usernamens.
 | 
				
			||||||
     * Gibt ein User Objekt zurück
 | 
					     * Gibt ein User Objekt zurück
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
     * @param uname Username der zu suchen ist
 | 
					     * @param uname Username der zu suchen ist
 | 
				
			||||||
     * @return User als User Objekt
 | 
					     * @return User als User Objekt
 | 
				
			||||||
     * @throws SQLException Fehler bei der Suche in der DB
 | 
					     * @throws SQLException Fehler bei der Suche in der DB
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public User getUser(String uname) throws SQLException {
 | 
					    public User getUser(String uname) throws SQLException {
 | 
				
			||||||
        this.c = con();
 | 
					        this.c = PostgresHelper.con();
 | 
				
			||||||
        String username="", password="", email ="", nachname = "";
 | 
					        String username = "", password = "", email = "", nachname = "";
 | 
				
			||||||
        try{
 | 
					        try {
 | 
				
			||||||
        stmt = this.c.createStatement();
 | 
					            stmt = this.c.createStatement();
 | 
				
			||||||
        ResultSet rs = stmt.executeQuery( "SELECT * FROM users where username = \'" + uname + "\';" );
 | 
					            ResultSet rs = stmt.executeQuery("SELECT * FROM users where username = \'" + uname + "\';");
 | 
				
			||||||
        while ( rs.next() ) {
 | 
					            while (rs.next()) {
 | 
				
			||||||
            username = rs.getString("username");
 | 
					                username = rs.getString("username");
 | 
				
			||||||
            nachname = rs.getString("nachname");
 | 
					                nachname = rs.getString("nachname");
 | 
				
			||||||
            email = rs.getString("email");
 | 
					                email = rs.getString("email");
 | 
				
			||||||
            password = rs.getString("password");
 | 
					                password = rs.getString("password");
 | 
				
			||||||
            System.out.println( "username = " + username );
 | 
					                System.out.println("username = " + username);
 | 
				
			||||||
            System.out.println( "nachname = " + nachname );
 | 
					                System.out.println("nachname = " + nachname);
 | 
				
			||||||
            System.out.println( "email = " + email );
 | 
					                System.out.println("email = " + email);
 | 
				
			||||||
            System.out.println( "password = " + password );
 | 
					                System.out.println("password = " + password);
 | 
				
			||||||
            System.out.println();
 | 
					                System.out.println();
 | 
				
			||||||
        }
 | 
					            }
 | 
				
			||||||
        rs.close();
 | 
					            rs.close();
 | 
				
			||||||
        stmt.close();
 | 
					            stmt.close();
 | 
				
			||||||
        this.c.close();
 | 
					            this.c.close();
 | 
				
			||||||
        } catch ( Exception e ) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
            System.err.println( e.getClass().getName()+": "+ e.getMessage() );
 | 
					            System.err.println(e.getClass().getName() + ": " + e.getMessage());
 | 
				
			||||||
            System.exit(0);
 | 
					            System.exit(0);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
          System.out.println("Operation done successfully");
 | 
					        System.out.println("Operation done successfully");
 | 
				
			||||||
        return new User(new Credentials(username, password), username, username, email, new Coins(20));
 | 
					        return new User(new Credentials(username, password), username, username, email, new Coins(20));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Holt alle verfügbaren TradingDeals
 | 
					     * Holt alle verfügbaren TradingDeals
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
     * @return Alle Trading Deals
 | 
					     * @return Alle Trading Deals
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public ArrayList<TradingDeal> getAllTradingDeals(){
 | 
					    public ArrayList<TradingDeal> getAllTradingDeals() {
 | 
				
			||||||
        return this.tradingDeals;
 | 
					        return this.tradingDeals;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Holt alle verfügbaren Packages
 | 
					 | 
				
			||||||
     * @return Alle Packages
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    public ArrayList<Package> getAllPackages(){
 | 
					 | 
				
			||||||
        return this.packages;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Fügt einen neuen Tradingdeal zum at.reisinger.Store hinzu
 | 
					     * Fügt einen neuen Tradingdeal zum at.reisinger.Store hinzu
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
     * @param tradingDeal Der neue Deal
 | 
					     * @param tradingDeal Der neue Deal
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public void addTradingDeal(TradingDeal tradingDeal){
 | 
					    public void addTradingDeal(TradingDeal tradingDeal) {
 | 
				
			||||||
        this.tradingDeals.add(tradingDeal);
 | 
					        this.tradingDeals.add(tradingDeal);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//    /**
 | 
					 | 
				
			||||||
//     * Fügt ein neues at.reisinger.Package zu dem at.reisinger.Store hinzu
 | 
					 | 
				
			||||||
//     * @param packageDeal Das neue at.reisinger.Package
 | 
					 | 
				
			||||||
//     */
 | 
					 | 
				
			||||||
//    public void addPackage(at.reisinger.Package packageDeal){
 | 
					 | 
				
			||||||
//        this.packages.add(packageDeal);
 | 
					 | 
				
			||||||
//    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,60 @@
 | 
				
			|||||||
package at.reisinger.server.helper;
 | 
					package at.reisinger.server.helper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import at.reisinger.Card;
 | 
				
			||||||
 | 
					import at.reisinger.Cards;
 | 
				
			||||||
 | 
					import at.reisinger.Package;
 | 
				
			||||||
 | 
					import com.fasterxml.jackson.core.JsonProcessingException;
 | 
				
			||||||
 | 
					import com.fasterxml.jackson.core.type.TypeReference;
 | 
				
			||||||
 | 
					import com.fasterxml.jackson.databind.ObjectMapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Hilfsfunktionen für Jackson Json
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
public class JsonHelper {
 | 
					public class JsonHelper {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Wandelt ein Package in form einer ArrayList<Card> om ein Json um
 | 
				
			||||||
 | 
					     * @param listCards Cards die in dem Json stehen sollen
 | 
				
			||||||
 | 
					     * @param name Name des Packages
 | 
				
			||||||
 | 
					     * @return Json String des Packages
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static String packageListToJson(ArrayList<Card> listCards, String name){
 | 
				
			||||||
 | 
					        Package packageCards = new Package(new Cards(listCards),name, 5);
 | 
				
			||||||
 | 
					        return packageToJson(packageCards);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Wandelt ein Package Objekt in ein Json um
 | 
				
			||||||
 | 
					     * @param packageCards Package Objekt das in ein Json umgewandelt werden soll
 | 
				
			||||||
 | 
					     * @return Json String des Packages
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static String packageToJson(Package packageCards){
 | 
				
			||||||
 | 
					        ObjectMapper objectMapper = new ObjectMapper();
 | 
				
			||||||
 | 
					        objectMapper = new ObjectMapper();
 | 
				
			||||||
 | 
					        String packageJson = "";
 | 
				
			||||||
 | 
					        if(packageCards != null) {
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                packageJson += objectMapper.writeValueAsString(packageCards);
 | 
				
			||||||
 | 
					            } catch (JsonProcessingException e) {
 | 
				
			||||||
 | 
					                packageJson = "Error: JsonProcessingException -> " + e.getMessage();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return packageJson;
 | 
				
			||||||
 | 
					        }else{
 | 
				
			||||||
 | 
					            return null;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static Map<String, Object> jsonPayload2ToMap(String payload){
 | 
				
			||||||
 | 
					        ObjectMapper objectMapper = new ObjectMapper();
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            return objectMapper.readValue(payload, new TypeReference<Map<String,Object>>(){});
 | 
				
			||||||
 | 
					        } catch (JsonProcessingException e) {
 | 
				
			||||||
 | 
					            e.printStackTrace();
 | 
				
			||||||
 | 
					            return null;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										61
									
								
								src/main/java/at/reisinger/server/helper/PostgresHelper.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								src/main/java/at/reisinger/server/helper/PostgresHelper.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,61 @@
 | 
				
			|||||||
 | 
					package at.reisinger.server.helper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.sql.Connection;
 | 
				
			||||||
 | 
					import java.sql.DriverManager;
 | 
				
			||||||
 | 
					import java.sql.Statement;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Hilfsfunktionen für die verwendung der Postgres DB
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class PostgresHelper {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Verbindet mit der Datenbank
 | 
				
			||||||
 | 
					     * @return Das Connection Objekt
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static Connection con() {
 | 
				
			||||||
 | 
					        Connection c = null;
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            Class.forName("org.postgresql.Driver");
 | 
				
			||||||
 | 
					            c = DriverManager
 | 
				
			||||||
 | 
					                    .getConnection("jdbc:postgresql://postgres.dergeorg.at:5432/mtcg",
 | 
				
			||||||
 | 
					                            "user", "user");
 | 
				
			||||||
 | 
					        } catch (Exception e) {
 | 
				
			||||||
 | 
					            e.printStackTrace();
 | 
				
			||||||
 | 
					            System.err.println(e.getClass().getName() + ": " + e.getMessage());
 | 
				
			||||||
 | 
					            System.exit(0);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return c;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Führt ein Sql statement ohne rückgabe aus, mit message nachricht
 | 
				
			||||||
 | 
					     * @param sql Sql command
 | 
				
			||||||
 | 
					     * @return True bei erfolg, sonst false
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static boolean executeUpdateMessage(String sql, String message){
 | 
				
			||||||
 | 
					        boolean tmp = executeUpdate(sql);
 | 
				
			||||||
 | 
					        System.out.println(message);
 | 
				
			||||||
 | 
					        return tmp;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Führt ein Sql statement ohne rückgabe aus
 | 
				
			||||||
 | 
					     * @param sql Sql command
 | 
				
			||||||
 | 
					     * @return True bei erfolg, sonst false
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static boolean executeUpdate(String sql){
 | 
				
			||||||
 | 
					        Connection c = con();
 | 
				
			||||||
 | 
					        Statement stmt;
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            stmt = c.createStatement();
 | 
				
			||||||
 | 
					            stmt.executeUpdate(sql);
 | 
				
			||||||
 | 
					            stmt.close();
 | 
				
			||||||
 | 
					            c.close();
 | 
				
			||||||
 | 
					        } catch (Exception e) {
 | 
				
			||||||
 | 
					            System.err.println(e.getClass().getName() + ": " + e.getMessage());
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -2,10 +2,12 @@ package at.reisinger.server.objects;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import at.reisinger.*;
 | 
					import at.reisinger.*;
 | 
				
			||||||
import at.reisinger.Package;
 | 
					import at.reisinger.Package;
 | 
				
			||||||
 | 
					import at.reisinger.server.helper.JsonHelper;
 | 
				
			||||||
import at.reisinger.server.msg.MsgHandler;
 | 
					import at.reisinger.server.msg.MsgHandler;
 | 
				
			||||||
import com.fasterxml.jackson.core.JsonProcessingException;
 | 
					import com.fasterxml.jackson.core.JsonProcessingException;
 | 
				
			||||||
import com.fasterxml.jackson.core.type.TypeReference;
 | 
					import com.fasterxml.jackson.core.type.TypeReference;
 | 
				
			||||||
import com.fasterxml.jackson.databind.ObjectMapper;
 | 
					import com.fasterxml.jackson.databind.ObjectMapper;
 | 
				
			||||||
 | 
					import org.postgresql.shaded.com.ongres.scram.common.bouncycastle.pbkdf2.Pack;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.io.PrintStream;
 | 
					import java.io.PrintStream;
 | 
				
			||||||
import java.io.UnsupportedEncodingException;
 | 
					import java.io.UnsupportedEncodingException;
 | 
				
			||||||
@@ -28,8 +30,6 @@ public class Response {
 | 
				
			|||||||
    private String       url;
 | 
					    private String       url;
 | 
				
			||||||
    private String payload;
 | 
					    private String payload;
 | 
				
			||||||
    private String authString;
 | 
					    private String authString;
 | 
				
			||||||
    private MsgHandler msgHandler;
 | 
					 | 
				
			||||||
    private StringBuilder rqBuilder;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Nimmt die Daten des requests und generiert eine Response
 | 
					     * Nimmt die Daten des requests und generiert eine Response
 | 
				
			||||||
@@ -47,7 +47,6 @@ public class Response {
 | 
				
			|||||||
        this.cmd = cmd;
 | 
					        this.cmd = cmd;
 | 
				
			||||||
        this.out = out;
 | 
					        this.out = out;
 | 
				
			||||||
        this.payload = payload;
 | 
					        this.payload = payload;
 | 
				
			||||||
        this.rqBuilder = new StringBuilder();
 | 
					 | 
				
			||||||
        System.out.println(cmd);
 | 
					        System.out.println(cmd);
 | 
				
			||||||
        if (this.url != null) {
 | 
					        if (this.url != null) {
 | 
				
			||||||
            if (this.cmd.equals("GET")) {
 | 
					            if (this.cmd.equals("GET")) {
 | 
				
			||||||
@@ -70,20 +69,7 @@ public class Response {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    private void getMethodes(){
 | 
					    private void getMethodes(){
 | 
				
			||||||
        if (this.url.startsWith("/messages")) {
 | 
					        if (this.url.startsWith("/messages")) {
 | 
				
			||||||
            String lastBit = this.url.substring(this.url.lastIndexOf('/') + 1);
 | 
					 | 
				
			||||||
            System.out.println("Last Bit: " + lastBit);
 | 
					 | 
				
			||||||
            if(lastBit.equals("messages")){
 | 
					 | 
				
			||||||
                listAllMsg();
 | 
					 | 
				
			||||||
            }else{
 | 
					 | 
				
			||||||
                String message = msgHandler.getMsg(Integer.parseInt(lastBit)).getMsg();
 | 
					 | 
				
			||||||
                if(message == null){
 | 
					 | 
				
			||||||
                    sendError("404");
 | 
					 | 
				
			||||||
                }else {
 | 
					 | 
				
			||||||
                    sendResponse(message, "200");
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        } else if (this.url.startsWith("/")) {
 | 
					        } else if (this.url.startsWith("/")) {
 | 
				
			||||||
            startseite();
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -102,6 +88,12 @@ public class Response {
 | 
				
			|||||||
        return false;
 | 
					        return false;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Erstellt den basicAuth Base64 Token aus Username und Passwort
 | 
				
			||||||
 | 
					     * @param username Username für den Token
 | 
				
			||||||
 | 
					     * @param password Passwort für den Token
 | 
				
			||||||
 | 
					     * @return Der Base64 BasicAtuth String
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    private String basicAuthBase64(String username, String password){
 | 
					    private String basicAuthBase64(String username, String password){
 | 
				
			||||||
        String authString = username + ":" + password;
 | 
					        String authString = username + ":" + password;
 | 
				
			||||||
        //System.out.println("auth string: " + authString);
 | 
					        //System.out.println("auth string: " + authString);
 | 
				
			||||||
@@ -111,28 +103,33 @@ public class Response {
 | 
				
			|||||||
        return authStringEnc;
 | 
					        return authStringEnc;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private String basicAuthGetUsername(String authString) throws UnsupportedEncodingException {
 | 
					    /**
 | 
				
			||||||
 | 
					     * Aus dem Base64 BasicAuth String wird der Username extrahiert
 | 
				
			||||||
 | 
					     * @param authString Base64 BasicAuth String aus dem der Username ausgelesen werden soll
 | 
				
			||||||
 | 
					     * @return Der Username der in dem Base64 BasicAuth String ist
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String basicAuthGetUsername(String authString) {
 | 
				
			||||||
        String[] values;
 | 
					        String[] values;
 | 
				
			||||||
 | 
					        System.out.println("auth To username");
 | 
				
			||||||
        if (authString != null) {
 | 
					        if (authString != null) {
 | 
				
			||||||
            System.out.println("1");
 | 
					 | 
				
			||||||
            byte[] credDecoded = Base64.getDecoder().decode(authString);
 | 
					            byte[] credDecoded = Base64.getDecoder().decode(authString);
 | 
				
			||||||
            System.out.println("2");
 | 
					 | 
				
			||||||
            String credentials = new String(credDecoded);
 | 
					            String credentials = new String(credDecoded);
 | 
				
			||||||
            System.out.println("credentials:   ");
 | 
					 | 
				
			||||||
            System.out.println(credentials);
 | 
					 | 
				
			||||||
            // credentials = username:password
 | 
					 | 
				
			||||||
            values = credentials.split(":", 2);
 | 
					            values = credentials.split(":", 2);
 | 
				
			||||||
 | 
					            System.out.println("credentials:   ");
 | 
				
			||||||
 | 
					            System.out.println(values[0]);
 | 
				
			||||||
        }else{
 | 
					        }else{
 | 
				
			||||||
            values = null;
 | 
					            values = null;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return values[0];
 | 
					        return values[0];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Alle Post Methoden, siehe API beschreibung für genauere details
 | 
				
			||||||
 | 
					     * @throws JsonProcessingException Fehler beim de-/serialisieren
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    private void postMethodes() throws JsonProcessingException {
 | 
					    private void postMethodes() throws JsonProcessingException {
 | 
				
			||||||
        if (this.url.startsWith("/users")) {
 | 
					        if (this.url.startsWith("/users")) {
 | 
				
			||||||
            //payload to map
 | 
					            Map<String, Object> map = JsonHelper.jsonPayload2ToMap(this.payload);
 | 
				
			||||||
            ObjectMapper objectMapper = new ObjectMapper();
 | 
					 | 
				
			||||||
            Map<String, Object> map = objectMapper.readValue(this.payload, new TypeReference<Map<String,Object>>(){});
 | 
					 | 
				
			||||||
            String username = (String) map.get("Username");
 | 
					            String username = (String) map.get("Username");
 | 
				
			||||||
            String password = (String) map.get("Password");
 | 
					            String password = (String) map.get("Password");
 | 
				
			||||||
            User newUser = new User(new Credentials(username, password), username, username, "not implemented", new Coins(20));
 | 
					            User newUser = new User(new Credentials(username, password), username, username, "not implemented", new Coins(20));
 | 
				
			||||||
@@ -143,6 +140,7 @@ public class Response {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //User to json
 | 
					            //User to json
 | 
				
			||||||
 | 
					            ObjectMapper objectMapper = new ObjectMapper();
 | 
				
			||||||
            objectMapper = new ObjectMapper();
 | 
					            objectMapper = new ObjectMapper();
 | 
				
			||||||
            String userJson = "";
 | 
					            String userJson = "";
 | 
				
			||||||
            if(newUser != null) {
 | 
					            if(newUser != null) {
 | 
				
			||||||
@@ -156,9 +154,7 @@ public class Response {
 | 
				
			|||||||
                sendError("500");
 | 
					                sendError("500");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }else if (this.url.startsWith("/sessions")) {
 | 
					        }else if (this.url.startsWith("/sessions")) {
 | 
				
			||||||
            //payload to map
 | 
					            Map<String, Object> map = JsonHelper.jsonPayload2ToMap(this.payload);
 | 
				
			||||||
            ObjectMapper objectMapper = new ObjectMapper();
 | 
					 | 
				
			||||||
            Map<String, Object> map = objectMapper.readValue(this.payload, new TypeReference<Map<String,Object>>(){});
 | 
					 | 
				
			||||||
            String username = (String) map.get("Username");
 | 
					            String username = (String) map.get("Username");
 | 
				
			||||||
            String password = (String) map.get("Password");
 | 
					            String password = (String) map.get("Password");
 | 
				
			||||||
            User user = null;
 | 
					            User user = null;
 | 
				
			||||||
@@ -178,26 +174,14 @@ public class Response {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        }else if (this.url.startsWith("/packages")) {
 | 
					        }else if (this.url.startsWith("/packages")) {
 | 
				
			||||||
            if(basicAuth("admin", "admin", this.authString)){
 | 
					            if(basicAuth("admin", "admin", this.authString)){
 | 
				
			||||||
                System.out.println("1");
 | 
					 | 
				
			||||||
                ObjectMapper objectMapper = new ObjectMapper();
 | 
					                ObjectMapper objectMapper = new ObjectMapper();
 | 
				
			||||||
                System.out.println("2");
 | 
					 | 
				
			||||||
                ArrayList<Card> listCards = objectMapper.readValue(this.payload, new TypeReference<ArrayList<Card>>(){});
 | 
					                ArrayList<Card> listCards = objectMapper.readValue(this.payload, new TypeReference<ArrayList<Card>>(){});
 | 
				
			||||||
                System.out.println("List cards");
 | 
					 | 
				
			||||||
                System.out.println(listCards.toString());
 | 
					 | 
				
			||||||
                Package packageCards = new Package(new Cards(listCards), new DBConnection().nextPackageId()+"", 5);
 | 
					                Package packageCards = new Package(new Cards(listCards), new DBConnection().nextPackageId()+"", 5);
 | 
				
			||||||
                System.out.println("3");
 | 
					 | 
				
			||||||
                if(!new DBConnection().addPackage(packageCards)){
 | 
					                if(!new DBConnection().addPackage(packageCards)){
 | 
				
			||||||
                    sendError("500");
 | 
					                    sendError("500");
 | 
				
			||||||
                }else{
 | 
					                }else{
 | 
				
			||||||
                    //Package to json
 | 
					                    String packageJson = JsonHelper.packageToJson(packageCards);
 | 
				
			||||||
                    objectMapper = new ObjectMapper();
 | 
					                    if(packageJson != null) {
 | 
				
			||||||
                    String packageJson = "";
 | 
					 | 
				
			||||||
                    if(packageCards != null) {
 | 
					 | 
				
			||||||
                        try {
 | 
					 | 
				
			||||||
                            packageJson += objectMapper.writeValueAsString(packageCards);
 | 
					 | 
				
			||||||
                        } catch (JsonProcessingException e) {
 | 
					 | 
				
			||||||
                            packageJson = "Error: JsonProcessingException -> " + e.getMessage();
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                        sendResponse(packageJson, "201");
 | 
					                        sendResponse(packageJson, "201");
 | 
				
			||||||
                    }else{
 | 
					                    }else{
 | 
				
			||||||
                        sendError("500");
 | 
					                        sendError("500");
 | 
				
			||||||
@@ -206,32 +190,62 @@ public class Response {
 | 
				
			|||||||
            }else{
 | 
					            }else{
 | 
				
			||||||
                sendError("401");
 | 
					                sendError("401");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					        }else if (this.url.startsWith("/transactions/packages")) {
 | 
				
			||||||
 | 
					            if(login()){
 | 
				
			||||||
 | 
					                DBConnection db = new DBConnection();
 | 
				
			||||||
 | 
					                Package newPackage = db.userAcquirePackage(basicAuthGetUsername(this.authString));
 | 
				
			||||||
 | 
					                if (newPackage == null){
 | 
				
			||||||
 | 
					                    sendError("500");
 | 
				
			||||||
 | 
					                }else{
 | 
				
			||||||
 | 
					                    String packageJson = JsonHelper.packageToJson(newPackage);
 | 
				
			||||||
 | 
					                    if(packageJson == null){
 | 
				
			||||||
 | 
					                        sendError("500");
 | 
				
			||||||
 | 
					                    }else {
 | 
				
			||||||
 | 
					                        sendResponse(packageJson, "200");
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }else{
 | 
				
			||||||
 | 
					                sendError("401");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Prüft den Login, anhand des BasicAuth Base64 String
 | 
				
			||||||
 | 
					     * @return True wenn login daten korrekt, sonst false
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private boolean login(){
 | 
				
			||||||
 | 
					        String username = basicAuthGetUsername(this.authString);
 | 
				
			||||||
 | 
					        User user = null;
 | 
				
			||||||
 | 
					        DBConnection con = new DBConnection();
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            user = con.getUser(username);
 | 
				
			||||||
 | 
					        } catch (SQLException throwables) {
 | 
				
			||||||
 | 
					            throwables.printStackTrace();
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (basicAuth(user.getCredentials().getUsername(), user.getCredentials().getPasswort(), this.authString)){
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }else{
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Alle Put Methoden, siehe API beschreibung für genauere details
 | 
				
			||||||
 | 
					     * @throws JsonProcessingException Fehler beim de-/serialisieren
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    private void putMethodes(){
 | 
					    private void putMethodes(){
 | 
				
			||||||
        if (this.url.startsWith("/messages")) {
 | 
					        if (this.url.startsWith("/messages")) {
 | 
				
			||||||
            String lastBit = this.url.substring(this.url.lastIndexOf('/') + 1);
 | 
					 | 
				
			||||||
            System.out.println("Last Bit: " + lastBit);
 | 
					 | 
				
			||||||
            System.out.println("Payload" + this.payload);
 | 
					 | 
				
			||||||
            String message = msgHandler.editMsg(Integer.parseInt(lastBit), this.payload);
 | 
					 | 
				
			||||||
            if(message == null){
 | 
					 | 
				
			||||||
                sendError("404");
 | 
					 | 
				
			||||||
            }else {
 | 
					 | 
				
			||||||
                sendResponse("","200");
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Alle Delete Methoden, siehe API beschreibung für genauere details
 | 
				
			||||||
 | 
					     * @throws JsonProcessingException Fehler beim de-/serialisieren
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    private void deleteMethodes(){
 | 
					    private void deleteMethodes(){
 | 
				
			||||||
        if (this.url.startsWith("/messages")) {
 | 
					        if (this.url.startsWith("/messages")) {
 | 
				
			||||||
            String lastBit = this.url.substring(this.url.lastIndexOf('/') + 1);
 | 
					 | 
				
			||||||
            String message = msgHandler.delMsg(Integer.parseInt(lastBit));
 | 
					 | 
				
			||||||
            if(message == null){
 | 
					 | 
				
			||||||
                sendError("404");
 | 
					 | 
				
			||||||
            }else {
 | 
					 | 
				
			||||||
                sendResponse("", "200");
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -249,6 +263,9 @@ public class Response {
 | 
				
			|||||||
        //out.print(responseText);
 | 
					        //out.print(responseText);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Sendet eine Startseite, mit allen befehlen und wie man diese verwendet
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void startseite() {
 | 
					    private void startseite() {
 | 
				
			||||||
        sendResponse("lists all messages:   GET    /messages<br>" +
 | 
					        sendResponse("lists all messages:   GET    /messages<br>" +
 | 
				
			||||||
                "add message:          POST   /messages     (Payload: the message; Response an id like1)<br>" +
 | 
					                "add message:          POST   /messages     (Payload: the message; Response an id like1)<br>" +
 | 
				
			||||||
@@ -257,11 +274,7 @@ public class Response {
 | 
				
			|||||||
                "update first message: PUT    /messages/1   (Payload: the message)<br>" +
 | 
					                "update first message: PUT    /messages/1   (Payload: the message)<br>" +
 | 
				
			||||||
                "remove first message: DELETE /messages/1<br>", "200");
 | 
					                "remove first message: DELETE /messages/1<br>", "200");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    private void listAllMsg() {
 | 
					 | 
				
			||||||
        sendResponse(msgHandler.getAllMsg(), "200");
 | 
					 | 
				
			||||||
        //sendResponse("Test");
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Sendet eine Response
 | 
					     * Sendet eine Response
 | 
				
			||||||
@@ -276,14 +289,4 @@ public class Response {
 | 
				
			|||||||
        out.print("\r\n");
 | 
					        out.print("\r\n");
 | 
				
			||||||
        out.print(responseText);
 | 
					        out.print(responseText);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Get Msg Handler
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @return msgHandler Handler der Nachrichten
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    public MsgHandler getMsghandler() {
 | 
					 | 
				
			||||||
        return this.msgHandler;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user