use of com.querydsl.core.BooleanBuilder in project kylo by Teradata.
the class JpaBatchJobExecutionProvider method getBatchAndStreamingJobCounts.
/**
* Get count of Jobs grouped by Status
* Streaming Feeds are given a count of 1 if they are running, regardless of the number of active running flows
*/
public List<BatchAndStreamingJobStatusCount> getBatchAndStreamingJobCounts(String filter) {
QJpaBatchJobExecution jobExecution = QJpaBatchJobExecution.jpaBatchJobExecution;
QJpaBatchJobInstance jobInstance = QJpaBatchJobInstance.jpaBatchJobInstance;
QJpaOpsManagerFeed feed = QJpaOpsManagerFeed.jpaOpsManagerFeed;
QJpaNifiFeedStats feedStats = QJpaNifiFeedStats.jpaNifiFeedStats;
BooleanBuilder whereBuilder = new BooleanBuilder();
if (StringUtils.isNotBlank(filter)) {
whereBuilder.and(GenericQueryDslFilter.buildFilter(jobExecution, filter));
}
Expression<JpaBatchAndStreamingJobStatusCounts> expr = Projections.bean(JpaBatchAndStreamingJobStatusCounts.class, JobStatusDslQueryExpressionBuilder.jobState().as("status"), feed.id.as("opsManagerFeedId"), feed.name.as("feedName"), feed.isStream.as("isStream"), feedStats.runningFeedFlows.as("runningFeedFlows"), jobExecution.jobExecutionId.count().as("count"), feedStats.lastActivityTimestamp.max().as("lastActivityTimestamp"));
JPAQuery<?> query = factory.select(expr).from(feed).innerJoin(jobInstance).on(jobInstance.feed.id.eq(feed.id)).innerJoin(jobExecution).on(jobExecution.jobInstance.jobInstanceId.eq(jobInstance.jobInstanceId)).leftJoin(feedStats).on(feed.id.uuid.eq(feedStats.feedId.uuid)).where(whereBuilder).groupBy(jobExecution.status, feed.id, feed.name, feed.isStream, feedStats.runningFeedFlows);
List<BatchAndStreamingJobStatusCount> stats = (List<BatchAndStreamingJobStatusCount>) query.fetch();
return stats.stream().map(s -> {
if (s.isStream() && (BatchJobExecution.RUNNING_DISPLAY_STATUS.equalsIgnoreCase(s.getStatus()) || BatchJobExecution.JobStatus.STARTING.name().equalsIgnoreCase(s.getStatus()) || BatchJobExecution.JobStatus.STARTED.name().equalsIgnoreCase(s.getStatus())) && s.getRunningFeedFlows() == 0L) {
((JpaBatchAndStreamingJobStatusCounts) s).setStatus(BatchJobExecution.JobStatus.STOPPED.name());
}
return s;
}).collect(Collectors.toList());
// return stats;
}
use of com.querydsl.core.BooleanBuilder in project kylo by Teradata.
the class GenericQueryDslFilter method buildFilter.
/**
* build the Filter for the base QueryDSL class and the passed in filter list
*
* @param filters name:test, age>10
*/
public static <T> BooleanBuilder buildFilter(EntityPathBase basePath, List<SearchCriteria> filters) {
BooleanBuilder booleanBuilder = new BooleanBuilder();
if (filters != null && !filters.isEmpty()) {
filters.stream().forEach(filter -> {
Path p = buildPathFromFilterColumn(basePath, filter.getKey());
if (p != null) {
Object value = filter.getValue();
Operator op = operators.get(filter.getOperation());
if (validateOperatorPath(op, p, filter.getKey(), value)) {
if (Ops.LIKE_IC.equals(op) && value instanceof String && value != null && !((String) value).endsWith("%")) {
value = ((String) value) + "%";
}
if (value == null || (value instanceof String && ((String) value).equalsIgnoreCase(NULL_FILTER))) {
op = Ops.IS_NULL;
value = null;
} else if (value instanceof String && ((String) value).equalsIgnoreCase(NOT_NULL_FILTER)) {
op = Ops.IS_NOT_NULL;
value = null;
}
if (value != null) {
Object convertedValue = getValueForQuery(p, filter.getKey(), op, value);
if (convertedValue != null && convertedValue instanceof Collection) {
op = Ops.IN;
}
if (convertedValue != null) {
Expression e = null;
if (convertedValue instanceof Comparable) {
e = Expressions.asComparable((Comparable) convertedValue);
} else {
e = Expressions.constant(convertedValue);
}
// reset the operator if looking for UUID
if (convertedValue instanceof UUID || convertedValue instanceof Enum) {
op = Ops.EQ;
}
if (filter.isOrFilter()) {
booleanBuilder.or(Expressions.predicate(op, p, e));
} else {
booleanBuilder.and(Expressions.predicate(op, p, e));
}
}
} else {
if (filter.isOrFilter()) {
booleanBuilder.or(Expressions.predicate(op, p));
} else {
booleanBuilder.and(Expressions.predicate(op, p));
}
}
}
}
});
}
return booleanBuilder;
}
use of com.querydsl.core.BooleanBuilder in project kylo by Teradata.
the class OpsFeedManagerFeedProvider method findFeedsWithFilter.
public List<OpsManagerFeed> findFeedsWithFilter(String filter) {
QJpaOpsManagerFeed feed = QJpaOpsManagerFeed.jpaOpsManagerFeed;
BooleanBuilder where = GenericQueryDslFilter.buildFilter(feed, filter);
JPAQuery query = factory.select(feed).from(feed).where(where);
return query.fetch();
}
use of com.querydsl.core.BooleanBuilder in project kylo by Teradata.
the class JpaBatchJobExecutionTest method testFilters.
@WithMockJaasUser(username = "dladmin", password = "secret", authorities = { "admin" })
@Test
public void testFilters() {
operationalMetadataAccess.read(() -> {
QJpaBatchJobExecution jobExecution = QJpaBatchJobExecution.jpaBatchJobExecution;
BooleanBuilder builder = GenericQueryDslFilter.buildFilter(jobExecution, "status==\"COMPLETED,FAILED\"");
int i = 0;
return null;
});
}
use of com.querydsl.core.BooleanBuilder in project kylo by Teradata.
the class KyloEntityAwareAlertCriteria method createSummaryQuery.
public JPAQuery<AlertSummary> createSummaryQuery() {
QJpaAlert alert = QJpaAlert.jpaAlert;
QJpaOpsManagerFeed feed = QJpaOpsManagerFeed.jpaOpsManagerFeed;
QJpaOpsManagerFeed slaFeed = new QJpaOpsManagerFeed("slaFeed");
QJpaServiceLevelAgreementDescription sla = QJpaServiceLevelAgreementDescription.jpaServiceLevelAgreementDescription;
JPAQuery query = queryFactory.select(Projections.bean(KyloEntityAwareAlertSummary.class, alert.typeString.as("type"), alert.subtype.as("subtype"), alert.level.as("level"), feed.id.as("feedId"), feed.name.as("feedName"), sla.slaId.as("slaId"), sla.name.as("slaName"), alert.count().as("count"), alert.createdTimeMillis.max().as("lastAlertTimestamp"))).from(alert).leftJoin(feed).on(feed.id.uuid.eq(alert.entityId.value).and(alert.entityType.eq(Expressions.stringPath("'FEED'")))).leftJoin(sla).on(sla.slaId.uuid.eq(alert.entityId.value).and(alert.entityType.eq(Expressions.stringPath("'SLA'")))).leftJoin(sla.feeds, slaFeed).groupBy(alert.typeString, alert.subtype, feed.id, feed.name, sla.slaId, sla.name, alert.level);
List<Predicate> preds = filter(alert);
boolean entityAccessControlled = !isAsServiceAccount() && controller.isEntityAccessControlled();
preds.add(feed.isNull().or(feed.isNotNull().and(FeedAclIndexQueryAugmentor.generateExistsExpression(feed.id, entityAccessControlled))));
preds.add(slaFeed.isNull().or(slaFeed.isNotNull().and(FeedAclIndexQueryAugmentor.generateExistsExpression(slaFeed.id, entityAccessControlled))));
BooleanBuilder orFilter = orFilter(alert, feed, sla);
addEntityFilter(alert, preds);
return (JPAQuery<AlertSummary>) super.addWhere(query, preds, orFilter);
}
Aggregations