in src/main/java/com/google/gcs/sdrs/dao/impl/RetentionRuleDaoImpl.java [72:94]
public RetentionRule findByBusinessKey(
String projectId,
String dataStorageName,
Boolean includeDeactivated,
RetentionRuleType retentionRuleType) {
Session session = openSession();
CriteriaBuilder builder = session.getCriteriaBuilder();
CriteriaQuery<RetentionRule> query = builder.createQuery(RetentionRule.class);
Root<RetentionRule> root = query.from(RetentionRule.class);
List<Predicate> predicates = new LinkedList<>();
predicates.add(builder.equal(root.get("projectId"), projectId));
predicates.add(builder.equal(root.get("dataStorageName"), dataStorageName));
predicates.add(builder.equal(root.get("type"), retentionRuleType));
if (!includeDeactivated) {
predicates.add(builder.equal(root.get("isActive"), true));
}
Predicate[] predicateArray = new Predicate[predicates.size()];
predicateArray = predicates.toArray(predicateArray);
query.select(root).where(predicateArray);
return getSingleRecordWithCriteriaQuery(query, session);
}