public List getAllAvailableRequestsByPriority()

in src/main/java/com/google/gcs/sdrs/dao/impl/DmQueueDaoImpl.java [47:80]


  public List<DmRequest> getAllAvailableRequestsByPriority() {
    Session session = null;
    List<DmRequest> result = null;
    try {
      session = openSession();
      CriteriaBuilder builder = session.getCriteriaBuilder();

      CriteriaQuery<DmRequest> query = builder.createQuery(DmRequest.class);
      Root<DmRequest> root = query.from(DmRequest.class);

      Predicate pending_status =
          (builder.equal(root.get("status"), DatabaseConstants.DM_REQUEST_STATUS_PENDING));
      Predicate retry_status =
          (builder.equal(root.get("status"), DatabaseConstants.DM_REQUEST_STATIUS_RETRY));
      Predicate pending_or_retry = builder.or(pending_status, retry_status);

      List<Order> orderList = new ArrayList();
      orderList.add(builder.desc(root.get("priority")));
      orderList.add(builder.desc(root.get("numberOfRetry")));
      orderList.add(builder.asc(root.get("createdAt")));

      query.where(pending_or_retry);
      query.orderBy(orderList);

      result = session.createQuery(query).getResultList();
      closeSession(session);
    } catch (Exception e) {
      handleRuntimeException(e, null);
    } finally {
      closeSession(session);
    }

    return result;
  }