Skip to content

Commit f8c2b7c

Browse files
committed
add default keywords to sql code area
1 parent 2102468 commit f8c2b7c

2 files changed

Lines changed: 34 additions & 10 deletions

File tree

src/main/java/gr/sqlbrowserfx/nodes/codeareas/sql/CSqlCodeArea.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,6 @@ public class CSqlCodeArea extends SqlCodeArea {
2626

2727
private PopOver saveQueryPopOver;
2828

29-
public CSqlCodeArea() {
30-
super();
31-
}
32-
3329
@Override
3430
public ContextMenu createContextMenu() {
3531
var menu = super.createContextMenu();

src/main/java/gr/sqlbrowserfx/nodes/codeareas/sql/SqlCodeAreaSyntaxProvider.java

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import java.util.regex.Matcher;
1313
import java.util.regex.Pattern;
1414
import java.util.stream.Collectors;
15+
import java.util.stream.Stream;
1516

1617
import org.slf4j.Logger;
1718
import org.slf4j.LoggerFactory;
@@ -32,9 +33,27 @@ public class SqlCodeAreaSyntaxProvider implements CodeAreaSyntaxProvider<String>
3233
private static String DB_TYPE = "";
3334
private static List<String> FUNCTIONS;
3435
private static List<String> TYPES;
35-
private static List<String> KEYWORDS;
36-
37-
private static final Set<Keyword> KEYWORDS_lIST = new LinkedHashSet<>();
36+
private static List<String> KEYWORDS = Arrays.asList(new String[] {
37+
"add","ADD","all","ALL","alter","ALTER","and","AND","any","ANY",
38+
"as","AS","asc","ASC","backup","BACKUP","between","BETWEEN","by","BY",
39+
"case","CASE","check","CHECK","column","COLUMN","constraint","CONSTRAINT","create","CREATE",
40+
"database","DATABASE","default","DEFAULT","delete","DELETE","desc","DESC","distinct","DISTINCT",
41+
"drop","DROP","else","ELSE","end","END","exists","EXISTS","foreign","FOREIGN",
42+
"from","FROM","full","FULL","group","GROUP","having","HAVING","in","IN",
43+
"index","INDEX","inner","INNER","insert","INSERT","into","INTO","is","IS",
44+
"join","JOIN","key","KEY","left","LEFT","like","LIKE","limit","LIMIT",
45+
"not","NOT","null","NULL","on","ON","or","OR","order","ORDER",
46+
"outer","OUTER","primary","PRIMARY","procedure","PROCEDURE","right","RIGHT","rownum","ROWNUM",
47+
"select","SELECT","set","SET","table","TABLE","top","TOP","truncate","TRUNCATE",
48+
"union","UNION","unique","UNIQUE","update","UPDATE","values","VALUES","view","VIEW",
49+
"where","WHERE","with","WITH","grant","GRANT","revoke","REVOKE","commit","COMMIT",
50+
"rollback","ROLLBACK","savepoint","SAVEPOINT","transaction","TRANSACTION","cascade","CASCADE","restrict","RESTRICT",
51+
"replace","REPLACE","declare","DECLARE","cursor","CURSOR","fetch","FETCH","open","OPEN",
52+
"close","CLOSE","loop","LOOP","while","WHILE","if","IF","then","THEN",
53+
"elsif","ELSIF","return","RETURN","language","LANGUAGE","function","FUNCTION","trigger","TRIGGER"
54+
});
55+
56+
private static final Set<Keyword> KEYWORDS_lIST = new LinkedHashSet<>(KEYWORDS.stream().map(word -> new Keyword(word, KeywordType.KEYWORD)).toList());
3857
private static final Map<String, Set<String>> COLUMNS_MAP = new HashMap<>();
3958

4059
private static final String PAREN_PATTERN = "\\(|\\)";
@@ -46,9 +65,13 @@ public class SqlCodeAreaSyntaxProvider implements CodeAreaSyntaxProvider<String>
4665
// private static final String NUMBERS_PATTERN = "[0-9]+";
4766
private static final String METHOD_PATTERN = "\\.[a-zA-Z0-9_]+";
4867

49-
private static String KEYWORD_PATTERN;
68+
private static String KEYWORD_PATTERN = "\\b(" + String.join("|", KEYWORDS) + ")\\b";
5069
private static String FUNCTIONS_PATTERN;
51-
private static Pattern PATTERN;
70+
private static Pattern PATTERN = Pattern.compile("(?<KEYWORD>" + KEYWORD_PATTERN + ")" + "|(?<PAREN>" + PAREN_PATTERN + ")"
71+
+ "|(?<SEMICOLON>" + SEMICOLON_PATTERN + ")" + "|(?<STRING>" + STRING_PATTERN + ")"
72+
+ "|(?<STRING2>" + STRING_PATTERN_2 + ")" + "|(?<COMMENT>" + COMMENT_PATTERN + ")" + "|(?<METHOD>" + METHOD_PATTERN + ")"
73+
);
74+
5275

5376
public static void init(String dbType) {
5477
DB_TYPE = dbType;
@@ -59,7 +82,12 @@ private static void init() {
5982
var funcs = getAutocomplteWords("funcs");
6083
FUNCTIONS = funcs.stream().map(dto -> (String) dto.get("name")).toList();
6184
TYPES = getAutocomplteWords("types").stream().map(dto -> (String) dto.get("name")).toList();
62-
KEYWORDS = getAutocomplteWords("sql").stream().map(dto -> (String) dto.get("name")).toList();
85+
KEYWORDS = Stream.concat(
86+
KEYWORDS.stream(),
87+
getAutocomplteWords("sql").stream().map(dto -> (String) dto.get("name"))
88+
)
89+
.distinct()
90+
.collect(Collectors.toList());
6391

6492
KEYWORD_PATTERN = "\\b(" + String.join("|", KEYWORDS) + ")\\b";
6593
FUNCTIONS_PATTERN = "\\b(" + String.join("|", FUNCTIONS) + ")\\b";

0 commit comments

Comments
 (0)