Exemplo n.º 1
0
  @Override
  public DataGrid<DumpHst> queryDataGird(DumpHst dumpHst, Pageable pageable) {
    DataGrid<DumpHst> dumpHstDataGird = new DataGrid<DumpHst>(0, new ArrayList<DumpHst>());
    if (dumpHst.isSerachFlag()) {
      Criteria expression = where("deleteFlag").is("0");
      if (dumpHst.getFromDate() != null && dumpHst.getToDate() != null) {
        expression.andOperator(
            where("created").gte(dumpHst.getFromDate()),
            where("created").lt(DateUtil.getAfterOrBeforDate(dumpHst.getToDate(), 1)));
      } else {
        if (dumpHst.getFromDate() != null) {
          expression.and("created").gte(dumpHst.getFromDate());
        }
        if (dumpHst.getToDate() != null) {
          expression.and("created").lt(DateUtil.getAfterOrBeforDate(dumpHst.getToDate(), 1));
        }
      }

      long count = mongoTemplate.count(query(expression), DumpHst.class);
      List<DumpHst> list = mongoTemplate.find(query(expression).with(pageable), DumpHst.class);
      dumpHstDataGird.setRows(list);
      dumpHstDataGird.setTotal(count);
    }
    return dumpHstDataGird;
  }
  @Override
  public UserSessionActivity findByUserIdAndIPAddressAndSessionId(
      String userId, String ipAddress, String sessionId) {
    Criteria criteria = Criteria.where("user.$id").is(userId);
    criteria =
        criteria.andOperator(
            Criteria.where("ipAddress")
                .is(ipAddress)
                .andOperator(Criteria.where("sessionId").is(sessionId)));
    Query query = new Query(criteria);

    return mongoTemplate.findOne(query, UserSessionActivity.class);
  }
  private Query buildQuery(
      String countryUri,
      String[] modelTypes,
      String lang,
      String[] nameTokens,
      String regexSuffix) {
    if (regexSuffix == null) {
      regexSuffix = "";
    }

    // we search irrespective of the replication status, but we deduplicate based on DC Resource
    // URI.
    // sort spec means we want older results first - so that incoming replicates are discarded as
    // long as
    // there is an online entry
    Criteria criteria = where("lang").is(lang);

    if (countryUri != null && !countryUri.trim().isEmpty()) {
      criteria.and("country").is(countryUri); // filter by country
    }

    List<Criteria> andCriteria = new ArrayList<>();
    if (modelTypes != null && modelTypes.length != 0) {
      for (String modelType : modelTypes) {
        if (modelType != null && !modelType.trim().isEmpty()) {
          andCriteria.add(where("modelType").in(modelType));
        }
      }
    }

    if (nameTokens != null) {
      for (String nToken : nameTokens) {
        if (nToken != null && !nToken.trim().isEmpty()) {
          andCriteria.add(where("nameTokens").regex("^" + nToken + regexSuffix));
        }
      }
    }

    if (!andCriteria.isEmpty()) {
      criteria.andOperator(andCriteria.toArray(new Criteria[andCriteria.size()]));
    }
    return query(criteria)
        .with(new Sort(Sort.Direction.ASC, "name"))
        .with(new Sort(Sort.Direction.ASC, "replicationTime"))
        .limit(
            findOneTokenLimit); // limit to prevent too much performance-hampering object scanning
  }
 @SuppressWarnings("unchecked")
 @RequestMapping(value = "/api/route/{ownerId}/school/{schoolId}", method = RequestMethod.GET)
 public @ResponseBody List<Route> searchRoute(
     @PathVariable String ownerId,
     @PathVariable String schoolId,
     HttpServletRequest request,
     HttpServletResponse response)
     throws Exception {
   if (!Utils.validateAPIRequest(request, dataSetSetup, storage)) {
     throw new UnauthorizedException("Unauthorized Exception: token not valid");
   }
   Criteria criteria = Criteria.where("schoolId").is(schoolId);
   String dateString = request.getParameter("date");
   if (Utils.isNotEmpty(dateString)) {
     Date date = sdf.parse(dateString);
     criteria =
         criteria.andOperator(Criteria.where("from").lte(date), Criteria.where("to").gte(date));
   }
   List<Route> result = (List<Route>) storage.findData(Route.class, criteria, null, ownerId);
   if (logger.isInfoEnabled()) {
     logger.info(String.format("searchRoute[%s]:%d", ownerId, result.size()));
   }
   return result;
 }
  private Query getQuery(
      Account account,
      List<String> restrictedMerchants,
      String pin,
      String serial,
      String status,
      List<Integer> amounts,
      List<String> cardTypes,
      String searchMerchant,
      List<String> merchants,
      List<String> providers,
      Date fromTime,
      Date toTime) {
    if (account == null) return null;
    if (!account.isAdmin()) if (!account.isStaff()) ;
    boolean isAdmin = account.checkRoles(new String[] {"biz_supporter", "customer_care"});
    Query query = new Query();

    Criteria searchMerchantCriteria = null;
    if (StringUtils.isNotEmpty(searchMerchant)) {
      String[] arrayOfString = null;
      int j = 0;
      int i = 0;
      if ((isAdmin)
          && (SharedConstants.MBIZ)
          && (SharedConstants.MBIZ_MERCHANTS != null)
          && (SharedConstants.MBIZ_MERCHANTS.length > 0)) {
        j = (arrayOfString = SharedConstants.MBIZ_MERCHANTS).length;
        i = 0;
      }
      while (true) {
        String mbizMerchant = arrayOfString[i];
        if (mbizMerchant.indexOf(searchMerchant) != -1) {
          searchMerchantCriteria = Criteria.where("merchant").regex(searchMerchant, "i");
        } else {
          i++;
          if (i < j) continue;
          break;

          // searchMerchantCriteria = Criteria.where("merchant").regex(searchMerchant, "i");
        }
      }
    }
    if (!isAdmin) {
      if ((restrictedMerchants == null) || (restrictedMerchants.isEmpty())) return null;
      List filterMerchants = new ArrayList();
      if ((merchants != null) && (merchants.size() > 0)) {
        for (String merchant : merchants) {
          if (restrictedMerchants.contains(merchant)) filterMerchants.add(merchant);
        }
        if (filterMerchants.size() == 0) return null;
      }
      if (filterMerchants.size() > 0) {
        if (filterMerchants.size() > 1) {
          if (searchMerchantCriteria != null)
            searchMerchantCriteria =
                searchMerchantCriteria.andOperator(
                    new Criteria[] {Criteria.where("merchant").in(filterMerchants)});
          else searchMerchantCriteria = Criteria.where("merchant").in(filterMerchants);
        } else if (searchMerchantCriteria != null)
          searchMerchantCriteria =
              searchMerchantCriteria.andOperator(
                  new Criteria[] {Criteria.where("merchant").is(filterMerchants.get(0))});
        else {
          searchMerchantCriteria = Criteria.where("merchant").is(filterMerchants.get(0));
        }
      } else if (restrictedMerchants.size() > 1) {
        if (searchMerchantCriteria != null)
          searchMerchantCriteria =
              searchMerchantCriteria.andOperator(
                  new Criteria[] {Criteria.where("merchant").in(restrictedMerchants)});
        else searchMerchantCriteria = Criteria.where("merchant").in(restrictedMerchants);
      } else if (searchMerchantCriteria != null)
        searchMerchantCriteria =
            searchMerchantCriteria.andOperator(
                new Criteria[] {Criteria.where("merchant").is(restrictedMerchants.get(0))});
      else {
        searchMerchantCriteria = Criteria.where("merchant").is(restrictedMerchants.get(0));
      }

    } else if ((merchants != null) && (merchants.size() > 0)) {
      if (merchants.size() > 1) {
        if (searchMerchantCriteria != null)
          searchMerchantCriteria =
              searchMerchantCriteria.andOperator(
                  new Criteria[] {Criteria.where("merchant").in(merchants)});
        else searchMerchantCriteria = Criteria.where("merchant").in(merchants);
      } else if (searchMerchantCriteria != null)
        searchMerchantCriteria =
            searchMerchantCriteria.andOperator(
                new Criteria[] {Criteria.where("merchant").is(merchants.get(0))});
      else {
        searchMerchantCriteria = Criteria.where("merchant").is(merchants.get(0));
      }
    }

    if (searchMerchantCriteria != null) {
      if ((isAdmin)
          && (SharedConstants.MBIZ)
          && (SharedConstants.MBIZ_MERCHANTS != null)
          && (SharedConstants.MBIZ_MERCHANTS.length > 0)
          && (!account.checkRole("customer_care"))
          && (!account.checkRole("biz_supporter"))) {
        searchMerchantCriteria =
            new Criteria()
                .andOperator(
                    new Criteria[] {
                      searchMerchantCriteria,
                      Criteria.where("merchant").in(Arrays.asList(SharedConstants.MBIZ_MERCHANTS))
                    });
      }

      query.addCriteria(searchMerchantCriteria);
    }

    if (StringUtils.isNotEmpty(pin)) {
      query.addCriteria(Criteria.where("pin").regex(Pattern.compile(pin, 34)));
    }
    if (StringUtils.isNotEmpty(serial)) {
      query.addCriteria(Criteria.where("serial").regex(Pattern.compile(serial, 34)));
    }
    if (StringUtils.isNotEmpty(status)) {
      query.addCriteria(Criteria.where("status").is(status));
    }
    if ((amounts != null) && (amounts.size() > 0)) {
      if (amounts.size() > 1) query.addCriteria(Criteria.where("amount").in(amounts));
      else query.addCriteria(Criteria.where("amount").is(amounts.get(0)));
    }
    if ((cardTypes != null) && (cardTypes.size() > 0)) {
      if (cardTypes.size() > 1) query.addCriteria(Criteria.where("type").in(cardTypes));
      else query.addCriteria(Criteria.where("type").is(cardTypes.get(0)));
    }
    if ((providers != null) && (providers.size() > 0)) {
      if (providers.size() > 1) query.addCriteria(Criteria.where("paymentProvider").in(providers));
      else {
        query.addCriteria(Criteria.where("paymentProvider").is(providers.get(0)));
      }
    }
    if ((fromTime != null) || (toTime != null)) {
      if (fromTime == null) fromTime = new Date(0L);
      if (toTime == null) toTime = new Date();
      if (fromTime.getTime() <= toTime.getTime()) {
        Criteria dateCriteria =
            Criteria.where("timestamp")
                .gte(Utils.convertToMongoDBTime(fromTime))
                .andOperator(
                    new Criteria[] {
                      Criteria.where("timestamp").lte(Utils.convertToMongoDBTime(toTime))
                    });
        query.addCriteria(dateCriteria);
      }
    }

    System.out.println(query.toString());
    return query;
  }