Clover coverage report - brownies library - 1.0-beta-1 Coverage timestamp: 月 8 16 2004 17:14:42 GMT+09:00 FRAMES NO FRAMES |
file stats: | LOC: | 294 |  | Methods: | 24
| NCLOC: | 198 |  | Classes: | 1
30 day Evaluation Version distributed via the Maven Jar Repository. Clover is not free. You have 30 days to evaluate it. Please visit http://www.thecortex.net/clover to obtain a licensed version of Clover
Source file | Conditionals | Statements | Methods | TOTAL
BasicSqlBuilder.java | 59.3% | 62.7% | 58.3% | 61.2% |

1 |  |
     /*
2 |  |
      * Joey and its relative products are published under the terms
3 |  |
      * of the Apache Software License.
4 |  |
      */
5 |  |
     /*
6 |  |
      * Created on 2004/02/21
7 |  |
      */
8 |  |
     package org.asyrinx.brownie.core.sql;
9 |  |
10 |  |
     import java.util.Iterator;
11 |  |
12 |  |
     import org.apache.commons.lang.StringUtils;
13 |  |
14 |  |
     /**
15 |  |
      * @author akima
16 |  |
      */
17 |  |
     public class BasicSqlBuilder implements IBuilder {
18 |  |
19 |  |
         /**
20 |  |
          *
21 |  |
          */
22 | 3 |
         public BasicSqlBuilder() {
23 | 3 |
             super();
24 |  |
         }
25 |  |
26 |  |
         private char tablePrefixDelimiter = '.';
27 |  |
28 |  |
         private String aliasSigniture = "as";
29 |  |
30 |  |
         /**
31 |  |
          * @see org.asyrinx.brownie.sql.IBuilder#add(org.asyrinx.brownie.sql.Fields,
32 |  |
          *        java.lang.String, java.lang.String, java.lang.String,
33 |  |
          *        java.lang.String)
34 |  |
          */
35 | 6 |
         public String buildField(String tableAlias, String fieldName,
36 |  |
                 String aliasName, String functionName) {
37 | 6 |
             final StringBuffer val = new StringBuffer();
38 | 6 |
             if (StringUtils.isNotEmpty(functionName)) {
39 | 0 |
                 val.append(functionName);
40 | 0 |
                 val.append("(");
41 |  |
             }
42 | 6 |
             if (StringUtils.isNotEmpty(tableAlias)) {
43 | 0 |
                 val.append(tableAlias);
44 | 0 |
                 val.append(getTablePrefixDelimiter());
45 |  |
             }
46 | 6 |
             val.append(fieldName);
47 | 6 |
             if (StringUtils.isNotEmpty(functionName))
48 | 0 |
                 val.append(")");
49 | 6 |
             if (StringUtils.isNotEmpty(aliasName)) {
50 | 0 |
                 if (StringUtils.isNotEmpty(getAliasSigniture())) {
51 | 0 |
                     val.append(" ");
52 | 0 |
                     val.append(getAliasSigniture());
53 | 0 |
                     val.append(" ");
54 |  |
                 }
55 | 0 |
                 val.append(aliasName);
56 |  |
             }
57 | 6 |
             return val.toString();
58 |  |
         }
59 |  |
60 |  |
         private String indexPrefix = "( INDEX ";
61 |  |
62 |  |
         private String indexSuffix = ")";
63 |  |
64 |  |
         /**
65 |  |
          * @see org.asyrinx.brownie.sql.IBuilder#add(org.asyrinx.brownie.sql.Tables,
66 |  |
          *        java.lang.String, java.lang.String, java.lang.String,
67 |  |
          *        java.lang.String)
68 |  |
          */
69 | 3 |
         public String buildTable(String tablePrefix, String tableName,
70 |  |
                 String tableAlias, String indexName) {
71 | 3 |
             final StringBuffer result = new StringBuffer();
72 | 3 |
             if (StringUtils.isNotEmpty(tablePrefix)) {
73 | 0 |
                 if (tablePrefix.charAt(tablePrefix.length() - 1) != getTablePrefixDelimiter())
74 | 0 |
                     tablePrefix += getTablePrefixDelimiter();
75 | 0 |
                 result.append(tablePrefix);
76 |  |
             }
77 | 3 |
             result.append(tableName);
78 | 3 |
             if (StringUtils.isNotEmpty(tableAlias)) {
79 | 0 |
                 result.append(" ");
80 | 0 |
                 result.append(tableAlias);
81 |  |
             }
82 | 3 |
             if (StringUtils.isNotEmpty(indexName)) {
83 | 0 |
                 result.append(" ");
84 | 0 |
                 result.append(getIndexPrefix() + indexName + getIndexSuffix());
85 |  |
             }
86 | 3 |
             return result.toString();
87 |  |
         }
88 |  |
89 |  |
         private char quote = '\'';
90 |  |
91 |  |
         /**
92 |  |
          * @see org.asyrinx.brownie.sql.IBuilder#add(org.asyrinx.brownie.sql.Conditions,
93 |  |
          *        java.lang.String, java.lang.String,
94 |  |
          *        org.asyrinx.brownie.sql.Operator)
95 |  |
          */
96 | 8 |
         public String buildCondition(String fieldName, String value,
97 |  |
                 Operator operator, boolean withQuote) {
98 | 8 |
             if (operator == null)
99 | 0 |
                 operator = Operator.EQUAL;
100 | 8 |
             if (withQuote)
101 | 0 |
                 value = getQuote() + value + getQuote();
102 | 8 |
             return fieldName + " " + operator.toString() + " " + value;
103 |  |
         }
104 |  |
105 |  |
         /**
106 |  |
          * @see org.asyrinx.brownie.sql.IBuilder#build(org.asyrinx.brownie.sql.DynamicSelect,
107 |  |
          *        java.lang.StringBuffer)
108 |  |
          */
109 | 3 |
         public void build(DynamicSelect dynamicSelect, StringBuffer dest) {
110 | 3 |
             buildSelect(dest, dynamicSelect);
111 | 3 |
             buildFrom(dest, dynamicSelect.getFromTables());
112 | 3 |
             buildWhere(dest, dynamicSelect.getWhereConditions());
113 | 3 |
             buildGroupBy(dest, dynamicSelect.getGroupByFields());
114 | 3 |
             buildHaving(dest, dynamicSelect.getHavingConditions());
115 | 3 |
             buildOrderBy(dest, dynamicSelect.getOrderByFields());
116 |  |
         }
117 |  |
118 | 3 |
         protected void buildSelect(StringBuffer dest, DynamicSelect dynamicSelect) {
119 | 3 |
             if (dynamicSelect.getSelectFields().isEmpty())
120 | 1 |
                 return;
121 | 2 |
             dest.append("select ");
122 | 2 |
             if (dynamicSelect.isDistinct())
123 | 0 |
                 dest.append(" distinct ");
124 | 2 |
             buildFields(dest, dynamicSelect.getSelectFields());
125 | 2 |
             dest.append(" ");
126 |  |
         }
127 |  |
128 | 3 |
         protected void buildFrom(StringBuffer dest, Tables fromTables) {
129 | 3 |
             if (fromTables.isEmpty())
130 | 0 |
                 return;
131 | 3 |
             dest.append("from ");
132 | 3 |
             buildTables(dest, fromTables);
133 | 3 |
             dest.append(" ");
134 |  |
         }
135 |  |
136 | 3 |
         protected void buildWhere(StringBuffer dest, Conditions conditions) {
137 | 3 |
             if (conditions.isEmpty())
138 | 0 |
                 return;
139 | 3 |
             dest.append("where ");
140 | 3 |
             buildConditions(dest, conditions);
141 | 3 |
             dest.append(" ");
142 |  |
         }
143 |  |
144 | 3 |
         protected void buildGroupBy(StringBuffer dest, Fields groupByFields) {
145 | 3 |
             if (groupByFields.isEmpty())
146 | 3 |
                 return;
147 | 0 |
             dest.append("group by ");
148 | 0 |
             buildFields(dest, groupByFields);
149 | 0 |
             dest.append(" ");
150 |  |
         }
151 |  |
152 | 3 |
         protected void buildHaving(StringBuffer dest, Conditions havingConditions) {
153 | 3 |
             if (havingConditions.isEmpty())
154 | 3 |
                 return;
155 | 0 |
             dest.append("having ");
156 | 0 |
             buildConditions(dest, havingConditions);
157 | 0 |
             dest.append(" ");
158 |  |
         }
159 |  |
160 | 3 |
         protected void buildOrderBy(StringBuffer dest, Fields orderByFields) {
161 | 3 |
             if (orderByFields.isEmpty())
162 | 3 |
                 return;
163 | 0 |
             dest.append("order by ");
164 | 0 |
             buildFields(dest, orderByFields);
165 | 0 |
             dest.append(" ");
166 |  |
         }
167 |  |
168 | 2 |
         protected void buildFields(StringBuffer dest, Fields fields) {
169 | 2 |
             final Iterator iterator = fields.iterator();
170 | 2 |
             boolean first = true;
171 | 2 |
             while (iterator.hasNext()) {
172 | 6 |
                 if (first)
173 | 2 |
                     first = false;
174 |  |
                 else
175 | 4 |
                     dest.append(fields.getDelimiter());
176 | 6 |
                 final Object field = iterator.next();
177 | 6 |
                 if (field instanceof Fields) {
178 | 0 |
                     buildFields(dest, (Fields) field);
179 |  |
                 } else {
180 | 6 |
                     dest.append(field);
181 |  |
                 }
182 |  |
             }
183 |  |
         }
184 |  |
185 | 3 |
         protected void buildTables(StringBuffer dest, Tables tables) {
186 | 3 |
             final Iterator iterator = tables.iterator();
187 | 3 |
             boolean first = true;
188 | 3 |
             while (iterator.hasNext()) {
189 | 3 |
                 if (first)
190 | 3 |
                     first = false;
191 |  |
                 else
192 | 0 |
                     dest.append(tables.getDelimiter());
193 | 3 |
                 final Object table = iterator.next();
194 | 3 |
                 if (table instanceof Tables) {
195 | 0 |
                     buildTables(dest, (Tables) table);
196 |  |
                 } else {
197 | 3 |
                     dest.append(table);
198 |  |
                 }
199 |  |
             }
200 |  |
         }
201 |  |
202 | 5 |
         protected void buildConditions(StringBuffer dest, Conditions conditions) {
203 | 5 |
             final Iterator iterator = conditions.iterator();
204 | 5 |
             boolean first = true;
205 | 5 |
             while (iterator.hasNext()) {
206 | 10 |
                 if (first) {
207 | 5 |
                     first = false;
208 |  |
                 } else {
209 | 5 |
                     dest.append(" ");
210 | 5 |
                     dest.append(conditions.getConnection());
211 | 5 |
                     dest.append(" ");
212 |  |
                 }
213 | 10 |
                 final Object condition = iterator.next();
214 | 10 |
                 if (condition instanceof Conditions) {
215 | 2 |
                     dest.append("(");
216 | 2 |
                     buildConditions(dest, (Conditions) condition);
217 | 2 |
                     dest.append(")");
218 |  |
                 } else {
219 | 8 |
                     dest.append(condition);
220 |  |
                 }
221 |  |
             }
222 |  |
         }
223 |  |
224 |  |
         /**
225 |  |
          * @return
226 |  |
          */
227 | 0 |
         public String getIndexPrefix() {
228 | 0 |
             return indexPrefix;
229 |  |
         }
230 |  |
231 |  |
         /**
232 |  |
          * @return
233 |  |
          */
234 | 0 |
         public String getIndexSuffix() {
235 | 0 |
             return indexSuffix;
236 |  |
         }
237 |  |
238 |  |
         /**
239 |  |
          * @return
240 |  |
          */
241 | 0 |
         public char getTablePrefixDelimiter() {
242 | 0 |
             return tablePrefixDelimiter;
243 |  |
         }
244 |  |
245 |  |
         /**
246 |  |
          * @param string
247 |  |
          */
248 | 0 |
         public void setIndexPrefix(String string) {
249 | 0 |
             indexPrefix = string;
250 |  |
         }
251 |  |
252 |  |
         /**
253 |  |
          * @param string
254 |  |
          */
255 | 0 |
         public void setIndexSuffix(String string) {
256 | 0 |
             indexSuffix = string;
257 |  |
         }
258 |  |
259 |  |
         /**
260 |  |
          * @param string
261 |  |
          */
262 | 0 |
         public void setTablePrefixDelimiter(char string) {
263 | 0 |
             tablePrefixDelimiter = string;
264 |  |
         }
265 |  |
266 |  |
         /**
267 |  |
          * @return
268 |  |
          */
269 | 0 |
         public char getQuote() {
270 | 0 |
             return quote;
271 |  |
         }
272 |  |
273 |  |
         /**
274 |  |
          * @param c
275 |  |
          */
276 | 0 |
         public void setQuote(char c) {
277 | 0 |
             quote = c;
278 |  |
         }
279 |  |
280 |  |
         /**
281 |  |
          * @return
282 |  |
          */
283 | 0 |
         public String getAliasSigniture() {
284 | 0 |
             return aliasSigniture;
285 |  |
         }
286 |  |
287 |  |
         /**
288 |  |
          * @param string
289 |  |
          */
290 | 0 |
         public void setAliasSigniture(String string) {
291 | 0 |
             aliasSigniture = string;
292 |  |
         }
293 |  |
294 |  |
     }