private void appendResourceBaseCondition(StringBuilder sb) {
   SnapshotDto baseSnapshot = context.getBaseSnapshot();
   if (baseSnapshot != null) {
     if (filter.isOnBaseResourceChildren()) {
       sb.append(" AND s.parent_snapshot_id=").append(baseSnapshot.getId());
     } else {
       Long rootSnapshotId =
           baseSnapshot.getRootId() != null ? baseSnapshot.getRootId() : baseSnapshot.getId();
       sb.append(" AND s.root_snapshot_id=").append(rootSnapshotId);
       sb.append(" AND s.path LIKE '")
           .append(StringUtils.defaultString(baseSnapshot.getPath()))
           .append(baseSnapshot.getId())
           .append(".%'");
     }
   }
 }
 private void appendResourceConditions(StringBuilder sb) {
   sb.append(" s.status='P' AND s.islast=").append(database.getDialect().getTrueSqlValue());
   if (context.getBaseSnapshot() == null) {
     sb.append(" AND p.copy_resource_id IS NULL ");
   }
   if (!filter.getResourceQualifiers().isEmpty()) {
     sb.append(" AND s.qualifier IN ");
     appendInStatement(filter.getResourceQualifiers(), sb);
   }
   if (!filter.getResourceScopes().isEmpty()) {
     sb.append(" AND s.scope IN ");
     appendInStatement(filter.getResourceScopes(), sb);
   }
   appendDateConditions(sb);
   appendFavouritesCondition(sb);
   appendResourceNameCondition(sb);
   appendResourceKeyCondition(sb);
   appendResourceBaseCondition(sb);
 }