1 package test.com.lavans.luz2.dao.old;
\r
3 import java.lang.reflect.Field;
\r
4 import java.sql.SQLException;
\r
5 import java.util.LinkedList;
\r
6 import java.util.List;
\r
8 import org.apache.commons.logging.Log;
\r
9 import org.apache.commons.logging.LogFactory;
\r
12 import com.lavans.luz2.commons.StringUtils;
\r
13 import com.lavans.luz2.util.Config;
\r
16 * Meta data get utility
\r
20 public class DaoUtils {
\r
21 private static Log logger = LogFactory.getLog(GenericDao.class);
\r
23 private static String toSqlName(String str){
\r
24 return StringUtils.toUnderscore(str).toUpperCase();
\r
30 * Make table name from entity name.
\r
31 * Change camel case to bar
\r
34 public static String getTableName(Class<?> entityClass){
\r
35 return toSqlName(entityClass.getSimpleName());
\r
39 * Change camel case to bar
\r
42 public static String getSelectColumns(List<Field> fields){
\r
43 return toSqlName(StringUtils.join(getFieldNames(fields), ","));
\r
45 public static String getInsertColumns(List<Field> fields){
\r
46 return ":"+StringUtils.join(getFieldNames(fields), ",:");
\r
48 public static String getUpdateColumns(List<Field> fields){
\r
50 if(fields==null || fields.size()==0) return "";
\r
52 StringBuilder sb = new StringBuilder();
\r
53 for(Field field: fields){
\r
54 sb.append("AND ").append(toSqlName(field.getName())).append("=:").append(field.getName());
\r
56 return sb.substring(4);
\r
60 * Get sequence name for serial id.
\r
63 public static String getSequenceName(Field field){
\r
64 // first field of pk should be serial.
\r
65 // *** this mthod is for postgresql only ***
\r
66 // @todo for other DB
\r
67 String tableName = getTableName(field.getDeclaringClass());
\r
68 String fieldname = toSqlName(field.getName());
\r
69 return tableName+"_"+fieldname+"_SEQ";
\r
72 private static List<String> getFieldNames(List<Field> src){
\r
73 List<String> list = new LinkedList<String>();
\r
74 for(Field field: src){
\r
75 list.add(field.getName());
\r
84 * Make condition String for select from PK.
\r
87 public static String getConditions(List<Field> fields){
\r
88 StringBuilder sb = new StringBuilder();
\r
89 for(Field field: fields){
\r
90 sb.append("AND "+toSqlName(field.getName()) +"=:"+ field.getName());
\r
93 logger.debug(sb.toString());
\r
95 return "WHERE"+ sb.substring(3);
\r
102 * @throws SQLException
\r
104 public static String getSql(Class<?> clazz, String key){
\r
105 Config config = Config.getInstance(clazz.getName().replace(".","/")+".xml");
\r
108 sql = config.getNodeValue("/sql/"+key).trim();
\r
109 } catch (Exception e) {
\r
111 if(StringUtils.isEmpty(sql)){
\r
112 logger.error("Can not find SQL["+ key +"]");
\r