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 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<String> 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<String> getConstants(){
|
||||
|
@ -73,4 +72,23 @@ public class CleanerPool {
|
|||
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;
|
||||
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);
|
||||
|
|
|
@ -77,7 +77,6 @@ public class Variable {
|
|||
}
|
||||
result+=c;
|
||||
}
|
||||
System.out.println(result);
|
||||
result = result.replaceAll("(>\\s*)", "> ").replace("> >", ">>");
|
||||
return result;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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))) {
|
||||
|
|
Loading…
Add table
Reference in a new issue