1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * The contents of this file are subject to the terms of the Liferay Enterprise
5    * Subscription License ("License"). You may not use this file except in
6    * compliance with the License. You can obtain a copy of the License by
7    * contacting Liferay, Inc. See the License for the specific language governing
8    * permissions and limitations under the License, including but not limited to
9    * distribution rights of the Software.
10   *
11   *
12   *
13   */
14  
15  package com.liferay.portal.kernel.dao.orm;
16  
17  import com.liferay.portal.kernel.util.CalendarUtil;
18  
19  import java.sql.Timestamp;
20  
21  import java.util.Date;
22  
23  /**
24   * <a href="QueryPos.java.html"><b><i>View Source</i></b></a>
25   *
26   * @author Brian Wing Shun Chan
27   * @author Shuyang Zhou
28   */
29  public class QueryPos {
30  
31      public static QueryPos getInstance(Query query) {
32          return new QueryPos(query);
33      }
34  
35      public void add(boolean value) {
36          _query.setBoolean(_pos++, value);
37      }
38  
39      public void add(Boolean value) {
40          if (value != null) {
41              _query.setBoolean(_pos++, value.booleanValue());
42          }
43          else {
44              _addNull();
45          }
46      }
47  
48      public void add(boolean[] values) {
49          add(values, _DEFAULT_ARRAY_COUNT);
50      }
51  
52      public void add(boolean[] values, int count) {
53          for (int i = 0; i < values.length; i++) {
54              for (int j = 0; j < count; j++) {
55                  add(values[i]);
56              }
57          }
58      }
59  
60      public void add(Boolean[] values) {
61          add(values, _DEFAULT_ARRAY_COUNT);
62      }
63  
64      public void add(Boolean[] values, int count) {
65          for (int i = 0; i < values.length; i++) {
66              for (int j = 0; j < count; j++) {
67                  add(values[i]);
68              }
69          }
70      }
71  
72      public void add(double value) {
73          _query.setDouble(_pos++, value);
74      }
75  
76      public void add(Double value) {
77          if (value != null) {
78              _query.setDouble(_pos++, value.doubleValue());
79          }
80          else {
81              _addNull();
82          }
83      }
84  
85      public void add(double[] values) {
86          add(values, _DEFAULT_ARRAY_COUNT);
87      }
88  
89      public void add(double[] values, int count) {
90          for (int i = 0; i < values.length; i++) {
91              for (int j = 0; j < count; j++) {
92                  add(values[i]);
93              }
94          }
95      }
96  
97      public void add(Double[] values) {
98          add(values, _DEFAULT_ARRAY_COUNT);
99      }
100 
101     public void add(Double[] values, int count) {
102         for (int i = 0; i < values.length; i++) {
103             for (int j = 0; j < count; j++) {
104                 add(values[i]);
105             }
106         }
107     }
108 
109     public void add(float value) {
110         _query.setFloat(_pos++, value);
111     }
112 
113     public void add(Float value) {
114         if (value != null) {
115             _query.setFloat(_pos++, value.intValue());
116         }
117         else {
118             _addNull();
119         }
120     }
121 
122     public void add(float[] values) {
123         add(values, _DEFAULT_ARRAY_COUNT);
124     }
125 
126     public void add(float[] values, int count) {
127         for (int i = 0; i < values.length; i++) {
128             for (int j = 0; j < count; j++) {
129                 add(values[i]);
130             }
131         }
132     }
133 
134     public void add(Float[] values) {
135         add(values, _DEFAULT_ARRAY_COUNT);
136     }
137 
138     public void add(Float[] values, int count) {
139         for (int i = 0; i < values.length; i++) {
140             for (int j = 0; j < count; j++) {
141                 add(values[i]);
142             }
143         }
144     }
145 
146     public void add(int value) {
147         _query.setInteger(_pos++, value);
148     }
149 
150     public void add(int[] values) {
151         add(values, _DEFAULT_ARRAY_COUNT);
152     }
153 
154     public void add(int[] values, int count) {
155         for (int i = 0; i < values.length; i++) {
156             for (int j = 0; j < count; j++) {
157                 add(values[i]);
158             }
159         }
160     }
161 
162     public void add(Integer value) {
163         if (value != null) {
164             _query.setInteger(_pos++, value.intValue());
165         }
166         else {
167             _addNull();
168         }
169     }
170 
171     public void add(Integer[] values) {
172         add(values, _DEFAULT_ARRAY_COUNT);
173     }
174 
175     public void add(Integer[] values, int count) {
176         for (int i = 0; i < values.length; i++) {
177             for (int j = 0; j < count; j++) {
178                 add(values[i]);
179             }
180         }
181     }
182 
183     public void add(long value) {
184         _query.setLong(_pos++, value);
185     }
186 
187     public void add(Long value) {
188         if (value != null) {
189             _query.setLong(_pos++, value.longValue());
190         }
191         else {
192             _addNull();
193         }
194     }
195 
196     public void add(long[] values) {
197         add(values, _DEFAULT_ARRAY_COUNT);
198     }
199 
200     public void add(long[] values, int count) {
201         for (int i = 0; i < values.length; i++) {
202             for (int j = 0; j < count; j++) {
203                 add(values[i]);
204             }
205         }
206     }
207 
208     public void add(Long[] values) {
209         add(values, _DEFAULT_ARRAY_COUNT);
210     }
211 
212     public void add(Long[] values, int count) {
213         for (int i = 0; i < values.length; i++) {
214             for (int j = 0; j < count; j++) {
215                 add(values[i]);
216             }
217         }
218     }
219 
220     public void add(Object obj) {
221         if (obj == null) {
222             _addNull();
223 
224             return;
225         }
226 
227         Class<?> classObj = obj.getClass();
228 
229         if (classObj == Boolean.class) {
230             add(((Boolean)obj).booleanValue());
231         }
232         else if (classObj == Date.class) {
233             add(CalendarUtil.getTimestamp((Date)obj));
234         }
235         else if (classObj == Double.class) {
236             add(((Double)obj).doubleValue());
237         }
238         else if (classObj == Float.class) {
239             add(((Float)obj).floatValue());
240         }
241         else if (classObj == Integer.class) {
242             add(((Integer)obj).intValue());
243         }
244         else if (classObj == Long.class) {
245             add(((Long)obj).longValue());
246         }
247         else if (classObj == Short.class) {
248             add(((Short)obj).shortValue());
249         }
250         else if (classObj == String.class) {
251             add((String)obj);
252         }
253         else if (classObj == Timestamp.class) {
254             add((Timestamp)obj);
255         }
256         else {
257             throw new RuntimeException("Unsupport type " + classObj.getName());
258         }
259     }
260 
261     public void add(short value) {
262         _query.setShort(_pos++, value);
263     }
264 
265     public void add(Short value) {
266         if (value != null) {
267             _query.setShort(_pos++, value.shortValue());
268         }
269         else {
270             _addNull();
271         }
272     }
273 
274     public void add(short[] values) {
275         add(values, _DEFAULT_ARRAY_COUNT);
276     }
277 
278     public void add(short[] values, int count) {
279         for (int i = 0; i < values.length; i++) {
280             for (int j = 0; j < count; j++) {
281                 add(values[i]);
282             }
283         }
284     }
285 
286     public void add(Short[] values) {
287         add(values, _DEFAULT_ARRAY_COUNT);
288     }
289 
290     public void add(Short[] values, int count) {
291         for (int i = 0; i < values.length; i++) {
292             for (int j = 0; j < count; j++) {
293                 add(values[i]);
294             }
295         }
296     }
297 
298     public void add(String value) {
299         _query.setString(_pos++, value);
300     }
301 
302     public void add(String[] values) {
303         add(values, _DEFAULT_ARRAY_COUNT);
304     }
305 
306     public void add(String[] values, int count) {
307         for (int i = 0; i < values.length; i++) {
308             for (int j = 0; j < count; j++) {
309                 add(values[i]);
310             }
311         }
312     }
313 
314     public void add(Timestamp value) {
315         _query.setTimestamp(_pos++, value);
316     }
317 
318     public void add(Timestamp[] values) {
319         add(values, _DEFAULT_ARRAY_COUNT);
320     }
321 
322     public void add(Timestamp[] values, int count) {
323         for (int i = 0; i < values.length; i++) {
324             for (int j = 0; j < count; j++) {
325                 add(values[i]);
326             }
327         }
328     }
329 
330     public int getPos() {
331         return _pos;
332     }
333 
334     private QueryPos(Query query) {
335         _query = query;
336     }
337 
338     private void _addNull() {
339         _query.setSerializable(_pos++, null);
340     }
341 
342     private static final int _DEFAULT_ARRAY_COUNT = 1;
343 
344     private int _pos;
345     private Query _query;
346 
347 }