001package springdao.support; 002 003import java.util.ArrayList; 004import java.util.List; 005 006/** 007 * 008 * @author Kent Yeh 009 */ 010public class AliasHelper { 011 012 static final List<Integer> reservedWord = new ArrayList<Integer>(); 013 014 static { 015 reservedWord.add("abs".hashCode()); 016 reservedWord.add("all".hashCode()); 017 reservedWord.add("and".hashCode()); 018 reservedWord.add("any".hashCode()); 019 reservedWord.add("as".hashCode()); 020 reservedWord.add("asc".hashCode()); 021 reservedWord.add("ascending".hashCode()); 022 reservedWord.add("avg".hashCode()); 023 reservedWord.add("between".hashCode()); 024 reservedWord.add("bit_length".hashCode()); 025 reservedWord.add("by".hashCode()); 026 reservedWord.add("case".hashCode()); 027 reservedWord.add("cast".hashCode()); 028 reservedWord.add("coalesce".hashCode()); 029 reservedWord.add("concat".hashCode()); 030 reservedWord.add("count".hashCode()); 031 reservedWord.add("current_date".hashCode()); 032 reservedWord.add("current_time".hashCode()); 033 reservedWord.add("current_timestamp".hashCode()); 034 reservedWord.add("day".hashCode()); 035 reservedWord.add("desc".hashCode()); 036 reservedWord.add("descending".hashCode()); 037 reservedWord.add("distinct".hashCode()); 038 reservedWord.add("element".hashCode()); 039 reservedWord.add("else".hashCode()); 040 reservedWord.add("end".hashCode()); 041 reservedWord.add("exclude".hashCode()); 042 reservedWord.add("extract".hashCode()); 043 reservedWord.add("exists".hashCode()); 044 reservedWord.add("from".hashCode()); 045 reservedWord.add("group".hashCode()); 046 reservedWord.add("having".hashCode()); 047 reservedWord.add("hour".hashCode()); 048 reservedWord.add("in".hashCode()); 049 reservedWord.add("inner".hashCode()); 050 reservedWord.add("index".hashCode()); 051 reservedWord.add("indices".hashCode()); 052 reservedWord.add("into".hashCode()); 053 reservedWord.add("imports".hashCode()); 054 reservedWord.add("is".hashCode()); 055 reservedWord.add("join".hashCode()); 056 reservedWord.add("length".hashCode()); 057 reservedWord.add("like".hashCode()); 058 reservedWord.add("length".hashCode()); 059 reservedWord.add("lower".hashCode()); 060 reservedWord.add("max".hashCode()); 061 reservedWord.add("maxelement".hashCode()); 062 reservedWord.add("member".hashCode()); 063 reservedWord.add("min".hashCode()); 064 reservedWord.add("minindex".hashCode()); 065 reservedWord.add("minelement".hashCode()); 066 reservedWord.add("minindex".hashCode()); 067 reservedWord.add("minute".hashCode()); 068 reservedWord.add("mod".hashCode()); 069 reservedWord.add("month".hashCode()); 070 reservedWord.add("nopt".hashCode()); 071 reservedWord.add("not".hashCode()); 072 reservedWord.add("null".hashCode()); 073 reservedWord.add("nullif".hashCode()); 074 reservedWord.add("object".hashCode()); 075 reservedWord.add("of".hashCode()); 076 reservedWord.add("or".hashCode()); 077 reservedWord.add("order".hashCode()); 078 reservedWord.add("parameters".hashCode()); 079 reservedWord.add("range".hashCode()); 080 reservedWord.add("rtrim".hashCode()); 081 reservedWord.add("second".hashCode()); 082 reservedWord.add("select".hashCode()); 083 reservedWord.add("sign".hashCode()); 084 reservedWord.add("sin".hashCode()); 085 reservedWord.add("size".hashCode()); 086 reservedWord.add("some".hashCode()); 087 reservedWord.add("sqrt".hashCode()); 088 reservedWord.add("str".hashCode()); 089 reservedWord.add("substring".hashCode()); 090 reservedWord.add("subclasses".hashCode()); 091 reservedWord.add("sum".hashCode()); 092 reservedWord.add("then".hashCode()); 093 reservedWord.add("to".hashCode()); 094 reservedWord.add("trim".hashCode()); 095 reservedWord.add("trunc".hashCode()); 096 reservedWord.add("union".hashCode()); 097 reservedWord.add("unique".hashCode()); 098 reservedWord.add("values".hashCode()); 099 reservedWord.add("variables".hashCode()); 100 reservedWord.add("when".hashCode()); 101 reservedWord.add("where".hashCode()); 102 reservedWord.add("year".hashCode()); 103 } 104 105 /** 106 * get Alias Name 107 * 108 * @param clazz 109 * @return aliasName 110 */ 111 public static String $a(Class<?> clazz) { 112 String aliasName = clazz.getSimpleName(); 113 aliasName = aliasName.substring(0, 1).toLowerCase() + aliasName.substring(1); 114 if (reservedWord.contains(aliasName.toLowerCase().hashCode())) { 115 aliasName = "_" + aliasName; 116 } 117 return aliasName; 118 } 119 120 /** 121 * get entityName + "AS" + aliasName 122 * 123 * @param clazz 124 * @return {@link Class#getName() clazz.getName()} + "AS" + 125 * {@link AliasHelper#$a(java.lang.Class) $a(clazz)} 126 */ 127 public static String $ea(Class<?> clazz) { 128 return clazz.getName() + " AS " + $a(clazz); 129 } 130}