public PooledStsJob getJob()

in src/main/java/com/google/gcs/sdrs/dao/impl/PooledStsJobDaoImpl.java [66:102]


  public PooledStsJob getJob(
      String sourceBucket, String sourceProjectId, String scheduleTimeOfDay, String type) {
    Session session = openSession();
    CriteriaBuilder builder = session.getCriteriaBuilder();
    CriteriaQuery<PooledStsJob> query = builder.createQuery(PooledStsJob.class);
    Root<PooledStsJob> root = query.from(PooledStsJob.class);

    List<Predicate> predicates = new ArrayList<>();
    predicates.add(builder.equal(root.get("sourceBucket"), sourceBucket));
    predicates.add(builder.equal(root.get("sourceProject"), sourceProjectId));
    predicates.add(builder.equal(root.get("type"), type));

    query
        .select(root)
        .where(predicates.toArray(new Predicate[predicates.size()]))
        .orderBy(builder.asc(root.get("schedule")));

    List<PooledStsJob> result = session.createQuery(query).getResultList();
    closeSession(session);
    PooledStsJob pooledStsJob = null;
    if (result != null && !result.isEmpty()) {
      if (scheduleTimeOfDay == null) {
        pooledStsJob = result.get(0);
      } else if (result.get(result.size() - 1).getSchedule().compareTo(scheduleTimeOfDay) <= 0) {
        pooledStsJob = result.get(0);
      } else {
        for (int i = 0; i < result.size(); i++) {
          if (result.get(i).getSchedule().compareTo(scheduleTimeOfDay) > 0) {
            pooledStsJob = result.get(i);
            break;
          }
        }
      }
    }

    return pooledStsJob;
  }