From 04f833c25a0861895ee8bdfe4271fba88e11971d Mon Sep 17 00:00:00 2001 From: Ruben Dijkstra Date: Sun, 28 Sep 2014 00:15:42 +0200 Subject: [PATCH] Use Charmatcher to check for illegal characters in identifiers --- .../com/mysema/query/sql/SQLTemplates.java | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/querydsl-sql/src/main/java/com/mysema/query/sql/SQLTemplates.java b/querydsl-sql/src/main/java/com/mysema/query/sql/SQLTemplates.java index 4ad35368a..6ca76542f 100644 --- a/querydsl-sql/src/main/java/com/mysema/query/sql/SQLTemplates.java +++ b/querydsl-sql/src/main/java/com/mysema/query/sql/SQLTemplates.java @@ -13,12 +13,13 @@ */ package com.mysema.query.sql; +import static com.google.common.base.CharMatcher.inRange; + import java.lang.reflect.Field; import java.sql.Types; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; +import com.google.common.base.CharMatcher; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.mysema.commons.lang.Pair; @@ -42,6 +43,10 @@ public class SQLTemplates extends Templates { public static final SQLTemplates DEFAULT = new SQLTemplates("\"",'\\',false); + private static final CharMatcher NON_UNDERSCORE_ALPHA_NUMERIC = + CharMatcher.is('_').or(inRange('a', 'z').or(inRange('A', 'Z'))).or(inRange('0', '9')) + .negate().precomputed(); + public abstract static class Builder { protected boolean printSchema, quote, newLineToSingleSpace; @@ -727,14 +732,7 @@ public class SQLTemplates extends Templates { } protected boolean requiresQuotes(final String identifier) { - for (int i = 0; i < identifier.length(); i++) { - final char ch = identifier.charAt(i); - //0-9,a-z,A-Z_ - if (ch < '0' || (ch > '9' && ch < 'A') || (ch > 'Z' && ch < '_') || ch > 'z') { - return true; - } - } - return false; + return NON_UNDERSCORE_ALPHA_NUMERIC.matchesAnyOf(identifier); } /**