OSDN Git Service

track
[luz/luz.git] / src / test / com / lavans / luz2 / dao / old / DaoUtils.java
diff --git a/src/test/com/lavans/luz2/dao/old/DaoUtils.java b/src/test/com/lavans/luz2/dao/old/DaoUtils.java
new file mode 100644 (file)
index 0000000..cf0fb28
--- /dev/null
@@ -0,0 +1,116 @@
+package test.com.lavans.luz2.dao.old;\r
+\r
+import java.lang.reflect.Field;\r
+import java.sql.SQLException;\r
+import java.util.LinkedList;\r
+import java.util.List;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+\r
+\r
+import com.lavans.luz2.commons.StringUtils;\r
+import com.lavans.luz2.util.Config;\r
+\r
+/**\r
+ * Meta data get utility\r
+ * @author dobashi\r
+ *\r
+ */\r
+public class DaoUtils {\r
+       private static Log logger = LogFactory.getLog(GenericDao.class);\r
+\r
+       private static String toSqlName(String str){\r
+               return StringUtils.toUnderscore(str).toUpperCase();\r
+       }\r
+\r
+\r
+       // for dao\r
+       /**\r
+        * Make table name from entity name.\r
+        * Change camel case to bar\r
+        * @return\r
+        */\r
+       public static String getTableName(Class<?> entityClass){\r
+               return toSqlName(entityClass.getSimpleName());\r
+       }\r
+       /**\r
+        * Make all column\r
+        * Change camel case to bar\r
+        * @return\r
+        */\r
+       public static String getSelectColumns(List<Field> fields){\r
+               return toSqlName(StringUtils.join(getFieldNames(fields), ","));\r
+       }\r
+       public static String getInsertColumns(List<Field> fields){\r
+               return ":"+StringUtils.join(getFieldNames(fields), ",:");\r
+       }\r
+       public static String getUpdateColumns(List<Field> fields){\r
+               // null check\r
+               if(fields==null || fields.size()==0) return "";\r
+\r
+               StringBuilder sb = new StringBuilder();\r
+               for(Field field: fields){\r
+                       sb.append("AND ").append(toSqlName(field.getName())).append("=:").append(field.getName());\r
+               }\r
+               return sb.substring(4);\r
+       }\r
+\r
+       /**\r
+        * Get sequence name for serial id.\r
+        * @return\r
+        */\r
+       public static String getSequenceName(Field field){\r
+               // first field of pk should be serial.\r
+               // *** this mthod is for postgresql only ***\r
+               // @todo for other DB\r
+               String tableName = getTableName(field.getDeclaringClass());\r
+               String fieldname = toSqlName(field.getName());\r
+               return tableName+"_"+fieldname+"_SEQ";\r
+       }\r
+\r
+       private static List<String> getFieldNames(List<Field> src){\r
+               List<String> list = new LinkedList<String>();\r
+               for(Field field: src){\r
+                       list.add(field.getName());\r
+               }\r
+\r
+               logger.debug(list);\r
+\r
+               return list;\r
+       }\r
+\r
+       /**\r
+        * Make condition String for select from PK.\r
+        * @return\r
+        */\r
+       public static String getConditions(List<Field> fields){\r
+               StringBuilder sb = new StringBuilder();\r
+               for(Field field: fields){\r
+                       sb.append("AND "+toSqlName(field.getName()) +"=:"+ field.getName());\r
+               }\r
+\r
+               logger.debug(sb.toString());\r
+\r
+               return "WHERE"+ sb.substring(3);\r
+       }\r
+\r
+\r
+       /**\r
+        * xmlからSQL取得。共通部。\r
+        * @return\r
+        * @throws SQLException\r
+        */\r
+        public static String getSql(Class<?> clazz, String key){\r
+               Config config = Config.getInstance(clazz.getName().replace(".","/")+".xml");\r
+               String sql="";\r
+               try {\r
+                       sql = config.getNodeValue("/sql/"+key).trim();\r
+               } catch (Exception e) {\r
+               }\r
+               if(StringUtils.isEmpty(sql)){\r
+                       logger.error("Can not find SQL["+ key +"]");\r
+               }\r
+               return sql;\r
+       }\r
+}\r