package org.n3r.eql.map;
import org.n3r.eql.util.O;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public enum EqlType {
SELECT, UPDATE, INSERT, MERGE, DELETE,
DROP, CREATE, TRUNCATE, CALL, COMMENT, ALTER, BEGIN, DECLARE,
REPLACE, UNKOWN;
public boolean isUpdateStmt() {
switch (this) {
case UPDATE:
case MERGE:
case DELETE:
case INSERT:
case REPLACE:
return true;
default:
break;
}
return false;
}
public boolean isDdl() {
switch (this) {
case CREATE:
case DROP:
case TRUNCATE:
case ALTER:
case COMMENT:
return true;
default:
break;
}
return false;
}
public boolean isSelect() {
return this == SELECT;
}
public boolean isProcedure() {
return O.in(this, CALL, DECLARE, BEGIN);
}
private static Pattern FIRST_WORD = Pattern.compile("(\\s*/\\*\\s*.*?\\s*\\*/)?\\s*(\\w+)\\b");
public static EqlType parseSqlType(String rawSql) {
Matcher matcher = FIRST_WORD.matcher(rawSql);
matcher.find();
String firstWord = matcher.group(2).toUpperCase();
try {
return EqlType.valueOf(firstWord);
} catch (IllegalArgumentException e) {
return UNKOWN;
}
}
}