Skip to content

Commit f9639f3

Browse files
committed
Add support for additional Oracle SQL functions and enhance token management
1 parent f1697b9 commit f9639f3

File tree

2 files changed

+105
-25
lines changed

2 files changed

+105
-25
lines changed

src/main/java/org/domaframework/doma/intellij/SqlTokenHelper.java

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,22 +26,36 @@
2626

2727
public class SqlTokenHelper {
2828

29+
static final Set<String> KEYWORD_TOKENS = new HashSet<>();
30+
static final Set<String> DATA_TYPE_TOKENS = new HashSet<>();
31+
static final Set<String> FUNCTION_TOKENS = new HashSet<>();
32+
33+
static {
34+
// Initialize keyword tokens
35+
KEYWORD_TOKENS.addAll(SqlKeywordTokenUtil.getTokens());
36+
37+
// Initialize DataType tokens
38+
DATA_TYPE_TOKENS.addAll(SqlDataTypeTokenUtil.getTokens());
39+
40+
// Initialize function tokens
41+
FUNCTION_TOKENS.addAll(SqlFunctionToken.getTokens());
42+
FUNCTION_TOKENS.addAll(PostgresSqlFunctionToken.getTokens());
43+
FUNCTION_TOKENS.addAll(MySqlFunctionToken.getTokens());
44+
FUNCTION_TOKENS.addAll(OracleFunctionToken.getTokens());
45+
}
46+
47+
// Keywords
2948
public static Set<String> getKeyword() {
30-
return SqlKeywordTokenUtil.getTokens();
49+
return KEYWORD_TOKENS;
3150
}
3251

52+
// Data Types
3353
public static Set<String> getDataTypeTokens() {
34-
return SqlDataTypeTokenUtil.getTokens();
54+
return DATA_TYPE_TOKENS;
3555
}
3656

3757
// Functions
3858
public static Set<String> getFunctionTokens() {
39-
Set<String> tokens = new HashSet<>(SqlFunctionToken.getTokens());
40-
tokens.addAll(SqlFunctionToken.getTokens());
41-
tokens.addAll(PostgresSqlFunctionToken.getTokens());
42-
tokens.addAll(MySqlFunctionToken.getTokens());
43-
tokens.addAll(OracleFunctionToken.getTokens());
44-
45-
return tokens;
59+
return FUNCTION_TOKENS;
4660
}
4761
}

src/main/java/org/domaframework/doma/intellij/tokens/OracleFunctionToken.java

Lines changed: 82 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,88 @@ public class OracleFunctionToken {
2323
static final Set<String> TOKENS = new HashSet<>();
2424

2525
static {
26-
TOKENS.addAll(
27-
Set.of(
28-
"abs",
29-
"ceil",
30-
"floor",
31-
"round",
32-
"power",
33-
"sqrt",
34-
"exp",
35-
"log",
36-
"to_char",
37-
"to_date",
38-
"to_number",
39-
"current_date",
40-
"current_timestamp",
41-
"sysdate"));
26+
// Mathematical Functions
27+
{
28+
TOKENS.addAll(
29+
Set.of(
30+
"abs",
31+
"ceil",
32+
"floor",
33+
"mod",
34+
"power",
35+
"sqrt",
36+
"sign",
37+
"trunc"
38+
));
39+
}
40+
// Conversion Functions
41+
{
42+
TOKENS.addAll(
43+
Set.of(
44+
"asciistr",
45+
"instr",
46+
"instrb",
47+
"instr4",
48+
"length",
49+
"lengthb",
50+
"length4",
51+
"cast",
52+
"numtodsinterval",
53+
"numtoyminterval",
54+
"to_char",
55+
"to_date",
56+
"to_number",
57+
"unistr"
58+
));
59+
}
60+
// String Functions
61+
{
62+
TOKENS.addAll(
63+
Set.of(
64+
"substr",
65+
"substrb",
66+
"substr4"
67+
));
68+
}
69+
// Lob Functions
70+
{
71+
TOKENS.addAll(
72+
Set.of(
73+
"empty_blob",
74+
"empty_clob",
75+
"to_blob",
76+
"to_clob",
77+
"to_lob",
78+
"to_nclob"
79+
));
80+
}
81+
// Comparison functions
82+
{
83+
TOKENS.addAll(
84+
Set.of(
85+
"decode",
86+
"greatest",
87+
"least",
88+
"coalesce",
89+
"nullif",
90+
"nvl"
91+
));
92+
}
93+
// Date/Time Functions
94+
{
95+
TOKENS.addAll(
96+
Set.of(
97+
"add_months",
98+
"extract",
99+
"months_between",
100+
"round",
101+
"sysdate",
102+
"getdate",
103+
"timestampadd",
104+
"timestampdiff",
105+
"to_date"
106+
));
107+
}
42108
}
43109

44110
public static Set<String> getTokens() {

0 commit comments

Comments
 (0)