Example #1
0
  public List<Member> getGroupMembers(
      PerunSession sess,
      Group group,
      List<Status> statuses,
      boolean excludeStatusInsteadOfIncludeStatus)
      throws InternalErrorException {
    try {
      MapSqlParameterSource parameters = new MapSqlParameterSource();
      List<Integer> statusesCodes = new ArrayList<Integer>();
      for (Status status : statuses) {
        statusesCodes.add(status.getCode());
      }
      parameters.addValue("statuses", statusesCodes);
      parameters.addValue("group_id", group.getId());

      if (excludeStatusInsteadOfIncludeStatus) {
        // Exclude members with one of the status
        return this.namedParameterJdbcTemplate.query(
            "select "
                + MembersManagerImpl.memberMappingSelectQuery
                + ", groups_members.membership_type as membership_type from groups_members join members on members.id=groups_members.member_id "
                + " where groups_members.group_id=:group_id and members.status"
                + Compatibility.castToInteger()
                + " not in (:statuses)",
            parameters,
            MembersManagerImpl.MEMBER_MAPPER);
      } else {
        // Include members with one of the status
        return this.namedParameterJdbcTemplate.query(
            "select "
                + MembersManagerImpl.memberMappingSelectQuery
                + ", groups_members.membership_type as membership_type from groups_members join members on members.id=groups_members.member_id "
                + " where groups_members.group_id=:group_id and members.status"
                + Compatibility.castToInteger()
                + " in (:statuses)",
            parameters,
            MembersManagerImpl.MEMBER_MAPPER);
      }
    } catch (EmptyResultDataAccessException e) {
      return new ArrayList<Member>();
    } catch (RuntimeException e) {
      throw new InternalErrorException(e);
    }
  }