OSDN Git Service

i
[luz/luz.git] / lacoder / src / com / lavans / lacoder / writer / DaoWriter.java
1 package com.lavans.lacoder.writer;\r
2 \r
3 import com.lavans.lacoder.model.Attribute;\r
4 import com.lavans.lacoder.model.Entity;\r
5 import com.lavans.luz2.commons.StringUtils;\r
6 \r
7 public class DaoWriter {\r
8         //private static Log logger = LogFactory.getLog(DaoWriter.class);\r
9         private Entity entity;\r
10 \r
11         public DaoWriter(Entity entity){\r
12                 this.entity = entity;\r
13         }\r
14 \r
15         public Entity getEntity() {\r
16                 return entity;\r
17         }\r
18 \r
19         public void setEntity(Entity entity) {\r
20                 this.entity = entity;\r
21         }\r
22 \r
23 \r
24         public String writeBindPk(){\r
25                 StringBuffer buf = new StringBuffer();\r
26                 for(Attribute attr: entity.getPrimaryKeyList()){\r
27                         String constStr = entity.getClassName() +"."+ attr.getConstName();\r
28 \r
29                         if(attr.getJavaType().equals("Date")){\r
30                                 buf.append("st.setTimestamp("+ constStr +",new Timestamp("+ attr.getVarName() +".getTime())));\n");\r
31                         }else{\r
32                                 buf.append("st.set"+ attr.getJdbcMethodName()+"("+ constStr +","+ attr.getVarName() +");\n");\r
33                         }\r
34                 }\r
35                 return StringUtils.indent(buf.toString(),3);\r
36         }\r
37 \r
38         /**\r
39          * selectに必要なキーがそろっているか確認する。\r
40          * Stringが空でないかどうかだけチェック。\r
41          * @return\r
42          */\r
43         public String writeSelectCheck(){\r
44                 StringBuffer buf = new StringBuffer();\r
45 \r
46                 for(Attribute attr: entity.getPrimaryKeyList()){\r
47                         if(attr.getJavaType().equals("String")){\r
48                                 buf.append("if("+ attr.getVarName() +"==null || "+ attr.getVarName() +".equals(\"\")){;\n");\r
49                                 buf.append("    logger.info(\""+ attr.getVarName() +" is empty\");\n");\r
50                                 buf.append("    return null;");\r
51                                 buf.append("}");\r
52                         }\r
53                 }\r
54 \r
55                 return StringUtils.indent(buf.toString(),2);\r
56         }\r
57 \r
58 \r
59         public String writeBindInsert(){\r
60                 StringBuffer buf = new StringBuffer();\r
61                 for(Attribute attr: entity.getAttrList()){\r
62                         buf.append(bindStr(attr));\r
63                 }\r
64                 return StringUtils.indent(buf.toString(),3);\r
65         }\r
66 \r
67         public String writeBindUpdate(){\r
68                 StringBuffer buf = new StringBuffer();\r
69                 for(Attribute attr: entity.getAttrList()){\r
70                         if(attr.getName().equals("insertDatetime")){\r
71                                 // 登録日時は更新しない\r
72                                 continue;\r
73                         }\r
74                         buf.append(bindStr(attr));\r
75                 }\r
76                 return StringUtils.indent(buf.toString(),3);\r
77         }\r
78 \r
79         public String writeBindPK(){\r
80                 StringBuffer buf = new StringBuffer();\r
81                 for(Attribute attr: entity.getPrimaryKeyList()){\r
82                         buf.append(bindStr(attr));\r
83                 }\r
84                 return StringUtils.indent(buf.toString(),3);\r
85         }\r
86 \r
87         private String bindStr(Attribute attr){\r
88                 StringBuffer buf = new StringBuffer();\r
89 \r
90                 String getMethodStr = entity.getShortname() +"."+ attr.getGetterName() +"()";\r
91                 String constStr = entity.getClassName() +"."+ attr.getConstName();\r
92 \r
93                 if(attr.getJavaType().equals("Date")){\r
94                         buf.append("if("+ getMethodStr +"!=null){\n");\r
95                         buf.append("    st.setTimestamp("+ constStr +",new Timestamp("+ getMethodStr +".getTime()));\n");\r
96                         buf.append("}else{\n");\r
97                         buf.append("    st.setTimestamp("+ constStr +", null);\n");\r
98                         // Oracle 9以前ではsetNullが使えない\r
99                         //buf.append("                          st.setNull("+ attr.getName() +",Types.NULL); --+"\r
100                         buf.append("}\n");\r
101 \r
102                 }else{\r
103                         buf.append("st.set"+ attr.getJdbcMethodName()+"("+ constStr +","+ getMethodStr +");\n");\r
104                 }\r
105 \r
106                 return buf.toString();\r
107 \r
108                 // Oracleの時に以下の処理が必要かも\r
109                 //\r
110 //                      }else if(attr.getJavaType().equals("byte[]")){\r
111 //                              buf.append("if("+ getMethodStr +"!=null){\n");\r
112 //                              buf.append("    st.setBlob("+ constStr +", new SerialBlob("+ getMethodStr +")));\n");\r
113 //                              buf.append("}else{\n");\r
114 //                              buf.append("st.setTimestamp("+ constStr +", null);\n");\r
115 //                              buf.append("}\n");\r
116         }\r
117 \r
118         /**\r
119          * PKをentityからgetするメソッドをカンマ区切りで列挙する。\r
120          * @return\r
121          */\r
122         public String writePrimaryKeyGetter(){\r
123                 return writePrimaryKeyGetter(entity.getShortname());\r
124         }\r
125 \r
126         /**\r
127          * PKをpkからgetするメソッドをカンマ区切りで列挙する。\r
128          * @return\r
129          */\r
130         public String writePrimaryKeyGetterFromPK(){\r
131                 return writePrimaryKeyGetter("pk");\r
132         }\r
133 \r
134         /**\r
135          * PKをentityからgetするメソッドをカンマ区切りで列挙する。\r
136          * @return\r
137          */\r
138         private String writePrimaryKeyGetter(String name){\r
139                 StringBuffer buf = new StringBuffer();\r
140                 for(Attribute attr: entity.getPrimaryKeyList()){\r
141                         buf.append(", "+ name +"."+ attr.getGetterName() +"()");\r
142                 }\r
143                 return buf.substring(2);\r
144         }\r
145 \r
146         public String writeMakeTarget(){\r
147                 StringBuffer buf = new StringBuffer();\r
148                 for(Attribute attr: entity.getAttrList()){\r
149                         String setter = attr.getSetterName();\r
150                         String columnName = "\""+ attr.getColumnName() +"\"";\r
151                         buf.append("if(columnNames.contains("+ columnName +")) target."+ setter +"(rs.get"+ attr.getJdbcMethodName() +"("+ columnName +"));\n" );\r
152                 }\r
153                 return StringUtils.indent(buf.toString(), 2);\r
154         }\r
155 \r
156 \r
157         public String writeMakeTargetPK(){\r
158                 StringBuffer buf = new StringBuffer();\r
159                 for(Attribute attr: entity.getPrimaryKeyList()){\r
160                         String setter = attr.getSetterName();\r
161                         String columnName = "\""+ attr.getColumnName() +"\"";\r
162                         buf.append("target."+ setter +"(rs.get"+ attr.getJdbcMethodName() +"("+ columnName +"));\n" );\r
163                 }\r
164                 return StringUtils.indent(buf.toString(), 2);\r
165         }\r
166 }\r