Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -r56e673c6a6897edeea5967c0839e402223698d99 -r73d514c4abd3da68dfa6fbb96fd3141c2726b6e2 Binary files differ Index: lams_common/src/java/org/lamsfoundation/lams/dao/hibernate/BaseDAO.java =================================================================== diff -u -r6633f5d5c7844c27582a9b323fead87fac99dfd5 -r73d514c4abd3da68dfa6fbb96fd3141c2726b6e2 --- lams_common/src/java/org/lamsfoundation/lams/dao/hibernate/BaseDAO.java (.../BaseDAO.java) (revision 6633f5d5c7844c27582a9b323fead87fac99dfd5) +++ lams_common/src/java/org/lamsfoundation/lams/dao/hibernate/BaseDAO.java (.../BaseDAO.java) (revision 73d514c4abd3da68dfa6fbb96fd3141c2726b6e2) @@ -27,6 +27,7 @@ import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -70,6 +71,7 @@ private static final String SPACE = " "; private static final String SPOT = "."; private static final String EQUAL_TO_WHAT = "=?"; + private static final String LIKE_WHAT = " like ?"; private static Logger log = Logger.getLogger(BaseDAO.class); @@ -175,7 +177,7 @@ * @see org.lamsfoundation.lams.dao.IBaseDAO#deleteByProperties(java.lang.Class, java.util.Map) */ public void deleteByProperties(Class clazz, Map properties) { - Qv qv = buildQueryString(clazz,properties,DELETE); + Qv qv = buildQueryString(clazz,properties,DELETE,EQUAL_TO_WHAT); getHibernateTemplate().bulkUpdate(qv.queryString,qv.values); } @@ -217,7 +219,7 @@ * @see org.lamsfoundation.lams.dao.IBaseDAO#findByProperties(java.lang.Class, java.util.Map) */ public List findByProperties(Class clazz, Map properties) { - Qv qv = buildQueryString(clazz,properties,SELECT); + Qv qv = buildQueryString(clazz,properties,SELECT,EQUAL_TO_WHAT); return getHibernateTemplate().find(qv.queryString,qv.values); } @@ -274,23 +276,27 @@ } public List searchByStringProperties(Class clazz, Map properties) { - //TODO implement me - return null; + Map p = new HashMap(); + for(Map.Entry entry : properties.entrySet()){ + p.put(entry.getKey(), (Object)entry.getValue()); + } + Qv qv = buildQueryString(clazz,p,SELECT,LIKE_WHAT); + return getHibernateTemplate().find(qv.queryString,qv.values); } public List searchByNumberSpan(Class clazz, String name, Integer min, Boolean minIncluded, Integer max, Boolean maxIncluded) { //TODO implement me return null; } - - private Qv buildQueryString(Class clazz, Map properties, String operation){ + + private Qv buildQueryString(Class clazz, Map properties, String operation, String condition){ String clazzName = clazz.getSimpleName(); String objName = createObjectName(clazzName); StringBuffer queryString = new StringBuffer(operation).append(clazzName).append(SPACE).append(objName).append(WHERE); Object[] values = new Object[properties.size()]; int i=0; for(Map.Entry entry : properties.entrySet()){ - queryString.append(objName).append(SPOT).append(entry.getKey()).append(EQUAL_TO_WHAT); + queryString.append(objName).append(SPOT).append(entry.getKey()).append(condition); if(i!=properties.size()-1){ queryString.append(AND); } Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java =================================================================== diff -u -r3d71a49e4ac4155d5624c517ec35da85ced50af3 -r73d514c4abd3da68dfa6fbb96fd3141c2726b6e2 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision 3d71a49e4ac4155d5624c517ec35da85ced50af3) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision 73d514c4abd3da68dfa6fbb96fd3141c2726b6e2) @@ -147,6 +147,13 @@ */ public List findAnythingLike(Object object); + /** + * @param clazz + * @param properties + * @return a list of objects which have similar property values + */ + public List searchByStringProperties(Class clazz, Map properties); + /** * Retrieves a tree of organisations for a user. The top of the tree is a "dummy" root * organisation, just so that we have a real tree. This makes life easier for Flash. @@ -290,4 +297,5 @@ * @return a list of roles according to the organisation type and whether you want sysadmin or not */ public List getRolesForOrgType(OrganisationType orgType, Boolean sysadmin); + } Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java =================================================================== diff -u -r3d71a49e4ac4155d5624c517ec35da85ced50af3 -r73d514c4abd3da68dfa6fbb96fd3141c2726b6e2 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision 3d71a49e4ac4155d5624c517ec35da85ced50af3) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision 73d514c4abd3da68dfa6fbb96fd3141c2726b6e2) @@ -161,6 +161,10 @@ public List findAnythingLike(Object object) { return baseDAO.findAnythingLike(object); } + + public List searchByStringProperties(Class clazz, Map properties) { + return baseDAO.searchByStringProperties(clazz, properties); + } /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getOrganisationRolesForUser(org.lamsfoundation.lams.usermanagement.User, java.util.List)