private void appendResourceKeyCondition(StringBuilder sb) { if (StringUtils.isNotBlank(filter.getResourceKey())) { sb.append(" AND UPPER(p.kee) LIKE '%"); sb.append( escapePercentAndUnderscrore( StringEscapeUtils.escapeSql(StringUtils.upperCase(filter.getResourceKey())))); sb.append("%'"); appendEscapeForSomeDb(sb); } }
private void appendDateConditions(StringBuilder sb) { Date fromDate = filter.getFromDate(); if (fromDate != null) { sb.append(" AND s.created_at >= ? "); dateParameters.add(fromDate.getTime()); } Date toDate = filter.getToDate(); if (toDate != null) { sb.append(" AND s.created_at <= ? "); dateParameters.add(toDate.getTime()); } }
private void appendResourceNameCondition(StringBuilder sb) { if (StringUtils.isNotBlank(filter.getResourceName())) { sb.append( " AND s.project_id IN (SELECT rindex.resource_id FROM resource_index rindex WHERE rindex.kee LIKE '"); sb.append( escapePercentAndUnderscrore( StringEscapeUtils.escapeSql(StringUtils.lowerCase(filter.getResourceName())))); sb.append("%'"); appendEscapeForSomeDb(sb); if (!filter.getResourceQualifiers().isEmpty()) { sb.append(" AND rindex.qualifier IN "); appendInStatement(filter.getResourceQualifiers(), sb); } sb.append(") "); } }
private void appendFavouritesCondition(StringBuilder sb) { if (filter.isOnFavourites()) { sb.append( " AND props.prop_key='favourite' AND props.resource_id IS NOT NULL AND props.user_id="); sb.append(context.getUserId()); sb.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); }
List<MeasureFilterRow> process(ResultSet rs) throws SQLException { List<MeasureFilterRow> rows = Lists.newArrayList(); RowProcessor rowProcessor; if (filter.sort().isOnNumericMeasure()) { rowProcessor = new NumericSortRowProcessor(); } else if (filter.sort().isOnDate()) { rowProcessor = new DateSortRowProcessor(); } else if (filter.sort().isOnTime()) { rowProcessor = new LongSortRowProcessor(); } else if (filter.sort().isOnAlert()) { rowProcessor = new AlertSortRowProcessor(); } else { rowProcessor = new TextSortRowProcessor(); } while (rs.next()) { rows.add(rowProcessor.fetch(rs)); } return rowProcessor.sort(rows, filter.sort().isAsc()); }
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 String generateSql() { StringBuilder sb = new StringBuilder(1000); sb.append("SELECT s.id, s.project_id, s.root_project_id, "); sb.append(filter.sort().column()); sb.append(" FROM snapshots s INNER JOIN projects p ON s.project_id=p.id "); for (int index = 0; index < filter.getMeasureConditions().size(); index++) { MeasureFilterCondition condition = filter.getMeasureConditions().get(index); sb.append(" INNER JOIN project_measures pmcond").append(index); sb.append(" ON s.id=pmcond").append(index).append(".snapshot_id AND "); condition.appendSqlCondition(sb, index); } if (filter.isOnFavourites()) { sb.append(" INNER JOIN properties props ON props.resource_id=s.project_id "); } if (filter.sort().isOnMeasure()) { sb.append( " LEFT OUTER JOIN project_measures pmsort ON s.id=pmsort.snapshot_id AND pmsort.metric_id="); sb.append(filter.sort().metric().getId()); sb.append( " AND pmsort.rule_id IS NULL AND pmsort.rule_priority IS NULL AND pmsort.characteristic_id IS NULL AND pmsort.person_id IS NULL "); } sb.append(" WHERE "); appendResourceConditions(sb); for (int index = 0; index < filter.getMeasureConditions().size(); index++) { MeasureFilterCondition condition = filter.getMeasureConditions().get(index); sb.append(" AND "); condition.appendSqlCondition(sb, index); } return sb.toString(); }