Test Parser + Trigger
This commit is contained in:
parent
4db724e2af
commit
d880d4eebe
5 changed files with 106 additions and 39 deletions
|
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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))) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue