1 package com.lavans.lacoder.writer;
\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
7 public class DaoWriter {
\r
8 //private static Log logger = LogFactory.getLog(DaoWriter.class);
\r
9 private Entity entity;
\r
11 public DaoWriter(Entity entity){
\r
12 this.entity = entity;
\r
15 public Entity getEntity() {
\r
19 public void setEntity(Entity entity) {
\r
20 this.entity = entity;
\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
29 if(attr.getJavaType().equals("Date")){
\r
30 buf.append("st.setTimestamp("+ constStr +",new Timestamp("+ attr.getVarName() +".getTime())));\n");
\r
32 buf.append("st.set"+ attr.getJdbcMethodName()+"("+ constStr +","+ attr.getVarName() +");\n");
\r
35 return StringUtils.indent(buf.toString(),3);
\r
39 * selectに必要なキーがそろっているか確認する。
\r
40 * Stringが空でないかどうかだけチェック。
\r
43 public String writeSelectCheck(){
\r
44 StringBuffer buf = new StringBuffer();
\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
55 return StringUtils.indent(buf.toString(),2);
\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
64 return StringUtils.indent(buf.toString(),3);
\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
74 buf.append(bindStr(attr));
\r
76 return StringUtils.indent(buf.toString(),3);
\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
84 return StringUtils.indent(buf.toString(),3);
\r
87 private String bindStr(Attribute attr){
\r
88 StringBuffer buf = new StringBuffer();
\r
90 String getMethodStr = entity.getShortname() +"."+ attr.getGetterName() +"()";
\r
91 String constStr = entity.getClassName() +"."+ attr.getConstName();
\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
103 buf.append("st.set"+ attr.getJdbcMethodName()+"("+ constStr +","+ getMethodStr +");\n");
\r
106 return buf.toString();
\r
108 // Oracleの時に以下の処理が必要かも
\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
119 * PKをentityからgetするメソッドをカンマ区切りで列挙する。
\r
122 public String writePrimaryKeyGetter(){
\r
123 return writePrimaryKeyGetter(entity.getShortname());
\r
127 * PKをpkからgetするメソッドをカンマ区切りで列挙する。
\r
130 public String writePrimaryKeyGetterFromPK(){
\r
131 return writePrimaryKeyGetter("pk");
\r
135 * PKをentityからgetするメソッドをカンマ区切りで列挙する。
\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
143 return buf.substring(2);
\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
153 return StringUtils.indent(buf.toString(), 2);
\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
164 return StringUtils.indent(buf.toString(), 2);
\r