From 6c863aa7fcc7b90287483c4b10aee578801cbd46 Mon Sep 17 00:00:00 2001 From: Maxim Derksen Date: Thu, 3 Mar 2022 11:20:18 +0100 Subject: [PATCH] (Properly) added push and pull Stats --- Query.java | 49 +++++++++++++------ WordleServer.java | 122 +++++++++++++++++++++++----------------------- 2 files changed, 94 insertions(+), 77 deletions(-) diff --git a/Query.java b/Query.java index ab1af0a..f9c9515 100644 --- a/Query.java +++ b/Query.java @@ -1,24 +1,41 @@ public class Query { - DatabaseConnector db; + DatabaseConnector db; - Query(){ - db = new DatabaseConnector("", 0, "wordle.db", "", ""); - } - public void pullStats(User user){ - String[][] r; - db.executeStatement("SELECT * FROM user WHERE user LIKE" + user.username); - r = db.getCurrentQueryResult().getData(); - } + Query() { + db = new DatabaseConnector("", 0, "wordle.db", "", ""); + } - public void pushStats(User user){ + public void pullStats(User user) { + String[][] r; + db.executeStatement("SELECT * FROM user WHERE user LIKE" + user.username); + r = db.getCurrentQueryResult().getData(); + user.currentStreak = Integer.parseInt(r[1][0]); + user.maxStreak = Integer.parseInt(r[2][0]); + user.wins = Integer.parseInt(r[3][0]); + user.timesPlayed = Integer.parseInt(r[4][0]); + user.wonInTurn[0] = Integer.parseInt(r[5][0]); + user.wonInTurn[1] = Integer.parseInt(r[6][0]); + user.wonInTurn[2] = Integer.parseInt(r[7][0]); + user.wonInTurn[3] = Integer.parseInt(r[8][0]); + user.wonInTurn[4] = Integer.parseInt(r[9][0]); + user.wonInTurn[5] = Integer.parseInt(r[10][0]); + user.lastDayWOTDFinished = Integer.parseInt(r[11][0]); - } + } - public void checkLogin(String username, String password){ + public void pushStats(User user) { + db.executeStatement("UPDATE INTO Stats (current_streak," + " max_streak, " + "wins, " + "times_played, " + + "won_on_1, " + "won_on_2, " + "won_on_3, " + "won_on_4, " + "won_on_5, " + "won_on_6, " + + "last_day_WOTD_finished) " + "VALUES (" + user.currentStreak + user.maxStreak + user.wins + + user.timesPlayed + user.wonInTurn[0] + user.wonInTurn[1] + user.wonInTurn[2] + user.wonInTurn[3] + + user.wonInTurn[4] + user.wonInTurn[5] + user.lastDayWOTDFinished + ")"); + } - } + public boolean checkLogin(String username, String password) { + return false; + } - public String getWord(){ - return ""; - } + public String getWord() { + return ""; + } } diff --git a/WordleServer.java b/WordleServer.java index 08c4cb5..18508f0 100644 --- a/WordleServer.java +++ b/WordleServer.java @@ -5,79 +5,79 @@ import java.util.HashMap; */ public class WordleServer extends Server { - public static final int DEFAULT_PORT = 1000; + public static final int DEFAULT_PORT = 1000; - public static void main( String[] args ) { - new WordleServer(); - } + public static void main(String[] args) { + new WordleServer(); + } + private DatabaseConnector db; - private DatabaseConnector db; + private HashMap users; + private Query query; - private HashMapusers; - private Query query; + public WordleServer() { + this(DEFAULT_PORT); + } + public WordleServer(int pPort) { + super(pPort); + query = new Query(); + db = new DatabaseConnector("", 0, "wordle.db", "", ""); + users = new HashMap<>(); + } - public WordleServer() { - this(DEFAULT_PORT); - } + @Override + public void processNewConnection(String pClientIP, int pClientPort) { + String connectionID = pClientIP + ":" + Integer.toString(pClientPort); + User u = new User(connectionID); + users.put(connectionID, u); + send(pClientIP, pClientPort, "+OK Verbindung zum Wordle Server erfolgreich aufgebaut"); + u.setState(1); - public WordleServer( int pPort ) { - super(pPort); - query = new Query(); - db = new DatabaseConnector("", 0, "wordle.db", "", ""); - users = new HashMap<>(); - } + } - @Override - public void processNewConnection( String pClientIP, int pClientPort ) { - String connectionID= pClientIP +":"+ Integer.toString(pClientPort); - User u = new User(connectionID); - users.put(connectionID,u); - send(pClientIP,pClientPort,"+OK Verbindung zum Wordle Server erfolgreich aufgebaut"); - u.setState(1); + @Override + public void processClosingConnection(String pClientIP, int pClientPort) { - } + } - @Override - public void processClosingConnection( String pClientIP, int pClientPort ) { + @Override + public void processMessage(String pClientIP, int pClientPort, String pMessage) { + String conectionID = pClientIP + ":" + Integer.toString(pClientPort); + User u = users.get(conectionID); + if (pMessage.equals("QUIT")) { + send(pClientIP, pClientPort, "+OK Bye"); + close(); + } else { + send(pClientIP, pClientPort, "-ERR Command not valid in this state"); + } - } - - @Override - public void processMessage( String pClientIP, int pClientPort, String pMessage ) { - String conectionID = pClientIP + ":" + Integer.toString(pClientPort); - User u = users.get(conectionID); - - if(pMessage.equals("QUIT")) { - send(pClientIP, pClientPort, "+OK Bye"); - close(); - } else { - send(pClientIP,pClientPort,"-ERR Command not valid in this state"); - } - - switch(u.getState()){ - case 1: - //Anmeldephase - String m = pMessage.substring(0,3); - if(m.equalsIgnoreCase("USER")){ - m = pMessage.substring(6,pMessage.length()-1); - u.setUsername(m); - } else if(m.equalsIgnoreCase("PASS")){ - m = pMessage.substring(6,pMessage.length()-1); - u.setPassword(m); - } - break; - case 2: - //Spielphase - break; - case 3: - //Zwischenphase(Angemeldet) - break; - - } - } + switch (u.getState()) { + case 1: + // Anmeldephase + String m = pMessage.substring(0, 3); + if (m.equalsIgnoreCase("USER")) { + m = pMessage.substring(6, pMessage.length() - 1); + u.setUsername(m); + send(pClientIP, pClientPort, "+OK Bye"); + } else if (m.equalsIgnoreCase("PASS")) { + m = pMessage.substring(6, pMessage.length() - 1); + u.setPassword(m); + if (u.getPassword() != null && u.getUsername() != null) { + query.checkLogin(u.getUsername(), u.getPassword()); + } + } + break; + case 2: + // Spielphase + break; + case 3: + // Zwischenphase(Angemeldet) + break; + } + } }