Index: lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/dao/PeerreviewUserDAO.java =================================================================== diff -u -re755d63f41781aa02a1fb97ae349019d01a58782 -r4d3e6f238197f6f125591b3a2d6e6c8916b59ee0 --- lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/dao/PeerreviewUserDAO.java (.../PeerreviewUserDAO.java) (revision e755d63f41781aa02a1fb97ae349019d01a58782) +++ lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/dao/PeerreviewUserDAO.java (.../PeerreviewUserDAO.java) (revision 4d3e6f238197f6f125591b3a2d6e6c8916b59ee0) @@ -45,21 +45,18 @@ int getCountUsersBySession(final Long toolSessionId, final Long excludeUserId); - List getUsersForTablesorter(final Long toolSessionId, final Long excludeUserId, int page, int size, - int sorting); - List getRatingsComments(Long toolContentId, Long toolSessionId, RatingCriteria criteria, Long userId, Integer page, - Integer size, int sorting, boolean getByUser, IRatingService coreRatingService); + Integer size, int sorting, String searchString, boolean getByUser, IRatingService coreRatingService); List getCommentsCounts(Long toolContentId, Long toolSessionId, RatingCriteria criteria, - Integer page, Integer size, int sorting); + Integer page, Integer size, int sorting, String searchString); List getDetailedRatingsComments(Long toolContentId, Long toolSessionId, Long criteriaId, Long itemId ); int getCountUsersBySession(Long toolSessionId); int createUsersForSession(PeerreviewSession session); - List getUserNotebookEntriesForTablesorter(final Long toolSessionId, int page, int size, int sorting, + List getUserNotebookEntriesForTablesorter(final Long toolSessionId, int page, int size, int sorting, String searchString, ICoreNotebookService coreNotebookService); } Index: lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/dao/hibernate/PeerreviewUserDAOHibernate.java =================================================================== diff -u -re755d63f41781aa02a1fb97ae349019d01a58782 -r4d3e6f238197f6f125591b3a2d6e6c8916b59ee0 --- lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/dao/hibernate/PeerreviewUserDAOHibernate.java (.../PeerreviewUserDAOHibernate.java) (revision e755d63f41781aa02a1fb97ae349019d01a58782) +++ lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/dao/hibernate/PeerreviewUserDAOHibernate.java (.../PeerreviewUserDAOHibernate.java) (revision 4d3e6f238197f6f125591b3a2d6e6c8916b59ee0) @@ -62,9 +62,6 @@ private static final String GET_COUNT_USERS_FOR_SESSION = "SELECT COUNT(*) FROM " + PeerreviewUser.class.getName() + " AS r WHERE r.session.sessionId=?"; - private static final String LOAD_USERS_FOR_SESSION_LIMIT_OLD = "FROM user in class PeerreviewUser " - + "WHERE user.session.sessionId=:toolSessionId AND user.userId!=:excludeUserId order by "; - @Override public PeerreviewUser getUserByUserIDAndSessionID(Long userID, Long sessionId) { List list = find(FIND_BY_USER_ID_SESSION_ID, new Object[] { userID, sessionId }); @@ -118,27 +115,6 @@ return ((Number) list.get(0)).intValue(); } - @Override - public List getUsersForTablesorter(final Long toolSessionId, final Long excludeUserId, int page, - int size, int sorting) { - String sortingOrder = ""; - switch (sorting) { - case PeerreviewConstants.SORT_BY_NO: - sortingOrder = "user.userId"; - break; - case PeerreviewConstants.SORT_BY_USERNAME_ASC: - sortingOrder = "user.firstName ASC"; - break; - case PeerreviewConstants.SORT_BY_USERNAME_DESC: - sortingOrder = "user.firstName DESC"; - break; - } - - return getSession().createQuery(LOAD_USERS_FOR_SESSION_LIMIT_OLD + sortingOrder) - .setLong("toolSessionId", toolSessionId.longValue()).setLong("excludeUserId", excludeUserId.longValue()) - .setFirstResult(page * size).setMaxResults(size).list(); - } - private static final String LOAD_USERS_FOR_SESSION_LIMIT = "FROM user in class PeerreviewUser " + "WHERE user.session.sessionId=:toolSessionId AND user.userId!=:excludeUserId order by "; @@ -169,11 +145,23 @@ + " LEFT JOIN ( "; private static final String FIND_USER_RATINGS_COMMENTS2 = " ) rating ON user.user_id = rating.item_id "; - + private void buildNameSearch(String searchString, StringBuilder sqlBuilder, boolean whereDone) { + if (!StringUtils.isBlank(searchString)) { + String[] tokens = searchString.trim().split("\\s+"); + for (String token : tokens) { + String escToken = StringEscapeUtils.escapeSql(token); + sqlBuilder.append(whereDone ? " AND ( " : " WHERE ( ") + .append("user.first_name LIKE '%").append(escToken) + .append("%' OR user.last_name LIKE '%").append(escToken).append("%' OR user.login_name LIKE '%") + .append(escToken).append("%') "); + } + } + } + @SuppressWarnings("unchecked") @Override public List getRatingsComments(Long toolContentId, Long toolSessionId, RatingCriteria criteria, Long userId, Integer page, - Integer size, int sorting, boolean getByUser, IRatingService coreRatingService) { + Integer size, int sorting, String searchString, boolean getByUser, IRatingService coreRatingService) { String sortingOrder = ""; switch (sorting) { case PeerreviewConstants.SORT_BY_NO: @@ -198,6 +186,8 @@ if ( ! getByUser) bldr.append("WHERE user.user_id = :userId "); + buildNameSearch(searchString, bldr, ! getByUser); + bldr.append(sortingOrder); String queryString = bldr.toString(); @@ -246,7 +236,7 @@ + " WHERE r.rating_criteria_id = :ratingCriteriaId " + " GROUP BY r.item_id ) rating ON user.user_id = rating.item_id "; public List getCommentsCounts(Long toolContentId, Long toolSessionId, RatingCriteria criteria, - Integer page, Integer size, int sorting) { + Integer page, Integer size, int sorting, String searchString) { String sortingOrder = ""; switch (sorting) { case PeerreviewConstants.SORT_BY_NO: @@ -266,6 +256,7 @@ } StringBuilder bldr = new StringBuilder(COUNT_COMMENTS_FOR_SESSION); + buildNameSearch(searchString, bldr, false); bldr.append(sortingOrder); String queryString = bldr.toString(); @@ -285,7 +276,7 @@ * Will return List<[user.user_id, user.first_name, user.last_name, notebook entry, notebook date]> */ public List getUserNotebookEntriesForTablesorter(final Long toolSessionId, int page, int size, int sorting, - ICoreNotebookService coreNotebookService) { + String searchString, ICoreNotebookService coreNotebookService) { String sortingOrder; switch (sorting) { @@ -319,6 +310,8 @@ queryText.append(notebookEntryStrings[1]); + buildNameSearch(searchString, queryText, true); + // Now specify the sort based on the switch statement above. queryText.append(sortingOrder);