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