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;
}