Test Parser + Trigger

This commit is contained in:
jeffcheasey88 2023-04-17 15:08:36 +02:00
parent 4db724e2af
commit d880d4eebe
5 changed files with 106 additions and 39 deletions

View file

@ -6,15 +6,14 @@ import java.util.regex.Pattern;
public class CleanerPool { public class CleanerPool {
public static CleanerPool getterToDelete = new CleanerPool(); private static String CONSTANT_REPLACER_STRING = "$STRING_STATEMENT_CONSTANT_";
private static String CONSTANT_REPLACER_CHAR = "$CHAR_STATEMENT_CONSTANT_";
private static String CONSTANT_REPLACER = "$STRING_STATEMENT_CONSTANT_"; private static String CONSTANT_REPLACER_GENERIC = "$GENERIC_STATEMENT_CONSTANT_";
private List<String> constants; private List<String> constants;
private CleanerPool(){ private CleanerPool(){
this.constants = new ArrayList<>(); this.constants = new ArrayList<>();
getterToDelete = this;
} }
public String clean(String statement){ public String clean(String statement){
@ -26,7 +25,7 @@ public class CleanerPool {
int constantPos = this.constants.size(); int constantPos = this.constants.size();
String constant = cutConstant(chars, i); String constant = cutConstant(chars, i);
i+=constant.length()+1; i+=constant.length()+1;
builder.append(CONSTANT_REPLACER+constantPos); builder.append(CONSTANT_REPLACER_STRING+constantPos);
this.constants.add(constant); this.constants.add(constant);
}else{ }else{
builder.append(current); builder.append(current);
@ -40,12 +39,12 @@ public class CleanerPool {
} }
public boolean isConstant(String region){ public boolean isConstant(String region){
return region.startsWith(CONSTANT_REPLACER); return region.startsWith(CONSTANT_REPLACER_STRING);
} }
public String getConstant(String replacer){ public String getConstant(String replacer){
if(!replacer.startsWith(CONSTANT_REPLACER)) return null; if(!replacer.startsWith(CONSTANT_REPLACER_STRING)) return null;
return this.constants.get(Integer.parseInt(replacer.replace(CONSTANT_REPLACER,""))); return this.constants.get(Integer.parseInt(replacer.replace(CONSTANT_REPLACER_STRING,"")));
} }
public List<String> getConstants(){ public List<String> getConstants(){
@ -73,4 +72,23 @@ public class CleanerPool {
return builder.toString(); return builder.toString();
} }
public static interface Cutter{
String execute(String value, List<String> constants, String pattern);
default String cutOpenable(String value, List<String> 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();
}
}
} }

View file

@ -36,7 +36,7 @@ public class JavaParser {
String line; String line;
while((line = reader.readLine()) != null) content+=line; while((line = reader.readLine()) != null) content+=line;
content = CleanerPool.getterToDelete.clean(content); // content = CleanerPool.getterToDelete.clean(content);
this.pack = new Package(); this.pack = new Package();
index = this.pack.parse(content); index = this.pack.parse(content);

View file

@ -77,7 +77,6 @@ public class Variable {
} }
result+=c; result+=c;
} }
System.out.println(result);
result = result.replaceAll("(>\\s*)", "> ").replace("> >", ">>"); result = result.replaceAll("(>\\s*)", "> ").replace("> >", ">>");
return result; return result;
} }

View file

@ -71,28 +71,22 @@ public enum DatabaseQuery {
+ " ON completions FOR EACH ROW\r\n" + " ON completions FOR EACH ROW\r\n"
+ "BEGIN\r\n" + "BEGIN\r\n"
+ " DECLARE badge INT;\r\n" + " DECLARE badge INT;\r\n"
+ " DECLARE player INT;\r\n"
+ " DECLARE contain INT;\r\n" + " DECLARE contain INT;\r\n"
+ "\r\n" + " \r\n"
+ " SELECT id_badge\r\n" + " SELECT id_badge\r\n"
+ " INTO badge\r\n" + " INTO @badge\r\n"
+ " FROM badges\r\n" + " FROM badges\r\n"
+ " WHERE name = 'FirstTry';\r\n" + " WHERE name = 'FirstTry';\r\n"
+ "\r\n" + " \r\n"
+ " IF @badge is not null THEN\r\n" + " IF @badge is not null THEN\r\n"
+ "\r\n" + " \r\n"
+ " SELECT fk_player\r\n"
+ " INTO player\r\n"
+ " FROM inserted;\r\n"
+ "\r\n"
+ " SELECT count(*)\r\n" + " SELECT count(*)\r\n"
+ " INTO contain\r\n" + " INTO @contain\r\n"
+ " FROM containsBadges\r\n" + " FROM containsBadges\r\n"
+ " WHERE fk_badge = badge AND fk_player = player;\r\n" + " WHERE fk_badge = @badge AND fk_player = NEW.fk_player;\r\n"
+ "\r\n" + " \r\n"
+ " IF (@contain = 0) THEN\r\n" + " IF (@contain = 0) THEN\r\n"
+ "\r\n" + " INSERT INTO containsBadges(fk_player, fk_badge) VALUES (NEW.fk_player, @badge);\r\n"
+ " INSERT INTO containsBadges(fk_player, fk_badge) VALUES (@player, @badge);\r\n"
+ " END IF;\r\n" + " END IF;\r\n"
+ " END IF;\r\n" + " END IF;\r\n"
+ "END;"), + "END;"),
@ -180,28 +174,22 @@ AFTER INSERT
ON completions FOR EACH ROW ON completions FOR EACH ROW
BEGIN BEGIN
DECLARE badge INT; DECLARE badge INT;
DECLARE player INT;
DECLARE contain INT; DECLARE contain INT;
SELECT id_badge SELECT id_badge
INTO badge INTO @badge
FROM badges FROM badges
WHERE name = 'FirstTry'; WHERE name = 'FirstTry';
IF @badge is not null THEN IF @badge is not null THEN
SELECT fk_player
INTO player
FROM inserted;
SELECT count(*) SELECT count(*)
INTO contain INTO @contain
FROM containsBadges FROM containsBadges
WHERE fk_badge = badge AND fk_player = player; WHERE fk_badge = @badge AND fk_player = NEW.fk_player;
IF (@contain = 0) THEN IF (@contain = 0) THEN
INSERT INTO containsBadges(fk_player, fk_badge) VALUES (NEW.fk_player, @badge);
INSERT INTO containsBadges(fk_player, fk_badge) VALUES (@player, @badge);
END IF; END IF;
END IF; END IF;
END; END;

View file

@ -31,7 +31,69 @@ public class DatabaseRepository {
public DatabaseRepository(Configuration config) { public DatabaseRepository(Configuration config) {
this.config = 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 { private void ensureConnection() throws SQLException {
if (con == null || (!con.isValid(5))) { if (con == null || (!con.isValid(5))) {