aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-db-dao/src/main/java/org/sonar/db/alm/setting
diff options
context:
space:
mode:
Diffstat (limited to 'server/sonar-db-dao/src/main/java/org/sonar/db/alm/setting')
-rw-r--r--server/sonar-db-dao/src/main/java/org/sonar/db/alm/setting/ProjectAlmSettingDto.java17
-rw-r--r--server/sonar-db-dao/src/main/java/org/sonar/db/alm/setting/ProjectAlmSettingQuery.java71
2 files changed, 86 insertions, 2 deletions
diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/alm/setting/ProjectAlmSettingDto.java b/server/sonar-db-dao/src/main/java/org/sonar/db/alm/setting/ProjectAlmSettingDto.java
index 95f83df37d7..2d0e5766eb9 100644
--- a/server/sonar-db-dao/src/main/java/org/sonar/db/alm/setting/ProjectAlmSettingDto.java
+++ b/server/sonar-db-dao/src/main/java/org/sonar/db/alm/setting/ProjectAlmSettingDto.java
@@ -19,6 +19,7 @@
*/
package org.sonar.db.alm.setting;
+import java.util.Objects;
import javax.annotation.CheckForNull;
import javax.annotation.Nullable;
@@ -165,5 +166,21 @@ public class ProjectAlmSettingDto {
this.createdAt = createdAt;
}
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ProjectAlmSettingDto that = (ProjectAlmSettingDto) o;
+ return Objects.equals(uuid, that.uuid);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(uuid);
+ }
}
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();
+ }
+
}