diff options
Diffstat (limited to 'server/sonar-db-dao/src/main/java/org/sonar/db/alm/setting/ProjectAlmSettingQuery.java')
-rw-r--r-- | server/sonar-db-dao/src/main/java/org/sonar/db/alm/setting/ProjectAlmSettingQuery.java | 71 |
1 files changed, 69 insertions, 2 deletions
diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/alm/setting/ProjectAlmSettingQuery.java b/server/sonar-db-dao/src/main/java/org/sonar/db/alm/setting/ProjectAlmSettingQuery.java index ea3d8fd1b47..54c7f6621f5 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/alm/setting/ProjectAlmSettingQuery.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/alm/setting/ProjectAlmSettingQuery.java @@ -21,6 +21,73 @@ package org.sonar.db.alm.setting; import javax.annotation.Nullable; -public record ProjectAlmSettingQuery(@Nullable String repository, @Nullable String almSettingUuid -) { +public record ProjectAlmSettingQuery( + @Nullable String repository, + @Nullable String almSettingUuid, + @Nullable String almRepo, + @Nullable String almSlug) { + + // Existing constructor for backward compatibility (repository search in both alm_repo and alm_slug) + public ProjectAlmSettingQuery(String repository, String almSettingUuid) { + this(repository, almSettingUuid, null, null); + } + + public static Builder builder() { + return new Builder(); + } + + public static class Builder { + private String repository; + private String almSettingUuid; + private String almRepo; + private String almSlug; + + private Builder() { + } + + public Builder repository(String repository) { + if (almRepo != null || almSlug != null) { + throw new IllegalStateException("Cannot use repository with almRepo or almSlug"); + } + this.repository = repository; + return this; + } + + public Builder almSettingUuid(String almSettingUuid) { + if (almRepo != null || almSlug != null) { + throw new IllegalStateException("Cannot use almSettingUuid with almRepo or almSlug"); + } + this.almSettingUuid = almSettingUuid; + return this; + } + + public Builder almRepo(String almRepo) { + if (repository != null || almSettingUuid != null) { + throw new IllegalStateException("Cannot use almRepo with repository or almSettingUuid"); + } + this.almRepo = almRepo; + return this; + } + + public Builder almSlug(String almSlug) { + if (repository != null || almSettingUuid != null) { + throw new IllegalStateException("Cannot use almSlug with repository or almSettingUuid"); + } + this.almSlug = almSlug; + return this; + } + + public ProjectAlmSettingQuery build() { + return new ProjectAlmSettingQuery(repository, almSettingUuid, almRepo, almSlug); + } + } + + public static ProjectAlmSettingQuery forAlmRepo(String almRepo) { + return builder().almRepo(almRepo).build(); + } + + public static ProjectAlmSettingQuery forAlmRepoAndSlug(String almRepo, String almSlug) { + return builder().almRepo(almRepo).almSlug(almSlug).build(); + } + } |