コード例 #1
0
  @Override
  public Page<GroupGeneralData> retrieveAll(final SearchParameters searchParameters) {

    final AppUser currentUser = this.context.authenticatedUser();
    final String hierarchy = currentUser.getOffice().getHierarchy();
    final String hierarchySearchString = hierarchy + "%";

    final StringBuilder sqlBuilder = new StringBuilder(200);
    sqlBuilder.append("select SQL_CALC_FOUND_ROWS ");
    sqlBuilder.append(this.allGroupTypesDataMapper.schema());
    sqlBuilder.append(" where o.hierarchy like ?");

    final String extraCriteria = getGroupExtraCriteria(searchParameters);

    if (StringUtils.isNotBlank(extraCriteria)) {
      sqlBuilder.append(" and (").append(extraCriteria).append(")");
    }

    if (searchParameters.isOrderByRequested()) {
      sqlBuilder
          .append(" order by ")
          .append(searchParameters.getOrderBy())
          .append(' ')
          .append(searchParameters.getSortOrder());
    }

    if (searchParameters.isLimited()) {
      sqlBuilder.append(" limit ").append(searchParameters.getLimit());
      if (searchParameters.isOffset()) {
        sqlBuilder.append(" offset ").append(searchParameters.getOffset());
      }
    }

    final String sqlCountRows = "SELECT FOUND_ROWS()";
    return this.paginationHelper.fetchPage(
        this.jdbcTemplate,
        sqlCountRows,
        sqlBuilder.toString(),
        new Object[] {hierarchySearchString},
        this.allGroupTypesDataMapper);
  }