1
2
3
4
5
6
7
8 package org.asyrinx.joey.om.hibernate;
9
10 import java.text.DateFormat;
11 import java.text.ParseException;
12 import java.util.Date;
13 import java.util.Map;
14
15 import org.apache.commons.lang.exception.NestableRuntimeException;
16 import org.asyrinx.brownie.core.sql.Operator;
17 import org.asyrinx.brownie.core.sql2.Select;
18 import org.asyrinx.joey.om.ConditionTranslator;
19 import org.asyrinx.joey.om.SearchCondition;
20
21 /***
22 * @author akima
23 */
24 public class HqlTranslator
25 extends AbstractHibernateTranslator
26 implements ConditionTranslator {
27
28 /***
29 *
30 */
31 public HqlTranslator(Map columnToProperty, Map tableToClass) {
32 super(columnToProperty, tableToClass);
33 }
34
35 protected final Select dynamicSelect = new Select();
36
37 /***
38 * @see org.asyrinx.joey.om.ConditionTranslater#addFrom(java.lang.String)
39 */
40 public void addFrom(String tableName) {
41 tableName = toClass(tableName);
42 dynamicSelect.getFromTables().add(tableName);
43 }
44
45 /***
46 * @see org.asyrinx.joey.om.ConditionTranslater#addAscendingOrderByColumn(java.lang.String)
47 */
48 public void addAscendingOrderByColumn(String fieldName) {
49 fieldName = toFieldName(fieldName);
50 dynamicSelect.getOrderByFields().add(fieldName);
51 }
52
53 /***
54 * @see org.asyrinx.joey.om.ConditionTranslater#addDate(java.lang.String, java.lang.String, java.lang.Object, java.text.DateFormat)
55 */
56 public void addDate(
57 String fieldName,
58 Object value,
59 Object operator,
60 DateFormat dateFormat) {
61 fieldName = toFieldName(fieldName);
62 try {
63 final Date d =
64 (value instanceof Date)
65 ? (Date) value
66 : dateFormat.parse(String.valueOf(value));
67 dynamicSelect.getWhereConditions().add(
68 fieldName,
69 d,
70 Operator.get(operator));
71 } catch (ParseException e) {
72 throw new NestableRuntimeException(e);
73 }
74 }
75
76 /***
77 * @see org.asyrinx.joey.om.ConditionTranslater#addDescendingOrderByColumn(java.lang.String)
78 */
79 public void addDescendingOrderByColumn(String fieldName) {
80 fieldName = toFieldName(fieldName);
81 dynamicSelect.getOrderByFields().add(fieldName + " desc");
82 }
83
84 /***
85 * @see org.asyrinx.joey.om.ConditionTranslater#addInt(java.lang.String, java.lang.String, java.lang.Object)
86 */
87 public void addInt(String fieldName, Object value, Object operator) {
88 fieldName = toFieldName(fieldName);
89 final Object val = toNumber(value, Integer.class);
90 if (val == null)
91 return;
92 dynamicSelect.getWhereConditions().add(
93 fieldName,
94 val,
95 Operator.get(operator));
96 }
97
98 /***
99 * @see org.asyrinx.joey.om.ConditionTranslater#addLong(java.lang.String, java.lang.String, java.lang.Object)
100 */
101 public void addLong(String fieldName, Object value, Object operator) {
102 fieldName = toFieldName(fieldName);
103 final Object val = toNumber(value, Long.class);
104 if (val == null)
105 return;
106 dynamicSelect.getWhereConditions().add(
107 fieldName,
108 val,
109 Operator.get(operator));
110 }
111
112 /***
113 * @see org.asyrinx.joey.om.ConditionTranslater#addString(java.lang.String, java.lang.String, java.lang.Object)
114 */
115 public void addString(String fieldName, Object value, Object operator) {
116 fieldName = toFieldName(fieldName);
117 dynamicSelect.getWhereConditions().add(
118 fieldName,
119 value,
120 Operator.get(operator));
121 }
122
123 public String toHQL(SearchCondition condition) {
124 condition.attach(this);
125 final String result = dynamicSelect.toSql();
126 log.info(result);
127 return result;
128 }
129
130 }