Index: lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/dao/PeerreviewUserDAO.java =================================================================== diff -u -r4a6c446731f09a496394db2f52e60431d8160d53 -rbc7b7ad81b148bea93d5c0c734d2c13e9ffdb11e --- lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/dao/PeerreviewUserDAO.java (.../PeerreviewUserDAO.java) (revision 4a6c446731f09a496394db2f52e60431d8160d53) +++ lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/dao/PeerreviewUserDAO.java (.../PeerreviewUserDAO.java) (revision bc7b7ad81b148bea93d5c0c734d2c13e9ffdb11e) @@ -55,7 +55,7 @@ int getCountUsersBySession(final Long toolSessionId, final Long excludeUserId); List getRatingsComments(Long toolContentId, Long toolSessionId, RatingCriteria criteria, Long userId, - Integer page, Integer size, int sorting, String searchString, boolean getByUser, + Integer page, Integer size, int sorting, String searchString, boolean getByUser, boolean includeCurrentUser, IRatingService coreRatingService, IUserManagementService userManagementService); List getCommentsCounts(Long toolContentId, Long toolSessionId, RatingCriteria criteria, Integer page, @@ -74,7 +74,8 @@ int createUsersForSession(PeerreviewSession session); List getUserNotebookEntriesForTablesorter(final Long toolSessionId, int page, int size, int sorting, - String searchString, ICoreNotebookService coreNotebookService, IUserManagementService userManagementService); + String searchString, ICoreNotebookService coreNotebookService, + IUserManagementService userManagementService); /** * Returns list of pairs. Used by monitor's manageUsers functionality. Index: lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/dao/hibernate/PeerreviewUserDAOHibernate.java =================================================================== diff -u -rf627eb05bea14e2cd6782cd33cb2d3bc90ae070e -rbc7b7ad81b148bea93d5c0c734d2c13e9ffdb11e --- lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/dao/hibernate/PeerreviewUserDAOHibernate.java (.../PeerreviewUserDAOHibernate.java) (revision f627eb05bea14e2cd6782cd33cb2d3bc90ae070e) +++ lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/dao/hibernate/PeerreviewUserDAOHibernate.java (.../PeerreviewUserDAOHibernate.java) (revision bc7b7ad81b148bea93d5c0c734d2c13e9ffdb11e) @@ -46,10 +46,10 @@ private static final String FIND_BY_USER_ID_CONTENT_ID = "FROM " + PeerreviewUser.class.getName() + " AS u WHERE u.userId =? AND u.peerreview.contentId=?"; - + private static final String FIND_BY_USER_ID_SESSION_ID = "FROM " + PeerreviewUser.class.getName() + " AS u WHERE u.userId =? AND u.session.sessionId=?"; - + private static final String FIND_BY_SESSION_ID = "FROM " + PeerreviewUser.class.getName() + " AS u WHERE u.session.sessionId=? AND u.hidden=0"; @@ -61,22 +61,22 @@ @Override @SuppressWarnings("rawtypes") - public PeerreviewUser getUserByUserIDAndSessionID(Long userID, Long sessionId) { + public PeerreviewUser getUserByUserIDAndSessionID(Long userID, Long sessionId) { List list = find(FIND_BY_USER_ID_SESSION_ID, new Object[] { userID, sessionId }); if (list == null || list.size() == 0) { return null; } return (PeerreviewUser) list.get(0); } - + @Override public PeerreviewUser getUserByUid(Long userUid) { return (PeerreviewUser) this.find(PeerreviewUser.class, userUid); } @Override @SuppressWarnings("rawtypes") - public PeerreviewUser getUserByUserIDAndContentID(Long userId, Long contentId) { + public PeerreviewUser getUserByUserIDAndContentID(Long userId, Long contentId) { List list = find(FIND_BY_USER_ID_CONTENT_ID, new Object[] { userId, contentId }); if (list == null || list.size() == 0) { return null; @@ -92,7 +92,7 @@ @Override @SuppressWarnings("rawtypes") - public int getCountUsersBySession(final Long toolSessionId, final Long excludeUserId) { + public int getCountUsersBySession(final Long toolSessionId, final Long excludeUserId) { List list = find(GET_COUNT_USERS_FOR_SESSION_EXCLUDE_USER, new Object[] { toolSessionId, excludeUserId }); if (list == null || list.size() == 0) { @@ -103,7 +103,7 @@ @Override @SuppressWarnings("rawtypes") - public int getCountUsersBySession(final Long toolSessionId) { + public int getCountUsersBySession(final Long toolSessionId) { List list = find(GET_COUNT_USERS_FOR_SESSION, new Object[] { toolSessionId }); if (list == null || list.size() == 0) { @@ -128,36 +128,36 @@ query.setParameter("session_uid", session.getUid()).setParameter("tool_session_id", session.getSessionId()); return query.executeUpdate(); } - + // column order is very important. The potential itemId must be first, followed by rating.*, // and the user's name and portrait id must be the last two columns or the DTO conversion will fail. // See PeerreviewServiceImpl.getUsersRatingsCommentsByCriteriaId private static final String FIND_USER_RATINGS_COMMENTS_SELECT = "SELECT user.user_id, rating.*, CONCAT(user.first_name, \" \", user.last_name) "; - private static final String FIND_USER_RATINGS_COMMENTS1 = " FROM tl_laprev11_peerreview p " + private static final String FIND_USER_RATINGS_COMMENTS1 = " FROM tl_laprev11_peerreview p " + " JOIN tl_laprev11_session sess ON p.content_id = :toolContentId AND p.uid = sess.peerreview_uid AND sess.session_id = :toolSessionId " + " JOIN tl_laprev11_user user ON user.session_uid = sess.uid AND user.hidden = 0 "; - private static final String FIND_USER_RATINGS_COMMENTS2 = " LEFT JOIN ( "; + private static final String FIND_USER_RATINGS_COMMENTS2 = " LEFT JOIN ( "; private static final String FIND_USER_RATINGS_COMMENTS3 = " ) 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("%') "); + 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, String searchString, boolean getByUser, IRatingService coreRatingService, + public List getRatingsComments(Long toolContentId, Long toolSessionId, RatingCriteria criteria, + Long userId, Integer page, Integer size, int sorting, String searchString, boolean getByUser, + boolean includeCurrentUser, IRatingService coreRatingService, IUserManagementService userManagementService) { - + String sortingOrder = ""; switch (sorting) { case PeerreviewConstants.SORT_BY_NO: @@ -170,52 +170,54 @@ sortingOrder = " ORDER BY user.first_name DESC"; break; case PeerreviewConstants.SORT_BY_AVERAGE_RESULT_ASC: - if ( criteria.isCommentRating() ) { - sortingOrder = " ORDER BY rating.comment ASC" ; + if (criteria.isCommentRating()) { + sortingOrder = " ORDER BY rating.comment ASC"; } else { sortingOrder = " ORDER BY rating.average_rating ASC, rating.comment ASC "; } break; case PeerreviewConstants.SORT_BY_AVERAGE_RESULT_DESC: - if ( criteria.isCommentRating() ) { - sortingOrder = " ORDER BY rating.comment DESC" ; + if (criteria.isCommentRating()) { + sortingOrder = " ORDER BY rating.comment DESC"; } else { sortingOrder = " ORDER BY rating.average_rating DESC, rating.comment ASC "; } break; } String[] portraitStrings = userManagementService.getPortraitSQL("user.user_id"); - - StringBuilder bldr = new StringBuilder(FIND_USER_RATINGS_COMMENTS_SELECT); - bldr.append(portraitStrings[0]); - bldr.append(FIND_USER_RATINGS_COMMENTS1); - bldr.append(portraitStrings[1]); - bldr.append(FIND_USER_RATINGS_COMMENTS2); - bldr.append(coreRatingService.getRatingSelectJoinSQL(criteria.getRatingStyle(), getByUser)); - bldr.append(FIND_USER_RATINGS_COMMENTS3); - if ( ! getByUser) - bldr.append("WHERE user.user_id = :userId "); - - buildNameSearch(searchString, bldr, ! getByUser); - bldr.append(sortingOrder); - + StringBuilder bldr = new StringBuilder(FIND_USER_RATINGS_COMMENTS_SELECT); + bldr.append(portraitStrings[0]); + bldr.append(FIND_USER_RATINGS_COMMENTS1); + bldr.append(portraitStrings[1]); + bldr.append(FIND_USER_RATINGS_COMMENTS2); + bldr.append(coreRatingService.getRatingSelectJoinSQL(criteria.getRatingStyle(), getByUser)); + bldr.append(FIND_USER_RATINGS_COMMENTS3); + if (!getByUser) { + bldr.append("WHERE user.user_id = :userId "); + } else if (!includeCurrentUser) { + bldr.append("WHERE user.user_id != :userId "); + } + + buildNameSearch(searchString, bldr, !getByUser); + + bldr.append(sortingOrder); + String queryString = bldr.toString(); - NativeQuery query = getSession().createNativeQuery(queryString) - .setParameter("toolContentId", toolContentId) + NativeQuery query = getSession().createNativeQuery(queryString).setParameter("toolContentId", toolContentId) .setParameter("toolSessionId", toolSessionId) .setParameter("ratingCriteriaId", criteria.getRatingCriteriaId()); - if ( queryString.contains(":userId") ) { - query.setParameter("userId", userId); + if (queryString.contains(":userId")) { + query.setParameter("userId", userId); } - if ( page != null && size != null ) { + if (page != null && size != null) { query.setFirstResult(page * size).setMaxResults(size); } return (List) query.list(); } - // Part of this and the next method should be moved out to RatingDAO in common but not sure on usage at present so leave it here for now. The code is + // Part of this and the next method should be moved out to RatingDAO in common but not sure on usage at present so leave it here for now. The code is // used in peer review monitoring and probably wouldn't be used by other tools. // when joining to comments, item_id = :itemId picks up the comments for star and comment styles, while item_id = rating_criteria_id // picks up the justification comments left for hedging (which is one comment per user for all ratings for this criteria) @@ -227,28 +229,28 @@ + " WHERE rating_criteria_id = :ratingCriteriaId AND item_id = :itemId) r ON r.user_id = user.user_id " + " LEFT JOIN ( SELECT rc.item_id, rc.comment, rc.user_id FROM lams_rating_comment rc " + " JOIN lams_rating_criteria criteria ON criteria.rating_criteria_id = :ratingCriteriaId " - + " WHERE rc.rating_criteria_id = :ratingCriteriaId AND (rc.item_id = :itemId || (rc.item_id = rc.rating_criteria_id AND criteria.rating_style=3)) ) rc ON rc.user_id = user.user_id " + + " WHERE rc.rating_criteria_id = :ratingCriteriaId AND (rc.item_id = :itemId || (rc.item_id = rc.rating_criteria_id AND criteria.rating_style=3)) ) rc ON rc.user_id = user.user_id " + " WHERE r.rating IS NOT NULL OR rc.comment IS NOT NULL"; + @SuppressWarnings("unchecked") @Override - public List getDetailedRatingsComments(Long toolContentId, Long toolSessionId, Long criteriaId, Long itemId ) { + public List getDetailedRatingsComments(Long toolContentId, Long toolSessionId, Long criteriaId, + Long itemId) { NativeQuery query = getSession().createNativeQuery(SELECT_ALL_RATINGS_COMMENTS_LEFT_FOR_ITEM) - .setParameter("toolContentId", toolContentId) - .setParameter("toolSessionId", toolSessionId) - .setParameter("ratingCriteriaId", criteriaId) - .setParameter("itemId", itemId); + .setParameter("toolContentId", toolContentId).setParameter("toolSessionId", toolSessionId) + .setParameter("ratingCriteriaId", criteriaId).setParameter("itemId", itemId); return (List) query.list(); } private static final String COUNT_COMMENTS_FOR_SESSION_SELECT = "SELECT user.user_id, rating.comment_count, CONCAT(user.first_name, \" \", user.last_name) "; private static final String COUNT_COMMENTS_FOR_SESSION_FROM = " FROM tl_laprev11_peerreview p " + " JOIN tl_laprev11_session sess ON p.content_id = :toolContentId AND p.uid = sess.peerreview_uid AND sess.session_id = :toolSessionId " + " JOIN tl_laprev11_user user ON user.session_uid = sess.uid AND user.hidden = 0 "; - private static final String COUNT_COMMENTS_FOR_SESSION_RATING_JOIN = " LEFT JOIN ( " - + " SELECT r.item_id, count(r.comment) comment_count " - + " FROM lams_rating_comment r " + private static final String COUNT_COMMENTS_FOR_SESSION_RATING_JOIN = " LEFT JOIN ( " + + " SELECT r.item_id, count(r.comment) comment_count " + " FROM lams_rating_comment r " + " WHERE r.rating_criteria_id = :ratingCriteriaId " + " GROUP BY r.item_id ) rating ON user.user_id = rating.item_id "; + @SuppressWarnings("unchecked") @Override public List getCommentsCounts(Long toolContentId, Long toolSessionId, RatingCriteria criteria, @@ -274,20 +276,17 @@ String[] portraitStrings = userManagementService.getPortraitSQL("user.user_id"); - StringBuilder bldr = new StringBuilder(COUNT_COMMENTS_FOR_SESSION_SELECT) - .append(portraitStrings[0]) - .append(COUNT_COMMENTS_FOR_SESSION_FROM) - .append(portraitStrings[1]) - .append(COUNT_COMMENTS_FOR_SESSION_RATING_JOIN); - buildNameSearch(searchString, bldr, false); - bldr.append(sortingOrder); - + StringBuilder bldr = new StringBuilder(COUNT_COMMENTS_FOR_SESSION_SELECT).append(portraitStrings[0]) + .append(COUNT_COMMENTS_FOR_SESSION_FROM).append(portraitStrings[1]) + .append(COUNT_COMMENTS_FOR_SESSION_RATING_JOIN); + buildNameSearch(searchString, bldr, false); + bldr.append(sortingOrder); + String queryString = bldr.toString(); - NativeQuery query = getSession().createNativeQuery(queryString) - .setParameter("toolContentId", toolContentId) + NativeQuery query = getSession().createNativeQuery(queryString).setParameter("toolContentId", toolContentId) .setParameter("toolSessionId", toolSessionId) .setParameter("ratingCriteriaId", criteria.getRatingCriteriaId()); - if ( page != null && size != null ) { + if (page != null && size != null) { query.setFirstResult(page * size).setMaxResults(size); } return (List) query.list(); @@ -298,8 +297,9 @@ /** * 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, - String searchString, ICoreNotebookService coreNotebookService, IUserManagementService userManagementService) { + public List getUserNotebookEntriesForTablesorter(final Long toolSessionId, int page, int size, + int sorting, String searchString, ICoreNotebookService coreNotebookService, + IUserManagementService userManagementService) { String sortingOrder; switch (sorting) { @@ -321,48 +321,44 @@ } String[] notebookEntryStrings = coreNotebookService.getNotebookEntrySQLStrings(toolSessionId.toString(), - PeerreviewConstants.TOOL_SIGNATURE, "user.user_id", true); - + PeerreviewConstants.TOOL_SIGNATURE, "user.user_id", true); + String[] portraitStrings = userManagementService.getPortraitSQL("user.user_id"); // Basic select for the user records StringBuilder queryText = new StringBuilder(); - queryText.append("SELECT user.user_id, user.first_name, user.last_name ") - .append(portraitStrings[0]) - .append(notebookEntryStrings[0]) - .append(" FROM tl_laprev11_user user ") + queryText.append("SELECT user.user_id, user.first_name, user.last_name ").append(portraitStrings[0]) + .append(notebookEntryStrings[0]).append(" FROM tl_laprev11_user user ") .append(" JOIN tl_laprev11_session session ON session.session_id = :toolSessionId AND user.session_uid = session.uid"); queryText.append(portraitStrings[1]); queryText.append(notebookEntryStrings[1]); - buildNameSearch(searchString, queryText, false); + buildNameSearch(searchString, queryText, false); // Now specify the sort based on the switch statement above. queryText.append(sortingOrder); NativeQuery query = getSession().createNativeQuery(queryText.toString()); - query.addScalar("user_id", LongType.INSTANCE) - .addScalar("first_name", StringType.INSTANCE) - .addScalar("last_name", StringType.INSTANCE) - .addScalar("portraitId", LongType.INSTANCE) + query.addScalar("user_id", LongType.INSTANCE).addScalar("first_name", StringType.INSTANCE) + .addScalar("last_name", StringType.INSTANCE).addScalar("portraitId", LongType.INSTANCE) .addScalar("notebookEntry", StringType.INSTANCE) .addScalar("notebookModifiedDate", TimestampType.INSTANCE) - .setParameter("toolSessionId", toolSessionId.longValue()) - .setFirstResult(page * size).setMaxResults(size); + .setParameter("toolSessionId", toolSessionId.longValue()).setFirstResult(page * size) + .setMaxResults(size); return query.list(); } - + @SuppressWarnings("unchecked") @Override public List getPagedUsers(Long toolSessionId, Integer page, Integer size, int sorting, String searchString) { String GET_USERS_FOR_SESSION = "SELECT user.uid, user.hidden, CONCAT(user.firstName, ' ', user.lastName) FROM " + PeerreviewUser.class.getName() + " user WHERE user.session.sessionId = :toolSessionId "; - + String sortingOrder = ""; switch (sorting) { case PeerreviewConstants.SORT_BY_NO: @@ -376,7 +372,7 @@ break; } - StringBuilder bldr = new StringBuilder(GET_USERS_FOR_SESSION); + StringBuilder bldr = new StringBuilder(GET_USERS_FOR_SESSION); if (!StringUtils.isBlank(searchString)) { String[] tokens = searchString.trim().split("\\s+"); for (String token : tokens) { @@ -386,14 +382,13 @@ .append(escToken).append("%') "); } } - bldr.append(sortingOrder); - + bldr.append(sortingOrder); + String queryString = bldr.toString(); - Query query = getSession().createQuery(queryString) - .setParameter("toolSessionId", toolSessionId); - if ( page != null && size != null ) { + Query query = getSession().createQuery(queryString).setParameter("toolSessionId", toolSessionId); + if (page != null && size != null) { query.setFirstResult(page * size).setMaxResults(size); } - return (List) query.list(); + return query.list(); } } Index: lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/service/PeerreviewServiceImpl.java =================================================================== diff -u -rf13b8a48b9a1cfaee56a654ba751a9736616b726 -rbc7b7ad81b148bea93d5c0c734d2c13e9ffdb11e --- lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/service/PeerreviewServiceImpl.java (.../PeerreviewServiceImpl.java) (revision f13b8a48b9a1cfaee56a654ba751a9736616b726) +++ lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/service/PeerreviewServiceImpl.java (.../PeerreviewServiceImpl.java) (revision bc7b7ad81b148bea93d5c0c734d2c13e9ffdb11e) @@ -29,7 +29,6 @@ import java.util.Collections; import java.util.Date; import java.util.Iterator; -import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import java.util.Map; @@ -82,7 +81,6 @@ import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.lamsfoundation.lams.util.JsonUtil; import org.lamsfoundation.lams.util.MessageService; -import org.lamsfoundation.lams.util.excel.ExcelCell; import org.lamsfoundation.lams.util.excel.ExcelSheet; import org.springframework.web.util.HtmlUtils; @@ -295,8 +293,8 @@ numUsersCreated = peerreviewUserDao.createUsersForSession(session); } - if ( log.isDebugEnabled() ) { - log.debug("Peer Review UserCreateThread " + toolSessionId + ": numUsersCreated "+numUsersCreated); + if (log.isDebugEnabled()) { + log.debug("Peer Review UserCreateThread " + toolSessionId + ": numUsersCreated " + numUsersCreated); } creatingUsersForSessionIds.remove(toolSessionId); @@ -354,7 +352,8 @@ } List rawData = peerreviewUserDao.getRatingsComments(toolContentId, toolSessionId, criteria, - currentUserId, null, null, sorting, searchString, getByUser, ratingService, userManagementService); + currentUserId, null, null, sorting, searchString, getByUser, !getByUser || getAllUsers, ratingService, + userManagementService); for (Object[] raw : rawData) { raw[raw.length - 2] = HtmlUtils.htmlEscape((String) raw[raw.length - 2]); @@ -370,7 +369,8 @@ boolean getAllUsers, boolean getByUser, boolean needRatesPerUser) { List rawData = peerreviewUserDao.getRatingsComments(toolContentId, toolSessionId, criteria, - currentUserId, page, size, sorting, searchString, getByUser, ratingService, userManagementService); + currentUserId, page, size, sorting, searchString, getByUser, !getByUser || getAllUsers, ratingService, + userManagementService); for (Object[] raw : rawData) { raw[raw.length - 2] = HtmlUtils.htmlEscape((String) raw[raw.length - 2]); @@ -424,7 +424,7 @@ public void auditLogStartEditingActivityInMonitor(long toolContentID) { toolService.auditLogStartEditingActivityInMonitor(toolContentID); } - + @Override public boolean isLastActivity(Long toolSessionId) { return toolService.isLastActivity(toolSessionId); @@ -468,19 +468,21 @@ public String generateEmailReportToUser(Long toolContentId, Long sessionId, Long userId) { PeerreviewSession session = peerreviewSessionDao.getSessionBySessionId(sessionId); Peerreview peerreview = getPeerreviewByContentId(toolContentId); - return new EmailAnalysisBuilder(peerreview, session, ratingService, peerreviewSessionDao, - peerreviewUserDao, this, messageService).generateHTMLEMailForLearner(userId); + return new EmailAnalysisBuilder(peerreview, session, ratingService, peerreviewSessionDao, peerreviewUserDao, + this, messageService).generateHTMLEMailForLearner(userId); } @Override public int emailReportToUser(Long toolContentId, Long sessionId, Long userId, String email) { PeerreviewUser user = peerreviewUserDao.getUserByUserIDAndSessionID(userId, sessionId); - if ( user != null ) { - eventNotificationService.sendMessage(null, userId.intValue(), IEventNotificationService.DELIVERY_METHOD_MAIL, - getResultsEmailSubject(user.getSession().getPeerreview()), email, true); - return 1; + if (user != null) { + eventNotificationService.sendMessage(null, userId.intValue(), + IEventNotificationService.DELIVERY_METHOD_MAIL, + getResultsEmailSubject(user.getSession().getPeerreview()), email, true); + return 1; } else { - log.error("Unable to send Peer Review email as user is not in session. SessionId="+sessionId+" userId="+userId); + log.error("Unable to send Peer Review email as user is not in session. SessionId=" + sessionId + " userId=" + + userId); return 0; } } @@ -883,7 +885,7 @@ public List getConfidenceLevels(Long toolSessionId) { return null; } - + @Override public boolean isUserGroupLeader(Long userId, Long toolSessionId) { return false; @@ -896,7 +898,7 @@ @Override @SuppressWarnings("rawtypes") - public Class[] getSupportedToolOutputDefinitionClasses(int definitionType) { + public Class[] getSupportedToolOutputDefinitionClasses(int definitionType) { return null; }