Author: tolusha
Date: 2010-07-09 06:16:44 -0400 (Fri, 09 Jul 2010)
New Revision: 2760
Modified:
core/branches/2.3.x/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/HibernateUserListAccess.java
core/branches/2.3.x/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/SimpleHibernateUserListAccess.java
core/branches/2.3.x/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/UserDAOImpl.java
Log:
EXOJCR-851: Searching users with special characters in name
Modified:
core/branches/2.3.x/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/HibernateUserListAccess.java
===================================================================
---
core/branches/2.3.x/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/HibernateUserListAccess.java 2010-07-09
10:12:59 UTC (rev 2759)
+++
core/branches/2.3.x/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/HibernateUserListAccess.java 2010-07-09
10:16:44 UTC (rev 2760)
@@ -42,6 +42,9 @@
import org.exoplatform.services.organization.User;
import org.hibernate.Session;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* Created by The eXo Platform SAS.
*
@@ -67,6 +70,11 @@
protected String countQuery;
/**
+ * Binded fields.
+ */
+ protected Map<String, Object> binding;
+
+ /**
* HibernateUserListAccess constructor.
*
* @param service
@@ -81,9 +89,31 @@
this.service = service;
this.findQuery = findQuery;
this.countQuery = countQuery;
+ this.binding = new HashMap<String, Object>();
}
/**
+ * HibernateUserListAccess constructor.
+ *
+ * @param service
+ * The Hibernate Service.
+ * @param findQuery
+ * Find query string
+ * @param countQuery
+ * Count query string
+ * @param binding
+ * Binded fields
+ */
+ public HibernateUserListAccess(HibernateService service, String findQuery, String
countQuery,
+ Map<String, Object> binding)
+ {
+ this.service = service;
+ this.findQuery = findQuery;
+ this.countQuery = countQuery;
+ this.binding = binding;
+ }
+
+ /**
* {@inheritDoc}
*/
public int getSize() throws Exception
Modified:
core/branches/2.3.x/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/SimpleHibernateUserListAccess.java
===================================================================
---
core/branches/2.3.x/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/SimpleHibernateUserListAccess.java 2010-07-09
10:12:59 UTC (rev 2759)
+++
core/branches/2.3.x/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/SimpleHibernateUserListAccess.java 2010-07-09
10:16:44 UTC (rev 2760)
@@ -44,6 +44,8 @@
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
/**
* Created by The eXo Platform SAS.
@@ -70,11 +72,33 @@
}
/**
+ * SimpliHibernateUserListAccess constructor.
+ *
+ * @param service
+ * The Hibernate Service.
+ * @param findQuery
+ * Find query string
+ * @param countQuery
+ * Count query string
+ * @param binding
+ * Binded fields
+ */
+ public SimpleHibernateUserListAccess(HibernateService service, String findQuery,
String countQuery,
+ Map<String, Object> binding)
+ {
+ super(service, findQuery, countQuery, binding);
+ }
+
+ /**
* {@inheritDoc}
*/
+ @Override
protected int getSize(Session session) throws Exception
{
- List l = session.createQuery(countQuery).list();
+ Query query = session.createQuery(countQuery);
+ bindFields(query);
+
+ List l = query.list();
Number count = (Number)l.get(0);
return count.intValue();
@@ -83,6 +107,7 @@
/**
* {@inheritDoc}
*/
+ @Override
protected User[] load(Session session, int index, int length) throws Exception
{
if (index < 0)
@@ -94,8 +119,9 @@
User[] users = new User[length];
Query query = session.createQuery(findQuery);
+ bindFields(query);
+
Iterator<Object> results = query.iterate();
-
for (int p = 0, counter = 0; counter < length; p++)
{
if (!results.hasNext())
@@ -113,4 +139,18 @@
return users;
}
+ /**
+ * BindFields.
+ *
+ * @param query
+ * Query
+ */
+ private void bindFields(Query query)
+ {
+ for (Entry<String, Object> entry : binding.entrySet())
+ {
+ query.setParameter(entry.getKey(), entry.getValue());
+ }
+ }
+
}
Modified:
core/branches/2.3.x/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/UserDAOImpl.java
===================================================================
---
core/branches/2.3.x/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/UserDAOImpl.java 2010-07-09
10:12:59 UTC (rev 2759)
+++
core/branches/2.3.x/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/UserDAOImpl.java 2010-07-09
10:16:44 UTC (rev 2760)
@@ -195,7 +195,8 @@
oq.addGT("lastLoginTime", q.getFromLoginDate());
oq.addLT("lastLoginTime", q.getToLoginDate());
- return new SimpleHibernateUserListAccess(service_, oq.getHibernateQuery(),
oq.getHibernateCountQuery());
+ return new SimpleHibernateUserListAccess(service_,
oq.getHibernateQueryWithBinding(), oq
+ .getHibernateCountQueryWithBinding(), oq.getBindingFields());
}
public LazyPageList<User> findUsersByGroup(String groupId) throws Exception
Show replies by date