public ComponentQuery build() { checkArgument(qualifiers != null && qualifiers.length > 0, "At least one qualifier must be provided"); checkArgument(nameOrKeyQuery != null || partialMatchOnKey == null, "A query must be provided if a partial match on key is specified."); return new ComponentQuery(this); } }
private static ComponentQuery buildDbQuery(@Nullable String nameOrKeyQuery) { ComponentQuery.Builder dbQuery = ComponentQuery.builder() .setQualifiers(Qualifiers.PROJECT) .setOnProvisionedOnly(true); ofNullable(nameOrKeyQuery).ifPresent(q -> { dbQuery.setPartialMatchOnKey(true); dbQuery.setNameOrKeyQuery(q); }); return dbQuery.build(); }
private static void checkThatNotTooManyComponents(ComponentQuery query) { checkThatNotTooManyConditions(query.getComponentIds(), "Too many component ids in query"); checkThatNotTooManyConditions(query.getComponentKeys(), "Too many component keys in query"); checkThatNotTooManyConditions(query.getComponentUuids(), "Too many component UUIDs in query"); }
@Test public void build_query() { ComponentQuery underTest = ComponentQuery.builder() .setNameOrKeyQuery("key") .setAnyBranchAnalyzedBefore(100L) .setAnyBranchAnalyzedAfter(200L) .setCreatedAfter(new Date(300L)) .setQualifiers(PROJECT) .build(); assertThat(underTest.getNameOrKeyQuery()).isEqualTo("key"); assertThat(underTest.getQualifiers()).containsOnly(PROJECT); assertThat(underTest.getAnyBranchAnalyzedBefore()).isEqualTo(100L); assertThat(underTest.getAnyBranchAnalyzedAfter()).isEqualTo(200L); assertThat(underTest.getCreatedAfter().getTime()).isEqualTo(300L); assertThat(underTest.isOnProvisionedOnly()).isFalse(); assertThat(underTest.isPartialMatchOnKey()).isFalse(); assertThat(underTest.hasEmptySetOfComponents()).isFalse(); }
@Test public void empty_list_of_components() { Supplier<ComponentQuery.Builder> query = () -> ComponentQuery.builder().setQualifiers(PROJECT); assertThat(query.get().setComponentIds(emptySet()).build().hasEmptySetOfComponents()).isTrue(); assertThat(query.get().setComponentKeys(emptySet()).build().hasEmptySetOfComponents()).isTrue(); assertThat(query.get().setComponentUuids(emptySet()).build().hasEmptySetOfComponents()).isTrue(); assertThat(query.get().setComponentIds(singleton(404L)).build().hasEmptySetOfComponents()).isFalse(); assertThat(query.get().setComponentKeys(singleton("P1")).build().hasEmptySetOfComponents()).isFalse(); assertThat(query.get().setComponentUuids(singleton("U1")).build().hasEmptySetOfComponents()).isFalse(); }
@Test public void build_query_minimal_properties() { ComponentQuery underTest = ComponentQuery.builder() .setQualifiers(PROJECT) .build(); assertThat(underTest.getNameOrKeyQuery()).isNull(); assertThat(underTest.getQualifiers()).containsOnly(PROJECT); }
@Test public void test_getNameOrKeyUpperLikeQuery() { ComponentQuery underTest = ComponentQuery.builder() .setNameOrKeyQuery("NAME/key") .setQualifiers(PROJECT) .build(); assertThat(underTest.getNameOrKeyUpperLikeQuery()).isEqualTo("%NAME//KEY%"); }
private static int countByQueryImpl(DbSession session, @Nullable String organizationUuid, ComponentQuery query) { if (query.hasEmptySetOfComponents()) { return 0; } checkThatNotTooManyComponents(query); return mapper(session).countByQuery(organizationUuid, query); }
private static int countByQueryImpl(DbSession session, @Nullable String organizationUuid, ComponentQuery query) { Set<Long> componentIds = query.getComponentIds(); if (componentIds != null && componentIds.isEmpty()) { return 0; } return mapper(session).countByQuery(organizationUuid, query); }
private static List<ComponentDto> selectByQueryImpl(DbSession session, @Nullable String organizationUuid, ComponentQuery query, int offset, int limit) { if (query.hasEmptySetOfComponents()) { return emptyList(); } checkThatNotTooManyComponents(query); return mapper(session).selectByQuery(organizationUuid, query, new RowBounds(offset, limit)); }
private static List<ComponentDto> selectByQueryImpl(DbSession session, @Nullable String organizationUuid, ComponentQuery query, int offset, int limit) { Set<Long> componentIds = query.getComponentIds(); if (componentIds != null && componentIds.isEmpty()) { return emptyList(); } return mapper(session).selectByQuery(organizationUuid, query, new RowBounds(offset, limit)); }
static ComponentQuery buildDbQuery(SearchRequest request) { List<String> qualifiers = request.getQualifiers(); ComponentQuery.Builder query = ComponentQuery.builder() .setQualifiers(qualifiers.toArray(new String[qualifiers.size()])); ofNullable(request.getQuery()).ifPresent(q -> { query.setNameOrKeyQuery(q); query.setPartialMatchOnKey(true); }); ofNullable(request.getVisibility()).ifPresent(v -> query.setPrivate(Visibility.isPrivate(v))); ofNullable(request.getAnalyzedBefore()).ifPresent(d -> query.setAnalyzedBefore(parseDateOrDateTime(d).getTime())); query.setOnProvisionedOnly(request.isOnProvisionedOnly()); ofNullable(request.getProjects()).ifPresent(keys -> query.setComponentKeys(new HashSet<>(keys))); ofNullable(request.getProjectIds()).ifPresent(uuids -> query.setComponentUuids(new HashSet<>(uuids))); return query.build(); }
public ComponentQuery build() { validateQualifiers(this.qualifiers); return new ComponentQuery(this); } }
private static ComponentQuery buildDbQuery(BulkApplyTemplateRequest request) { Collection<String> qualifiers = request.getQualifiers(); ComponentQuery.Builder query = ComponentQuery.builder() .setQualifiers(qualifiers.toArray(new String[qualifiers.size()])); ofNullable(request.getQuery()).ifPresent(q -> { query.setNameOrKeyQuery(q); query.setPartialMatchOnKey(true); }); ofNullable(request.getVisibility()).ifPresent(v -> query.setPrivate(Visibility.isPrivate(v))); ofNullable(request.getAnalyzedBefore()).ifPresent(d -> query.setAnalyzedBefore(parseDateOrDateTime(d).getTime())); query.setOnProvisionedOnly(request.isOnProvisionedOnly()); ofNullable(request.getProjects()).ifPresent(keys -> query.setComponentKeys(new HashSet<>(keys))); return query.build(); }
ComponentScanner scanner = new ComponentScanner(); Set classes = scanner.getClasses(new ComponentQuery() { @Override protected void query() { select().from("com.leyton").returning(allExtending(DynamicForm.class)); } });
private List<String> selectProjectUuidsByQuery(Consumer<ComponentQuery.Builder> query) { ComponentQuery.Builder builder = ComponentQuery.builder().setQualifiers(PROJECT); query.accept(builder); return underTest.selectByQuery(dbSession, builder.build(), 0, 5) .stream() .map(ComponentDto::uuid) .collect(Collectors.toList()); }
@VisibleForTesting ProjectsResult searchProjects(DbSession dbSession, SearchMyProjectsRequest request) { int userId = requireNonNull(userSession.getUserId(), "Current user must be authenticated"); List<Long> componentIds = dbClient.roleDao().selectComponentIdsByPermissionAndUserId(dbSession, UserRole.ADMIN, userId); ComponentQuery dbQuery = ComponentQuery.builder() .setQualifiers(Qualifiers.PROJECT) .setComponentIds(ImmutableSet.copyOf(componentIds.subList(0, Math.min(componentIds.size(), DatabaseUtils.PARTITION_SIZE_FOR_ORACLE)))) .build(); return new ProjectsResult( dbClient.componentDao().selectByQuery(dbSession, dbQuery, offset(request.getPage(), request.getPageSize()), request.getPageSize()), dbClient.componentDao().countByQuery(dbSession, dbQuery)); }
private List<ComponentDto> loadComponents(DbSession dbSession, String componentQuery) { ComponentQuery componentDtoQuery = ComponentQuery.builder() .setNameOrKeyQuery(componentQuery) .setQualifiers(POSSIBLE_QUALIFIERS) .build(); return dbClient.componentDao().selectByQuery(dbSession, componentDtoQuery, 0, CeTaskQuery.MAX_COMPONENT_UUIDS); }
private ComponentQuery toDbQuery(SearchProjectPermissionsRequest wsRequest) { return ComponentQuery.builder() .setQualifiers(qualifiers(wsRequest.getQualifier())) .setNameOrKeyQuery(wsRequest.getQuery()) .build(); }
@Test public void selectByQuery_on_empty_list_of_component_uuids() { db.components().insertPrivateProject(); ComponentQuery dbQuery = ComponentQuery.builder().setQualifiers(PROJECT).setComponentUuids(emptySet()).build(); List<ComponentDto> result = underTest.selectByQuery(dbSession, dbQuery, 0, 10); int count = underTest.countByQuery(dbSession, dbQuery); assertThat(result).isEmpty(); assertThat(count).isEqualTo(0); }