From c2ee935557c8cc2dd34c48761cc8eafbe75b50dc Mon Sep 17 00:00:00 2001 From: =?utf8?q?Beno=C3=AEt=20Gianinetti?= Date: Fri, 28 Jun 2019 09:46:59 +0200 Subject: [PATCH] SC-764 Return alm organization type in /api/organizations/search --- .../org/sonar/db/alm/AlmAppInstallDao.java | 7 ++++ .../org/sonar/db/alm/AlmAppInstallMapper.java | 3 ++ .../org/sonar/db/alm/AlmAppInstallMapper.xml | 11 ++++++ .../sonar/db/alm/AlmAppInstallDaoTest.java | 38 ++++++++++++++++--- .../server/organization/ws/SearchAction.java | 24 +++++++++--- .../organization/ws/SearchActionTest.java | 1 + 6 files changed, 73 insertions(+), 11 deletions(-) diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/alm/AlmAppInstallDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/alm/AlmAppInstallDao.java index 7f43a45d2f6..ba309a409d7 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/alm/AlmAppInstallDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/alm/AlmAppInstallDao.java @@ -21,6 +21,8 @@ package org.sonar.db.alm; import java.util.List; import java.util.Optional; +import java.util.Set; +import java.util.stream.Collectors; import javax.annotation.Nullable; import org.sonar.api.utils.System2; import org.sonar.core.util.UuidFactory; @@ -31,6 +33,7 @@ import org.sonar.db.organization.OrganizationDto; import static com.google.common.base.Preconditions.checkArgument; import static java.util.Objects.requireNonNull; import static org.apache.commons.lang.StringUtils.isNotEmpty; +import static org.sonar.db.DatabaseUtils.executeLargeInputs; /** * Store instances of installed app in external ALM like GitHub or Bitbucket Cloud. @@ -68,6 +71,10 @@ public class AlmAppInstallDao implements Dao { return Optional.ofNullable(mapper.selectByOrganizationUuid(alm.getId(), organization.getUuid())); } + public List selectByOrganizations(DbSession dbSession, List organizations) { + Set organizationUuids = organizations.stream().map(OrganizationDto::getUuid).collect(Collectors.toSet()); + return executeLargeInputs(organizationUuids, uuids -> getMapper(dbSession).selectByOrganizationUuids(organizationUuids)); + } public List selectUnboundByUserExternalId(DbSession dbSession, String userExternalId) { return getMapper(dbSession).selectUnboundByUserExternalId(userExternalId); diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/alm/AlmAppInstallMapper.java b/server/sonar-db-dao/src/main/java/org/sonar/db/alm/AlmAppInstallMapper.java index 9d5e6254522..f7fee75e02e 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/alm/AlmAppInstallMapper.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/alm/AlmAppInstallMapper.java @@ -19,6 +19,7 @@ */ package org.sonar.db.alm; +import java.util.Collection; import java.util.List; import javax.annotation.CheckForNull; import javax.annotation.Nullable; @@ -47,4 +48,6 @@ public interface AlmAppInstallMapper { @Nullable @Param("isOwnerUser") Boolean isOwnerUser, @Param("installId") String installId, @Nullable @Param("userExternalId") String userExternalId, @Param("now") long now); void delete(@Param("alm") String alm, @Param("organizationAlmId") String organizationAlmId); + + List selectByOrganizationUuids(@Param("organizationUuids") Collection organizationUuids); } diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/alm/AlmAppInstallMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/alm/AlmAppInstallMapper.xml index 7f4718b904b..96ef69dd550 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/alm/AlmAppInstallMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/alm/AlmAppInstallMapper.xml @@ -50,6 +50,17 @@ and oab.organization_uuid = #{organizationUuid, jdbcType=VARCHAR} + +