1
22
23 package com.liferay.portal.dao.orm.hibernate;
24
25 import com.liferay.portal.kernel.dao.orm.Criterion;
26 import com.liferay.portal.kernel.dao.orm.DynamicQuery;
27 import com.liferay.portal.kernel.dao.orm.Order;
28 import com.liferay.portal.kernel.dao.orm.Projection;
29 import com.liferay.portal.kernel.dao.orm.Session;
30
31 import java.util.List;
32
33 import org.hibernate.Criteria;
34 import org.hibernate.criterion.DetachedCriteria;
35
36
42 public class DynamicQueryImpl implements DynamicQuery {
43
44 public DynamicQueryImpl(DetachedCriteria detachedCriteria) {
45 _detachedCriteria = detachedCriteria;
46 }
47
48 public DynamicQuery add(Criterion criterion) {
49 CriterionImpl criterionImpl = (CriterionImpl)criterion;
50
51 _detachedCriteria.add(criterionImpl.getWrappedCriterion());
52
53 return this;
54 }
55
56 public DynamicQuery addOrder(Order order) {
57 OrderImpl orderImpl = (OrderImpl)order;
58
59 _detachedCriteria.addOrder(orderImpl.getWrappedOrder());
60
61 return this;
62 }
63
64 public void compile(Session session) {
65 SessionImpl sessionImpl = (SessionImpl)session;
66
67 org.hibernate.Session hibernateSession =
68 sessionImpl.getWrappedSession();
69
70 if (hibernateSession instanceof LiferaySession) {
71 hibernateSession =
72 ((LiferaySession)hibernateSession).getHibernateSession();
73 }
74
75 _criteria = _detachedCriteria.getExecutableCriteria(hibernateSession);
76
77 if ((_start != null) && (_end != null)) {
78 _criteria = _criteria.setFirstResult(_start.intValue());
79 _criteria = _criteria.setMaxResults(
80 _end.intValue() - _start.intValue());
81 }
82 }
83
84 public DetachedCriteria getDetachedCriteria() {
85 return _detachedCriteria;
86 }
87
88 public List list() {
89 return _criteria.list();
90 }
91
92 public void setLimit(int start, int end) {
93 _start = Integer.valueOf(start);
94 _end = Integer.valueOf(end);
95 }
96
97 public DynamicQuery setProjection(Projection projection) {
98 ProjectionImpl projectionImpl = (ProjectionImpl)projection;
99
100 _detachedCriteria.setProjection(projectionImpl.getWrappedProjection());
101
102 return this;
103 }
104
105 private DetachedCriteria _detachedCriteria;
106 private Criteria _criteria;
107 private Integer _start;
108 private Integer _end;
109
110 }