/** * @return A table or column name escaped for Access * @usage _general_method_ */ public static String escapeIdentifier(String s) { if (isReservedWord(s)) { return ESCAPE_PREFIX + s; } return s; }
public static String preEscapingIdentifier(String name) { if (name.length() == 0) { return name; } if (name.startsWith("~")) { return null; } String nl = name.toUpperCase(Locale.US); if (TableBuilder.isReservedWord(nl)) { ESCAPED_IDENTIFIERS.add(nl); } if (name.indexOf("'") >= 0 || name.indexOf("\"") > 0) { APOSTROPHISED_NAMES.add(name); } if (nl.startsWith("X") && TableBuilder.isReservedWord(nl.substring(1))) { ALREADY_ESCAPED_IDENTIFIERS.add(nl.substring(1)); } String escaped = name; escaped = name.replaceAll("\'", "").replaceAll("\"", "").replaceAll(Pattern.quote("\\"), "_"); if (escaped.length() > 0 && Character.isDigit(escaped.trim().charAt(0))) { escaped = "Z_" + escaped.trim(); } if (escaped.length() > 0 && escaped.charAt(0) == '_') { escaped = "Z" + escaped; } if (dualUsedAsTableName && escaped.equalsIgnoreCase("DUAL")) { escaped = "DUAL_13031971"; } return escaped.toUpperCase(Locale.US); }