Package com.erudika.para.utils

Examples of com.erudika.para.utils.Pager


        ParaObject pobj = Utils.toObject(type);
        pobj.setId(id);
        pobj = dao.read(app.getAppIdentifier(), pobj.getId());

        Pager pager = new Pager();
        pager.setPage(NumberUtils.toLong(params.getFirst("page"), 0));
        pager.setSortby(params.getFirst("sort"));
        pager.setDesc(Boolean.parseBoolean(params.containsKey("desc") ? params.getFirst("desc") : "true"));
        pager.setLimit(NumberUtils.toInt(params.getFirst("limit"), pager.getLimit()));

        String childrenOnly = params.getFirst("childrenonly");

        if (pobj != null) {
          if (POST.equals(ctx.getMethod())) {
            if (id2 != null) {
              String linkid = pobj.link(id2);
              if (linkid == null) {
                return RestUtils.getStatusResponse(Response.Status.BAD_REQUEST,
                    "Failed to create link.");
              } else {
                return Response.ok(linkid).build();
              }
            } else {
              return RestUtils.getStatusResponse(Response.Status.BAD_REQUEST,
                  "Parameters 'type' and 'id' are missing.");
            }
          } else if (GET.equals(ctx.getMethod())) {
            Map<String, Object> result = new HashMap<String, Object>();
            if (type2 != null) {
              if (id2 != null) {
                return Response.ok(pobj.isLinked(type2, id2)).build();
              } else {
                List<ParaObject> items = new ArrayList<ParaObject>();
                if (childrenOnly == null) {
                  if (params.containsKey("count")) {
                    pager.setCount(pobj.countLinks(type2));
                  } else {
                    items = pobj.getLinkedObjects(type2, pager);
                  }
                } else {
                  if (params.containsKey("count")) {
                    pager.setCount(pobj.countChildren(type2));
                  } else {
                    if (params.containsKey("field") && params.containsKey("term")) {
                      items = pobj.getChildren(type2, params.getFirst("field"),
                          params.getFirst("term"), pager);
                    } else {
                      items = pobj.getChildren(type2, pager);
                    }
                  }
                }
                result.put("items", items);
                result.put("totalHits", pager.getCount());
                return Response.ok(result).build();
              }
            } else {
              return RestUtils.getStatusResponse(Response.Status.BAD_REQUEST,
                  "Parameter 'type' is missing.");
View Full Code Here


    String query = params.containsKey("q") ? params.getFirst("q") : "*";
    String appid = app.isShared() ? ("_" + Config.SEPARATOR + app.getAppIdentifier()) : app.getAppIdentifier();
    String type = (!StringUtils.isBlank(typeOverride) && !"search".equals(typeOverride)) ?
        typeOverride : params.getFirst(Config._TYPE);

    Pager pager = new Pager();
    pager.setPage(NumberUtils.toLong(params.getFirst("page"), 0));
    pager.setSortby(params.getFirst("sort"));
    pager.setDesc(Boolean.parseBoolean(params.containsKey("desc") ? params.getFirst("desc") : "true"));
    pager.setLimit(NumberUtils.toInt(params.getFirst("limit"), pager.getLimit()));

    queryType = StringUtils.isBlank(queryType) ? params.getFirst("querytype") : queryType;
    Map<String, Object> result = new HashMap<String, Object>();
    List<P> items = new ArrayList<P>();

    if ("id".equals(queryType)) {
      String id = params.containsKey(Config._ID) ? params.getFirst(Config._ID) : null;
      P obj = search.findById(appid, id);
      if (obj != null) {
        items = Collections.singletonList(obj);
        pager.setCount(1);
      }
    } else if ("ids".equals(queryType)) {
      List<String> ids = params.get("ids");
      items = search.findByIds(appid, ids);
      pager.setCount(items.size());
    } else if ("nearby".equals(queryType)) {
      String latlng = params.getFirst("latlng");
      if (StringUtils.contains(latlng, ",")) {
        String[] coords = latlng.split(",", 2);
        String rad = params.containsKey("radius") ? params.getFirst("radius") : null;
        int radius = NumberUtils.toInt(rad, 10);
        double lat = NumberUtils.toDouble(coords[0], 0);
        double lng = NumberUtils.toDouble(coords[1], 0);
        items = search.findNearby(appid, type, query, radius, lat, lng, pager);
      }
    } else if ("prefix".equals(queryType)) {
      items = search.findPrefix(appid, type, params.getFirst("field"), params.getFirst("prefix"), pager);
    } else if ("similar".equals(queryType)) {
      List<String> fields = params.get("fields");
      if (fields != null) {
        items = search.findSimilar(appid, type, params.getFirst("filterid"),
            fields.toArray(new String[]{}), params.getFirst("like"), pager);
      }
    } else if ("tagged".equals(queryType)) {
      List<String> tags = params.get("tags");
      if (tags != null) {
        items = search.findTagged(appid, type, tags.toArray(new String[]{}), pager);
      }
    } else if ("in".equals(queryType)) {
      items = search.findTermInList(appid, type, params.getFirst("field"), params.get("terms"), pager);
    } else if ("terms".equals(queryType)) {
      String matchAll = params.containsKey("matchall") ? params.getFirst("matchall") : "true";
      List<String> termsList = params.get("terms");
      if (termsList != null) {
        Map<String, String> terms = new HashMap<String, String>(termsList.size());
        for (String termTuple : termsList) {
          if (!StringUtils.isBlank(termTuple) && termTuple.contains(Config.SEPARATOR)) {
            String[] split = termTuple.split(Config.SEPARATOR, 2);
            terms.put(split[0], split[1]);
          }
        }
        if (params.containsKey("count")) {
          pager.setCount(search.getCount(appid, type, terms));
        } else {
          items = search.findTerms(appid, type, terms, Boolean.parseBoolean(matchAll), pager);
        }
      }
    } else if ("wildcard".equals(queryType)) {
      items = search.findWildcard(appid, type, params.getFirst("field"), query, pager);
    } else if ("count".equals(queryType)) {
      pager.setCount(search.getCount(appid, type));
    } else {
      items = search.findQuery(appid, type, query, pager);
    }

    result.put("items", items);
    result.put("totalHits", pager.getCount());
    return result;
  }
View Full Code Here

   */
  private SearchHits searchQueryRaw(String appid, String type, QueryBuilder query, Pager... pager) {
    if (StringUtils.isBlank(appid)) {
      return null;
    }
    Pager page = (pager != null && pager.length > 0) ? pager[0] : new Pager();
    SortOrder order = page.isDesc() ? SortOrder.DESC : SortOrder.ASC;
    SortBuilder sort = StringUtils.isBlank(page.getSortby()) ?
        SortBuilders.scoreSort() : SortBuilders.fieldSort(page.getSortby()).order(order);

    int max = page.getLimit();
    int pageNum = (int) page.getPage();
    int start = (pageNum < 1 || pageNum > Config.MAX_PAGES) ? 0 : (pageNum - 1) * max;

    if (query == null || StringUtils.isBlank(type)) {
      query = QueryBuilders.matchAllQuery();
    }
    if (sort == null) {
      sort = SortBuilders.scoreSort();
    }

    SearchHits hits = null;

    try {
      SearchRequestBuilder srb = client().prepareSearch(stripRouting(appid)).
        setSearchType(SearchType.DFS_QUERY_THEN_FETCH).
        setRouting(getRouting(appid, null)).
        setQuery(query).addSort(sort).setFrom(start).setSize(max);

      if (!StringUtils.isBlank(type)) {
        srb.setTypes(type);
      }

      hits = srb.execute().actionGet().getHits();
      page.setCount(hits.getTotalHits());
    } catch (Exception e) {
      logger.warn(null, e);
    }

    return hits;
View Full Code Here

  }

  private MultivaluedMap<String, String> pagerToParams(Pager... pager) {
    MultivaluedMap<String, String> map = new MultivaluedHashMap<String, String>();
    if (pager != null && pager.length > 0) {
      Pager p = pager[0];
      if (p != null) {
        map.put("page", Collections.singletonList(Long.toString(p.getPage())));
        map.put("desc", Collections.singletonList(Boolean.toString(p.isDesc())));
        map.put("limit", Collections.singletonList(Integer.toString(p.getLimit())));
        if (p.getSortby() != null) {
          map.put("sort", Collections.singletonList(p.getSortby()));
        }
      }
    }
    return map;
  }
View Full Code Here

   * @return the number of results found
   */
  public Long getCount(String type) {
    MultivaluedMap<String, String> params = new MultivaluedHashMap<String, String>();
    params.putSingle(Config._TYPE, type);
    Pager pager = new Pager();
    getItems(find("count", params), pager);
    return pager.getCount();
  }
View Full Code Here

    if (!terms.isEmpty()) {
      params.put("terms", list);
    }
    params.putSingle(Config._TYPE, type);
    params.putSingle("count", "true");
    Pager pager = new Pager();
    getItems(find("terms", params), pager);
    return pager.getCount();
  }
View Full Code Here

    if (obj == null || obj.getId() == null || type2 == null) {
      return 0L;
    }
    MultivaluedMap<String, String> params = new MultivaluedHashMap<String, String>();
    params.putSingle("count", "true");
    Pager pager = new Pager();
    String url = Utils.formatMessage("{0}/links/{1}", obj.getObjectURI(), type2);
    getItems((Map<String, Object>) getEntity(invokeGet(url, params), Map.class), pager);
    return pager.getCount();
  }
View Full Code Here

      return 0L;
    }
    MultivaluedMap<String, String> params = new MultivaluedHashMap<String, String>();
    params.putSingle("count", "true");
    params.putSingle("childrenonly", "true");
    Pager pager = new Pager();
    String url = Utils.formatMessage("{0}/links/{1}", obj.getObjectURI(), type2);
    getItems((Map<String, Object>) getEntity(invokeGet(url, params), Map.class), pager);
    return pager.getCount();
  }
View Full Code Here

      logger.info("rebuildIndex(): {}", appid);

      BulkRequestBuilder brb = getClient().prepareBulk();
      BulkResponse resp = null;
      Pager pager = new Pager();

      List<ParaObject> list = dao.readPage(appid, null);

      if (!list.isEmpty()) {
        do {
          for (ParaObject obj : list) {
            brb.add(getClient().prepareIndex(appid, obj.getType(), obj.getId()).
                setSource(Utils.getAnnotatedFields(obj)));
            pager.setLastKey(obj.getId());
          }
          // bulk index 1000 objects
          if (brb.numberOfActions() > 100) {
            resp = brb.execute().actionGet();
            logger.info("rebuildIndex(): indexed {}, hasFailures: {}",
View Full Code Here

      MultivaluedMap<String, String> params, String typeOverride) {
    String query = params.containsKey("q") ? params.getFirst("q") : "*";
    String type = (typeOverride != null) ? typeOverride : params.getFirst(Config._TYPE);
    String desc = params.containsKey("desc") ? params.getFirst("desc") : "true";

    Pager pager = new Pager();
    pager.setPage(NumberUtils.toLong(params.getFirst("page"), 0));
    pager.setSortby(params.getFirst("sort"));
    pager.setDesc(Boolean.parseBoolean(desc));

    String queryType = params.containsKey("querytype") ? params.getFirst("querytype") : null;
    Map<String, Object> result = new HashMap<String, Object>();
    List<P> items = new ArrayList<P>();

    if ("id".equals(queryType)) {
      String id = params.containsKey(Config._ID) ? params.getFirst(Config._ID) : null;
      P obj = search.findById(appid, id);
      if (obj != null) {
        items = Collections.singletonList(obj);
        pager.setCount(1);
      }
    } else if ("nearby".equals(queryType)) {
      String latlng = params.getFirst("latlng");
      if (latlng != null) {
        String[] coords = latlng.split(",", 2);
        String rad = params.containsKey("radius") ? params.getFirst("radius") : null;
        int radius = NumberUtils.toInt(rad, 10);
        double lat = NumberUtils.toDouble(coords[0], 0);
        double lng = NumberUtils.toDouble(coords[1], 0);
        items = search.findNearby(appid, type, query, radius, lat, lng, pager);
      }
    } else if ("prefix".equals(queryType)) {
      items = search.findPrefix(appid, type, params.getFirst("field"), params.getFirst("prefix"), pager);
    } else if ("similar".equals(queryType)) {
      List<String> fields = params.get("fields");
      if (fields != null) {
        items = search.findSimilar(appid, type, params.getFirst("filterid"),
            fields.toArray(new String[]{}), params.getFirst("like"), pager);
      }
    } else if ("tagged".equals(queryType)) {
      List<String> tags = params.get("tags");
      if (tags != null) {
        items = search.findTagged(appid, type, tags.toArray(new String[]{}), pager);
      }
    } else if ("in".equals(queryType)) {
      items = search.findTermInList(appid, type, params.getFirst("field"), params.get("terms"), pager);
    } else if ("terms".equals(queryType)) {
      String matchAll = params.containsKey("matchall") ? params.getFirst("matchall") : "true";
      List<String> termsList = params.get("terms");
      if (termsList != null) {
        Map<String, String> terms = new HashMap<String, String>(termsList.size());
        for (String termTuple : termsList) {
          if (!StringUtils.isBlank(termTuple) && termTuple.contains(Config.SEPARATOR)) {
            String[] split = termTuple.split(Config.SEPARATOR, 2);
            terms.put(split[0], split[1]);
          }
        }
        if (params.containsKey("count")) {
          pager.setCount(search.getCount(appid, type, terms));
        } else {
          items = search.findTerms(appid, type, terms, Boolean.parseBoolean(matchAll), pager);
        }
      }
    } else if ("wildcard".equals(queryType)) {
      items = search.findWildcard(appid, type, params.getFirst("field"), query, pager);
    } else if ("count".equals(queryType)) {
      pager.setCount(search.getCount(appid, type));
    } else {
      items = search.findQuery(appid, type, query, pager);
    }

    result.put("items", items);
    result.put("totalHits", pager.getCount());
    return result;
  }
View Full Code Here

TOP

Related Classes of com.erudika.para.utils.Pager

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.