Index: lams_common/src/java/org/lamsfoundation/lams/outcome/dao/hibernate/OutcomeDAO.java =================================================================== diff -u -rb232f1f11bbdb5c8455f29ab5489dc8f86b0b7d4 -r30ee5df5e1f8b30c5d0ca9696530c28b35bd9fcb --- lams_common/src/java/org/lamsfoundation/lams/outcome/dao/hibernate/OutcomeDAO.java (.../OutcomeDAO.java) (revision b232f1f11bbdb5c8455f29ab5489dc8f86b0b7d4) +++ lams_common/src/java/org/lamsfoundation/lams/outcome/dao/hibernate/OutcomeDAO.java (.../OutcomeDAO.java) (revision 30ee5df5e1f8b30c5d0ca9696530c28b35bd9fcb) @@ -44,12 +44,12 @@ private static final String FIND_CONTENT_FOLDER_ID_BY_ORGANISATION = "SELECT * FROM (SELECT content_folder_id FROM lams_outcome WHERE organisation_id ? " + "UNION SELECT content_folder_id FROM lams_outcome_scale WHERE organisation_id ?) AS a WHERE content_folder_id IS NOT NULL LIMIT 1"; - private static final String FIND_OUTCOMES_SORTED_BY_NAME = "FROM Outcome o WHERE (o.organisation IS NULL ?) ORDER BY o.name, o.code"; + private static final String FIND_OUTCOMES_SORTED_BY_NAME = "FROM Outcome o WHERE ? ORDER BY o.name, o.code"; private static final String FIND_AUTHOR_ORGANISATIONS = "SELECT uor.userOrganisation.organisation.organisationId FROM UserOrganisationRole uor " + "WHERE uor.userOrganisation.user.userId = ? AND uor.role.roleId = " + Role.ROLE_AUTHOR; - private static final String FIND_SCALES_SORTED_BY_NAME = "FROM OutcomeScale o WHERE (o.organisation IS NULL ?) ORDER BY o.name, o.code"; + private static final String FIND_SCALES_SORTED_BY_NAME = "FROM OutcomeScale o WHERE o.organisation IS NULL ? ORDER BY o.name, o.code"; /** * Finds an existing content folder ID for the given organisation outcomes or scales, or for global ones @@ -70,22 +70,24 @@ @SuppressWarnings("unchecked") public List getOutcomesSortedByName(Integer organisationId) { String queryString = FIND_OUTCOMES_SORTED_BY_NAME.replace("?", - organisationId == null ? "" : "OR o.organisation.organisationId = " + organisationId); + organisationId == null ? "" : "OR o.organisation.organisationId = " + organisationId + ")"); return find(queryString); } @Override @SuppressWarnings("unchecked") public List getOutcomesSortedByName(String search, Set organisationIds) { String queryString = FIND_OUTCOMES_SORTED_BY_NAME; - if (organisationIds != null && !organisationIds.isEmpty()) { - queryString = queryString.replace("?", "OR o.organisation.organisationId IN (:organisationIds) ? "); - } if (StringUtils.isNotBlank(search)) { - queryString = queryString.replace("?", "AND (o.name LIKE :search OR o.code LIKE :search)"); + queryString = queryString.replace("?", "(o.name LIKE :search OR o.code LIKE :search) AND ?"); } + queryString = queryString.replace("?", "(o.organisation IS NULL ?)"); + if (organisationIds != null && !organisationIds.isEmpty()) { + queryString = queryString.replace("?", "OR o.organisation.organisationId IN (:organisationIds)"); + } queryString = queryString.replace("?", ""); + Query query = getSession().createQuery(queryString); if (organisationIds != null && !organisationIds.isEmpty()) { query.setParameterList("organisationIds", organisationIds);