add method OracleUtils.isBultinFunction

This commit is contained in:
wenshao
2017-06-19 19:40:27 +08:00
parent fae4f44239
commit 49628d6a59
5 changed files with 335 additions and 9 deletions
@@ -19,6 +19,8 @@ import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashSet;
import java.util.Set;
import javax.sql.XAConnection;
import javax.transaction.xa.XAException;
@@ -161,4 +163,24 @@ public class OracleUtils {
OracleResultSet oracleResultSet = rs.unwrap(OracleResultSet.class);
return oracleResultSet.getROWID(columnIndex);
}
private static Set<String> builtinFunctions;
public static boolean isBuiltinFunction(String function) {
if (function == null) {
return false;
}
String function_lower = function.toLowerCase();
Set<String> functions = builtinFunctions;
if (functions == null) {
functions = new HashSet<String>();
Utils.loadFromFile("META-INF/druid/parser/oracle/builtin_functions", functions);
builtinFunctions = functions;
}
return functions.contains(function_lower);
}
}
@@ -15,21 +15,14 @@
*/
package com.alibaba.druid.util;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.io.*;
import java.lang.management.ManagementFactory;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import java.util.Set;
import javax.servlet.GenericServlet;
@@ -447,4 +440,31 @@ public class Utils {
return hash;
}
public static void loadFromFile(String path, Set<String> set) {
InputStream is = null;
BufferedReader reader = null;
try {
is = Thread.currentThread().getContextClassLoader().getResourceAsStream(path);
reader = new BufferedReader(new InputStreamReader(is));
for (; ; ) {
String line = reader.readLine();
if (line == null) {
break;
}
line = line.trim().toLowerCase();
if (line.length() == 0) {
continue;
}
set.add(line);
}
} catch (Exception ex) {
// skip
} finally {
JdbcUtils.close(is);
JdbcUtils.close(reader);
}
}
}