From d880d4eebe8960757caec3ce4853c570b6982ae3 Mon Sep 17 00:00:00 2001 From: jeffcheasey88 <66554203+jeffcheasey88@users.noreply.github.com> Date: Mon, 17 Apr 2023 15:08:36 +0200 Subject: [PATCH] Test Parser + Trigger --- .../peeratcode/parser/java/CleanerPool.java | 34 +++++++--- .../peeratcode/parser/java/JavaParser.java | 2 +- .../peeratcode/parser/java/Variable.java | 1 - .../peeratcode/repository/DatabaseQuery.java | 44 +++++-------- .../repository/DatabaseRepository.java | 64 ++++++++++++++++++- 5 files changed, 106 insertions(+), 39 deletions(-) diff --git a/src/be/jeffcheasey88/peeratcode/parser/java/CleanerPool.java b/src/be/jeffcheasey88/peeratcode/parser/java/CleanerPool.java index 4c422dd..36b50f0 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/java/CleanerPool.java +++ b/src/be/jeffcheasey88/peeratcode/parser/java/CleanerPool.java @@ -6,15 +6,14 @@ import java.util.regex.Pattern; public class CleanerPool { - public static CleanerPool getterToDelete = new CleanerPool(); - - private static String CONSTANT_REPLACER = "$STRING_STATEMENT_CONSTANT_"; + private static String CONSTANT_REPLACER_STRING = "$STRING_STATEMENT_CONSTANT_"; + private static String CONSTANT_REPLACER_CHAR = "$CHAR_STATEMENT_CONSTANT_"; + private static String CONSTANT_REPLACER_GENERIC = "$GENERIC_STATEMENT_CONSTANT_"; private List constants; private CleanerPool(){ this.constants = new ArrayList<>(); - getterToDelete = this; } public String clean(String statement){ @@ -26,7 +25,7 @@ public class CleanerPool { int constantPos = this.constants.size(); String constant = cutConstant(chars, i); i+=constant.length()+1; - builder.append(CONSTANT_REPLACER+constantPos); + builder.append(CONSTANT_REPLACER_STRING+constantPos); this.constants.add(constant); }else{ builder.append(current); @@ -40,12 +39,12 @@ public class CleanerPool { } public boolean isConstant(String region){ - return region.startsWith(CONSTANT_REPLACER); + return region.startsWith(CONSTANT_REPLACER_STRING); } public String getConstant(String replacer){ - if(!replacer.startsWith(CONSTANT_REPLACER)) return null; - return this.constants.get(Integer.parseInt(replacer.replace(CONSTANT_REPLACER,""))); + if(!replacer.startsWith(CONSTANT_REPLACER_STRING)) return null; + return this.constants.get(Integer.parseInt(replacer.replace(CONSTANT_REPLACER_STRING,""))); } public List getConstants(){ @@ -73,4 +72,23 @@ public class CleanerPool { return builder.toString(); } + public static interface Cutter{ + + String execute(String value, List constants, String pattern); + + default String cutOpenable(String value, List constants, String pattern, char open, char close){ + StringBuilder builder = new StringBuilder(); + + for(char c : value.toCharArray()){ + if(c == open){ + + }else if(c == close){ + + } + } + + return builder.toString(); + } + + } } \ No newline at end of file diff --git a/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java b/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java index 644c912..12043c9 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java +++ b/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java @@ -36,7 +36,7 @@ public class JavaParser { String line; while((line = reader.readLine()) != null) content+=line; - content = CleanerPool.getterToDelete.clean(content); +// content = CleanerPool.getterToDelete.clean(content); this.pack = new Package(); index = this.pack.parse(content); diff --git a/src/be/jeffcheasey88/peeratcode/parser/java/Variable.java b/src/be/jeffcheasey88/peeratcode/parser/java/Variable.java index 791cf9b..c41fa29 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/java/Variable.java +++ b/src/be/jeffcheasey88/peeratcode/parser/java/Variable.java @@ -77,7 +77,6 @@ public class Variable { } result+=c; } - System.out.println(result); result = result.replaceAll("(>\\s*)", "> ").replace("> >", ">>"); return result; } diff --git a/src/be/jeffcheasey88/peeratcode/repository/DatabaseQuery.java b/src/be/jeffcheasey88/peeratcode/repository/DatabaseQuery.java index 21afb32..08ec3b5 100644 --- a/src/be/jeffcheasey88/peeratcode/repository/DatabaseQuery.java +++ b/src/be/jeffcheasey88/peeratcode/repository/DatabaseQuery.java @@ -71,28 +71,22 @@ public enum DatabaseQuery { + " ON completions FOR EACH ROW\r\n" + "BEGIN\r\n" + " DECLARE badge INT;\r\n" - + " DECLARE player INT;\r\n" + " DECLARE contain INT;\r\n" - + "\r\n" + + " \r\n" + " SELECT id_badge\r\n" - + " INTO badge\r\n" + + " INTO @badge\r\n" + " FROM badges\r\n" + " WHERE name = 'FirstTry';\r\n" - + "\r\n" + + " \r\n" + " IF @badge is not null THEN\r\n" - + "\r\n" - + " SELECT fk_player\r\n" - + " INTO player\r\n" - + " FROM inserted;\r\n" - + "\r\n" + + " \r\n" + " SELECT count(*)\r\n" - + " INTO contain\r\n" + + " INTO @contain\r\n" + " FROM containsBadges\r\n" - + " WHERE fk_badge = badge AND fk_player = player;\r\n" - + "\r\n" + + " WHERE fk_badge = @badge AND fk_player = NEW.fk_player;\r\n" + + " \r\n" + " IF (@contain = 0) THEN\r\n" - + "\r\n" - + " INSERT INTO containsBadges(fk_player, fk_badge) VALUES (@player, @badge);\r\n" + + " INSERT INTO containsBadges(fk_player, fk_badge) VALUES (NEW.fk_player, @badge);\r\n" + " END IF;\r\n" + " END IF;\r\n" + "END;"), @@ -180,28 +174,22 @@ AFTER INSERT ON completions FOR EACH ROW BEGIN DECLARE badge INT; - DECLARE player INT; DECLARE contain INT; - + SELECT id_badge - INTO badge + INTO @badge FROM badges WHERE name = 'FirstTry'; - + IF @badge is not null THEN - - SELECT fk_player - INTO player - FROM inserted; - + SELECT count(*) - INTO contain + INTO @contain FROM containsBadges - WHERE fk_badge = badge AND fk_player = player; - + WHERE fk_badge = @badge AND fk_player = NEW.fk_player; + IF (@contain = 0) THEN - - INSERT INTO containsBadges(fk_player, fk_badge) VALUES (@player, @badge); + INSERT INTO containsBadges(fk_player, fk_badge) VALUES (NEW.fk_player, @badge); END IF; END IF; END; diff --git a/src/be/jeffcheasey88/peeratcode/repository/DatabaseRepository.java b/src/be/jeffcheasey88/peeratcode/repository/DatabaseRepository.java index 8c7ad59..800da2b 100644 --- a/src/be/jeffcheasey88/peeratcode/repository/DatabaseRepository.java +++ b/src/be/jeffcheasey88/peeratcode/repository/DatabaseRepository.java @@ -31,7 +31,69 @@ public class DatabaseRepository { public DatabaseRepository(Configuration config) { this.config = config; - } + } +// testTrigger(); +// } +// +// private void testTrigger(){ +// try { +// ensureConnection(); +// }catch(Exception e){ +// e.printStackTrace(); +// } +// System.out.println("connection ensured"); +// +// try { +// PreparedStatement log = this.con.prepareStatement("DROP TABLE mycustomlog;"); +// log.execute(); +// }catch(Exception e){ +// e.printStackTrace(); +// } +// System.out.println("log dropped"); +// +// try { +// PreparedStatement log = this.con.prepareStatement("CREATE TABLE mycustomlog(\r\n" +// + " message VARCHAR(255),\r\n" +// + " primary key (message)\r\n" +// + ");"); +// log.execute(); +// }catch(Exception e){ +// e.printStackTrace(); +// } +// System.out.println("log created"); +// +// try { +// System.out.println(DatabaseQuery.FIRST_TRY.toString()); +// DatabaseQuery.FIRST_TRY.prepare(this.con).execute(); +// }catch(Exception e){ +// e.printStackTrace(); +// } +// +// System.out.println("trigger inserted"); +// +// try { +// insertCompletion(new Completion(1, 1, 1, null, 1)); +// } catch (SQLException e1) { +// e1.printStackTrace(); +// } +// +// try { +// showLog(); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// System.out.println("------------------------------"); +// } +// +// private void showLog() throws Exception{ +// ensureConnection(); +// +// PreparedStatement stmt = this.con.prepareStatement("SELECT * FROM mycustomlog"); +// ResultSet result = stmt.executeQuery(); +// while(result.next()){ +// System.out.println("[LOG] "+result.getString("message")); +// } +// } private void ensureConnection() throws SQLException { if (con == null || (!con.isValid(5))) {