1
19
20 package com.liferay.portal.dao.orm.hibernate;
21
22 import com.liferay.portal.kernel.dao.orm.DynamicQuery;
23 import com.liferay.portal.kernel.dao.orm.DynamicQueryFactory;
24
25 import java.util.HashMap;
26 import java.util.Map;
27
28 import org.hibernate.criterion.DetachedCriteria;
29
30
36 public class DynamicQueryFactoryImpl implements DynamicQueryFactory {
37
38 public DynamicQuery forClass(Class clazz) {
39 clazz = getImplClass(clazz);
40
41 return new DynamicQueryImpl(DetachedCriteria.forClass(clazz));
42 }
43
44 public DynamicQuery forClass(Class clazz, ClassLoader classLoader) {
45 clazz = getImplClass(clazz, classLoader);
46
47 return new DynamicQueryImpl(DetachedCriteria.forClass(clazz));
48 }
49
50 public DynamicQuery forClass(Class clazz, String alias) {
51 clazz = getImplClass(clazz);
52
53 return new DynamicQueryImpl(DetachedCriteria.forClass(clazz, alias));
54 }
55
56 public DynamicQuery forClass(
57 Class clazz, String alias, ClassLoader classLoader) {
58
59 clazz = getImplClass(clazz, classLoader);
60
61 return new DynamicQueryImpl(DetachedCriteria.forClass(clazz, alias));
62 }
63
64 protected Class getImplClass(Class clazz) {
65 return getImplClass(clazz, null);
66 }
67
68 protected Class getImplClass(Class clazz, ClassLoader classLoader) {
69 if (!clazz.getName().endsWith("Impl")) {
70 String implClassName =
71 clazz.getPackage().getName() + ".impl." +
72 clazz.getSimpleName() + "Impl";
73
74 clazz = _classMap.get(implClassName);
75
76 if (clazz == null) {
77 try {
78 if (classLoader == null) {
79 Thread currentThread = Thread.currentThread();
80
81 classLoader = currentThread.getContextClassLoader();
82 }
83
84 clazz = classLoader.loadClass(implClassName);
85
86 _classMap.put(implClassName, clazz);
87 }
88 catch (Exception e) {
89 }
90 }
91 }
92
93 return clazz;
94 }
95
96 private Map<String, Class> _classMap = new HashMap<String, Class>();
97
98 }