+
+ public static final String preprocessQuery(String originalQuery) {
+ originalQuery = originalQuery.replace('`', '"');
+ if (originalQuery.matches("^INSERT INTO [^ ]+ SET .*")) {
+ Pattern p = Pattern.compile("INSERT INTO ([^ ]+) SET (.*)");
+ Matcher m = p.matcher(originalQuery);
+ if (m.matches()) {
+ String replacement = "INSERT INTO " + toIdentifier(m.group(1));
+ String[] parts = m.group(2).split(",");
+ StringJoiner columns = new StringJoiner(", ");
+ StringJoiner values = new StringJoiner(", ");
+ for (int i = 0; i < parts.length; i++) {
+ String[] split = parts[i].split("=", 2);
+ columns.add(toIdentifier(split[0]));
+ values.add(split[1]);
+ }
+ replacement += "(" + columns.toString() + ") VALUES(" + values.toString() + ")";
+ return replacement;
+ }
+ }
+
+ //
+ return originalQuery;
+ }
+
+ private static CharSequence toIdentifier(String ident) {
+ ident = ident.trim();
+ if ( !ident.startsWith("\"")) {
+ ident = "\"" + ident;
+ }
+ if ( !ident.endsWith("\"")) {
+ ident = ident + "\"";
+ }
+ return ident;
+ }