1 package org.apache.torque.sql.objectbuilder;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.torque.Column;
23 import org.apache.torque.TorqueException;
24 import org.apache.torque.adapter.Adapter;
25 import org.apache.torque.criteria.Criteria;
26 import org.apache.torque.criteria.PreparedStatementPart;
27 import org.apache.torque.criteria.SqlEnum;
28 import org.apache.torque.om.ObjectKey;
29 import org.apache.torque.sql.Query;
30 import org.apache.torque.sql.SqlBuilder;
31
32
33
34
35
36
37 public class ObjectOrColumnPsPartBuilder implements ObjectPsPartBuilder
38 {
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 public PreparedStatementPart buildPs(
54 Object toBuildFrom,
55 boolean ignoreCase,
56 Adapter adapter)
57 throws TorqueException
58 {
59 PreparedStatementPart result = new PreparedStatementPart();
60 if (toBuildFrom instanceof Column)
61 {
62 Column column = (Column) toBuildFrom;
63 if (ignoreCase)
64 {
65 result.getSql().append(
66 adapter.ignoreCase(column.getSqlExpression()));
67 }
68 else
69 {
70 result.getSql().append(column.getSqlExpression());
71 }
72 return result;
73 }
74
75
76
77 if (toBuildFrom instanceof Criteria)
78 {
79 Query subquery = SqlBuilder.buildQuery(
80 (Criteria) toBuildFrom);
81 result.getPreparedStatementReplacements().addAll(
82 subquery.getPreparedStatementReplacements());
83 result.getSql().append("(").append(subquery.toString()).append(")");
84 return result;
85 }
86
87 if (toBuildFrom instanceof org.apache.torque.util.Criteria)
88 {
89 Query subquery = SqlBuilder.buildQuery(
90 (org.apache.torque.util.Criteria) toBuildFrom);
91 result.getPreparedStatementReplacements().addAll(
92 subquery.getPreparedStatementReplacements());
93 result.getSql().append("(").append(subquery.toString()).append(")");
94 return result;
95 }
96
97 if (toBuildFrom.equals(
98 SqlEnum.CURRENT_DATE)
99 || toBuildFrom.equals(
100 SqlEnum.CURRENT_TIME)
101 || toBuildFrom.equals(
102 SqlEnum.CURRENT_TIMESTAMP))
103 {
104 result.getSql().append(toBuildFrom.toString());
105 return result;
106 }
107
108 if (toBuildFrom instanceof ObjectKey)
109 {
110 toBuildFrom = ((ObjectKey) toBuildFrom).getValue();
111 }
112
113
114 if (ignoreCase && toBuildFrom instanceof String)
115 {
116 result.getSql().append(adapter.ignoreCase("?"));
117 }
118 else
119 {
120 result.getSql().append("?");
121 }
122 result.getPreparedStatementReplacements().add(toBuildFrom);
123 return result;
124 }
125 }