Пример #1
0
  private static void setPagination(
      HttpServletRequest request,
      DiscoverQuery queryArgs,
      DiscoveryConfiguration discoveryConfiguration) {
    int start = UIUtil.getIntParameter(request, "start");
    // can't start earlier than 0 in the results!
    if (start < 0) {
      start = 0;
    }

    String sortBy = request.getParameter("sort_by");
    String sortOrder = request.getParameter("order");

    DiscoverySortConfiguration searchSortConfiguration =
        discoveryConfiguration.getSearchSortConfiguration();
    if (sortBy == null) {
      // Attempt to find the default one, if none found we use SCORE
      sortBy = "score";
      if (searchSortConfiguration != null) {
        for (DiscoverySortFieldConfiguration sortFieldConfiguration :
            searchSortConfiguration.getSortFields()) {
          if (sortFieldConfiguration.equals(searchSortConfiguration.getDefaultSort())) {
            sortBy =
                SearchUtils.getSearchService()
                    .toSortFieldIndex(
                        sortFieldConfiguration.getMetadataField(),
                        sortFieldConfiguration.getType());
          }
        }
      }
    }

    if (sortOrder == null && searchSortConfiguration != null) {
      sortOrder = searchSortConfiguration.getDefaultSortOrder().toString();
    }
    if (sortBy != null) {
      if ("asc".equalsIgnoreCase(sortOrder)) {
        queryArgs.setSortField(sortBy, SORT_ORDER.asc);
      } else {
        queryArgs.setSortField(sortBy, SORT_ORDER.desc);
      }
    }

    int rpp = UIUtil.getIntParameter(request, "rpp");
    // Override the page setting if exporting metadata
    if ("submit_export_metadata".equals(UIUtil.getSubmitButton(request, "submit"))) {
      queryArgs.setStart(0);
      queryArgs.setMaxResults(Integer.MAX_VALUE);
      // search only for items other objects are not exported
      queryArgs.addFilterQueries("search.resourcetype:2");
    } else {
      // String groupBy = request.getParameter("group_by");
      //
      // // Enable groupBy collapsing if designated
      // if (groupBy != null && !groupBy.equalsIgnoreCase("none")) {
      // /** Construct a Collapse Field Query */
      // queryArgs.addProperty("collapse.field", groupBy);
      // queryArgs.addProperty("collapse.threshold", "1");
      // queryArgs.addProperty("collapse.includeCollapsedDocs.fl",
      // "handle");
      // queryArgs.addProperty("collapse.facet", "before");
      //
      // //queryArgs.a type:Article^2
      //
      // // TODO: This is a hack to get Publications (Articles) to always
      // be at the top of Groups.
      // // TODO: I think the can be more transparently done in the solr
      // solrconfig.xml with DISMAX and boosting
      // /** sort in groups to get publications to top */
      // queryArgs.setSortField("dc.type", DiscoverQuery.SORT_ORDER.asc);
      //
      // }

      if (rpp > 0) {
        queryArgs.setMaxResults(rpp);
      } else {
        queryArgs.setMaxResults(discoveryConfiguration.getDefaultRpp());
      }
      queryArgs.setStart(start);
    }
  }