diff options
author | Michal Duda <michal.duda@sonarsource.com> | 2020-12-15 01:05:54 +0100 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2020-12-22 20:09:37 +0000 |
commit | 019d8c66ada8a01c96733bed0c771a8b88cfe3cd (patch) | |
tree | ebd597656341088edfa720a807170a8da00ce289 /server/sonar-db-dao | |
parent | a8cd264afd2a7532ee0f3d9809db2d5cb8c32e6e (diff) | |
download | sonarqube-019d8c66ada8a01c96733bed0c771a8b88cfe3cd.tar.gz sonarqube-019d8c66ada8a01c96733bed0c771a8b88cfe3cd.zip |
SONAR-13999 removed OrganizationMemberDao
Diffstat (limited to 'server/sonar-db-dao')
17 files changed, 23 insertions, 545 deletions
diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/DaoModule.java b/server/sonar-db-dao/src/main/java/org/sonar/db/DaoModule.java index a76ef07ffc6..9baeac01d08 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/DaoModule.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/DaoModule.java @@ -55,7 +55,6 @@ import org.sonar.db.metric.MetricDao; import org.sonar.db.newcodeperiod.NewCodePeriodDao; import org.sonar.db.notification.NotificationQueueDao; import org.sonar.db.organization.OrganizationDao; -import org.sonar.db.organization.OrganizationMemberDao; import org.sonar.db.permission.AuthorizationDao; import org.sonar.db.permission.GroupPermissionDao; import org.sonar.db.permission.UserPermissionDao; @@ -137,7 +136,6 @@ public class DaoModule extends Module { NotificationQueueDao.class, OrganizationAlmBindingDao.class, OrganizationDao.class, - OrganizationMemberDao.class, PermissionTemplateCharacteristicDao.class, PermissionTemplateDao.class, PluginDao.class, diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/DbClient.java b/server/sonar-db-dao/src/main/java/org/sonar/db/DbClient.java index bd6c3c878d6..b63d1085963 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/DbClient.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/DbClient.java @@ -53,7 +53,6 @@ import org.sonar.db.metric.MetricDao; import org.sonar.db.newcodeperiod.NewCodePeriodDao; import org.sonar.db.notification.NotificationQueueDao; import org.sonar.db.organization.OrganizationDao; -import org.sonar.db.organization.OrganizationMemberDao; import org.sonar.db.permission.AuthorizationDao; import org.sonar.db.permission.GroupPermissionDao; import org.sonar.db.permission.UserPermissionDao; @@ -101,7 +100,6 @@ public class DbClient { private final SchemaMigrationDao schemaMigrationDao; private final AuthorizationDao authorizationDao; private final OrganizationDao organizationDao; - private final OrganizationMemberDao organizationMemberDao; private final QualityProfileDao qualityProfileDao; private final QualityProfileExportDao qualityProfileExportDao; private final PropertiesDao propertiesDao; @@ -185,7 +183,6 @@ public class DbClient { schemaMigrationDao = getDao(map, SchemaMigrationDao.class); authorizationDao = getDao(map, AuthorizationDao.class); organizationDao = getDao(map, OrganizationDao.class); - organizationMemberDao = getDao(map, OrganizationMemberDao.class); qualityProfileDao = getDao(map, QualityProfileDao.class); qualityProfileExportDao = getDao(map, QualityProfileExportDao.class); propertiesDao = getDao(map, PropertiesDao.class); @@ -290,10 +287,6 @@ public class DbClient { return organizationDao; } - public OrganizationMemberDao organizationMemberDao() { - return organizationMemberDao; - } - public IssueDao issueDao() { return issueDao; } diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/MyBatis.java b/server/sonar-db-dao/src/main/java/org/sonar/db/MyBatis.java index 77205277bb5..c578a6b5028 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/MyBatis.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/MyBatis.java @@ -87,8 +87,6 @@ import org.sonar.db.notification.NotificationQueueDto; import org.sonar.db.notification.NotificationQueueMapper; import org.sonar.db.organization.OrganizationDto; import org.sonar.db.organization.OrganizationMapper; -import org.sonar.db.organization.OrganizationMemberDto; -import org.sonar.db.organization.OrganizationMemberMapper; import org.sonar.db.permission.AuthorizationMapper; import org.sonar.db.permission.GroupPermissionDto; import org.sonar.db.permission.GroupPermissionMapper; @@ -196,7 +194,6 @@ public class MyBatis implements Startable { confBuilder.loadAlias("Measure", MeasureDto.class); confBuilder.loadAlias("NotificationQueue", NotificationQueueDto.class); confBuilder.loadAlias("Organization", OrganizationDto.class); - confBuilder.loadAlias("OrganizationMember", OrganizationMemberDto.class); confBuilder.loadAlias("PermissionTemplateCharacteristic", PermissionTemplateCharacteristicDto.class); confBuilder.loadAlias("PermissionTemplateGroup", PermissionTemplateGroupDto.class); confBuilder.loadAlias("PermissionTemplate", PermissionTemplateDto.class); @@ -265,7 +262,6 @@ public class MyBatis implements Startable { NotificationQueueMapper.class, OrganizationAlmBindingMapper.class, OrganizationMapper.class, - OrganizationMemberMapper.class, PermissionTemplateCharacteristicMapper.class, PermissionTemplateMapper.class, PluginMapper.class, @@ -334,7 +330,6 @@ public class MyBatis implements Startable { return newScrollingSelectStatement(session, sql, fetchSize); } - private static PreparedStatement newScrollingSelectStatement(DbSession session, String sql, int fetchSize) { try { PreparedStatement stmt = session.getConnection().prepareStatement(sql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/organization/OrganizationMemberDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/organization/OrganizationMemberDao.java deleted file mode 100644 index bcf6436a626..00000000000 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/organization/OrganizationMemberDao.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2020 SonarSource SA - * mailto:info AT sonarsource DOT com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.db.organization; - -import java.util.Collection; -import java.util.List; -import java.util.Optional; -import java.util.Set; -import java.util.function.BiConsumer; -import org.sonar.db.Dao; -import org.sonar.db.DbSession; - -import static org.sonar.db.DatabaseUtils.executeLargeInputsWithoutOutput; - -public class OrganizationMemberDao implements Dao { - private static OrganizationMemberMapper mapper(DbSession dbSession) { - return dbSession.getMapper(OrganizationMemberMapper.class); - } - - public Optional<OrganizationMemberDto> select(DbSession dbSession, String organizationUuid, String userUuid) { - return Optional.ofNullable(mapper(dbSession).select(organizationUuid, userUuid)); - } - - public List<String> selectUserUuidsByOrganizationUuid(DbSession dbSession, String organizationUuid) { - return mapper(dbSession).selectUserUuids(organizationUuid); - } - - public void insert(DbSession dbSession, OrganizationMemberDto organizationMemberDto) { - mapper(dbSession).insert(organizationMemberDto); - } - - public void delete(DbSession dbSession, String organizationMemberUuid, String userUuid) { - mapper(dbSession).delete(organizationMemberUuid, userUuid); - } - - public void deleteByOrganizationUuid(DbSession dbSession, String organizationMemberUuid) { - mapper(dbSession).deleteByOrganization(organizationMemberUuid); - } - - public void deleteByUserUuid(DbSession dbSession, String userUuid) { - mapper(dbSession).deleteByUserUuid(userUuid); - } - - public Set<String> selectOrganizationUuidsByUser(DbSession dbSession, String userUuid) { - return mapper(dbSession).selectOrganizationUuidsByUser(userUuid); - } - - /** - * @param userUuidOrganizationConsumer {@link BiConsumer}<String,String> (uuid, organization uuid) - */ - public void selectForUserIndexing(DbSession dbSession, Collection<String> uuids, BiConsumer<String, String> userUuidOrganizationConsumer) { - executeLargeInputsWithoutOutput(uuids, list -> mapper(dbSession).selectForIndexing(list) - .forEach(row -> userUuidOrganizationConsumer.accept(row.get("uuid"), row.get("organizationUuid")))); - } - - /** - * - * @param userUuidOrganizationConsumer {@link BiConsumer}<String,String> (uuid, organization uuid) - */ - public void selectAllForUserIndexing(DbSession dbSession, BiConsumer<String, String> userUuidOrganizationConsumer) { - mapper(dbSession).selectAllForIndexing() - .forEach(row -> userUuidOrganizationConsumer.accept(row.get("uuid"), row.get("organizationUuid"))); - } -} diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/organization/OrganizationMemberDto.java b/server/sonar-db-dao/src/main/java/org/sonar/db/organization/OrganizationMemberDto.java deleted file mode 100644 index e15b449aa2f..00000000000 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/organization/OrganizationMemberDto.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2020 SonarSource SA - * mailto:info AT sonarsource DOT com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.db.organization; - -public class OrganizationMemberDto { - private String organizationUuid; - private String userUuid; - - public String getOrganizationUuid() { - return organizationUuid; - } - - public OrganizationMemberDto setOrganizationUuid(String organizationUuid) { - this.organizationUuid = organizationUuid; - return this; - } - - public String getUserUuid() { - return userUuid; - } - - public OrganizationMemberDto setUserUuid(String userUuid) { - this.userUuid = userUuid; - return this; - } -} diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/organization/OrganizationMemberMapper.java b/server/sonar-db-dao/src/main/java/org/sonar/db/organization/OrganizationMemberMapper.java deleted file mode 100644 index 0f6cdda65ca..00000000000 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/organization/OrganizationMemberMapper.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2020 SonarSource SA - * mailto:info AT sonarsource DOT com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.db.organization; - -import java.util.List; -import java.util.Map; -import java.util.Set; -import org.apache.ibatis.annotations.Param; - -public interface OrganizationMemberMapper { - OrganizationMemberDto select(@Param("organizationUuid") String organizationUuid, @Param("userUuid") String userUuid); - - Set<String> selectOrganizationUuidsByUser(@Param("userUuid") String userUuid); - - List<String> selectUserUuids(String organizationUuid); - - List<Map<String, String>> selectForIndexing(@Param("uuids") List<String> uuids); - - List<Map<String, String>> selectAllForIndexing(); - - void insert(OrganizationMemberDto organizationMember); - - void delete(@Param("organizationUuid") String organizationUuid, @Param("userUuid") String userUuid); - - void deleteByOrganization(@Param("organizationUuid") String organizationUuid); - - void deleteByUserUuid(@Param("userUuid") String userUuid); - -} diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/organization/OrganizationQuery.java b/server/sonar-db-dao/src/main/java/org/sonar/db/organization/OrganizationQuery.java index 18eb017c9af..1d10bb2e358 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/organization/OrganizationQuery.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/organization/OrganizationQuery.java @@ -30,15 +30,12 @@ import static org.sonar.core.util.stream.MoreCollectors.toSet; public class OrganizationQuery { private static final OrganizationQuery NO_FILTER = newOrganizationQueryBuilder().build(); private final Set<String> keys; - @Nullable - private final String userUuid; private final boolean withAnalyses; @Nullable private final Long analyzedAfter; private OrganizationQuery(Builder builder) { this.keys = builder.keys; - this.userUuid = builder.member; this.withAnalyses = builder.withAnalyses; this.analyzedAfter = builder.analyzedAfter; } @@ -48,11 +45,6 @@ public class OrganizationQuery { return keys; } - @CheckForNull - public String getMember() { - return userUuid; - } - public boolean isWithAnalyses() { return withAnalyses; } @@ -72,8 +64,6 @@ public class OrganizationQuery { public static class Builder { private Set<String> keys; - @Nullable - private String member; private boolean withAnalyses = false; @Nullable private Long analyzedAfter; @@ -91,11 +81,6 @@ public class OrganizationQuery { return this; } - public Builder setMember(@Nullable String userUuid) { - this.member = userUuid; - return this; - } - public Builder setWithAnalyses() { this.withAnalyses = true; return this; diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/property/PropertiesDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/property/PropertiesDao.java index 18a7915dbb7..40b57ee52a5 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/property/PropertiesDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/property/PropertiesDao.java @@ -207,7 +207,7 @@ public class PropertiesDao implements Dao { } private void save(PropertiesMapper mapper, String key, - @Nullable String userUuid, @Nullable String componentUuid, @Nullable String value) { + @Nullable String userUuid, @Nullable String componentUuid, @Nullable String value) { checkKey(key); long now = system2.now(); @@ -289,13 +289,13 @@ public class PropertiesDao implements Dao { } } - public void deleteByOrganizationAndUser(DbSession dbSession, String organizationUuid, String userUuid) { - List<String> uuids = getMapper(dbSession).selectUuidsByOrganizationAndUser(organizationUuid, userUuid); + public void deleteByUser(DbSession dbSession, String userUuid) { + List<String> uuids = getMapper(dbSession).selectUuidsByUser(userUuid); executeLargeInputsWithoutOutput(uuids, subList -> getMapper(dbSession).deleteByUuids(subList)); } - public void deleteByOrganizationAndMatchingLogin(DbSession dbSession, String organizationUuid, String login, List<String> propertyKeys) { - List<String> uuids = getMapper(dbSession).selectIdsByOrganizationAndMatchingLogin(organizationUuid, login, propertyKeys); + public void deleteByMatchingLogin(DbSession dbSession, String login, List<String> propertyKeys) { + List<String> uuids = getMapper(dbSession).selectIdsByMatchingLogin(login, propertyKeys); executeLargeInputsWithoutOutput(uuids, list -> getMapper(dbSession).deleteByUuids(list)); } diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/property/PropertiesMapper.java b/server/sonar-db-dao/src/main/java/org/sonar/db/property/PropertiesMapper.java index 8466e95665a..803490f5605 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/property/PropertiesMapper.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/property/PropertiesMapper.java @@ -50,10 +50,9 @@ public interface PropertiesMapper { List<PropertyDto> selectByKeyAndMatchingValue(@Param("key") String key, @Param("value") String value); - List<String> selectUuidsByOrganizationAndUser(@Param("organizationUuid") String organizationUuid, @Param("userUuid") String userUuid); + List<String> selectUuidsByUser(@Param("userUuid") String userUuid); - List<String> selectIdsByOrganizationAndMatchingLogin(@Param("organizationUuid") String organizationUuid, @Param("login") String login, - @Param("propertyKeys") List<String> propertyKeys); + List<String> selectIdsByMatchingLogin(@Param("login") String login, @Param("propertyKeys") List<String> propertyKeys); void insertAsEmpty(@Param("uuid") String uuid, @Param("key") String key, @Nullable @Param("userUuid") String userUuid, @Nullable @Param("componentUuid") String componentUuid, @Param("now") long now); diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/organization/OrganizationMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/organization/OrganizationMapper.xml index 6c4c69169ef..884e30b9891 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/organization/OrganizationMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/organization/OrganizationMapper.xml @@ -109,10 +109,6 @@ <sql id="sqlSelectByQuery"> from organizations org - <if test="query.member != null"> - inner join organization_members om on org.uuid=om.organization_uuid - and om.user_uuid=#{query.member,jdbcType=VARCHAR} - </if> <where> <if test="query.keys != null"> org.kee in diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/organization/OrganizationMemberMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/organization/OrganizationMemberMapper.xml deleted file mode 100644 index b8e18e99667..00000000000 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/organization/OrganizationMemberMapper.xml +++ /dev/null @@ -1,76 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> - -<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd"> - -<mapper namespace="org.sonar.db.organization.OrganizationMemberMapper"> - <sql id="selectColumns"> - om.organization_uuid as "organizationUuid", - om.user_uuid as "userUuid" - </sql> - - <select id="select" resultType="OrganizationMember"> - select - <include refid="selectColumns"/> - from organization_members om - where - om.organization_uuid = #{organizationUuid, jdbcType=VARCHAR} - and om.user_uuid = #{userUuid, jdbcType=VARCHAR} - </select> - - <select id="selectUserUuids" resultType="String"> - select om.user_uuid - from organization_members om - where om.organization_uuid=#{organizationUuid,jdbcType=VARCHAR} - </select> - - <select id="selectOrganizationUuidsByUser" resultType="String"> - select om.organization_uuid as "organizationUuid" - from organization_members om - where om.user_uuid = #{userUuid, jdbcType=VARCHAR} - </select> - - <select id="selectForIndexing" resultType="hashmap"> - select om.user_uuid as "uuid", om.organization_uuid as "organizationUuid" - from organization_members om - where om.user_uuid in - <foreach collection="uuids" open="(" close=")" item="uuid" separator=","> - #{uuid, jdbcType=VARCHAR} - </foreach> - </select> - - <select id="selectAllForIndexing" resultType="hashmap"> - select om.user_uuid as "uuid", om.organization_uuid as "organizationUuid" - from organization_members om - </select> - - <insert id="insert" parameterType="OrganizationMember" useGeneratedKeys="false"> - insert into organization_members - ( - organization_uuid, - user_uuid - ) - values - ( - #{organizationUuid, jdbcType=VARCHAR}, - #{userUuid, jdbcType=VARCHAR} - ) - </insert> - - <delete id="delete"> - delete from organization_members - where - organization_uuid = #{organizationUuid, jdbcType=VARCHAR} - and user_uuid = #{userUuid, jdbcType=VARCHAR} - </delete> - - <delete id="deleteByOrganization" parameterType="map"> - delete from organization_members - where - organization_uuid = #{organizationUuid, jdbcType=VARCHAR} - </delete> - - <delete id="deleteByUserUuid" parameterType="String"> - DELETE FROM organization_members WHERE user_uuid=#{userUuid,jdbcType=VARCHAR} - </delete> - -</mapper> diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/property/PropertiesMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/property/PropertiesMapper.xml index 1b35a43ec3c..7be56631a9f 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/property/PropertiesMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/property/PropertiesMapper.xml @@ -201,26 +201,22 @@ </where> </select> - <select id="selectUuidsByOrganizationAndUser" parameterType="map" resultType="String"> + <select id="selectUuidsByUser" parameterType="map" resultType="String"> select py.uuid from properties py - inner join components ps on py.component_uuid = ps.uuid where py.user_uuid=#{userUuid,jdbcType=VARCHAR} - and ps.organization_uuid=#{organizationUuid,jdbcType=VARCHAR} </select> - <select id="selectIdsByOrganizationAndMatchingLogin" parameterType="String" resultType="String"> + <select id="selectIdsByMatchingLogin" parameterType="String" resultType="String"> select py.uuid from properties py - inner join components ps on py.component_uuid = ps.uuid where py.text_value like #{login,jdbcType=VARCHAR} and py.prop_key in <foreach item="property" index="index" collection="propertyKeys" open="(" separator="," close=")"> #{property,jdbcType=VARCHAR} </foreach> - and ps.organization_uuid=#{organizationUuid,jdbcType=VARCHAR} </select> <select id="selectByKeyAndMatchingValue" parameterType="map" resultType="ScrapProperty"> diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/organization/OrganizationMemberDaoTest.java b/server/sonar-db-dao/src/test/java/org/sonar/db/organization/OrganizationMemberDaoTest.java deleted file mode 100644 index fbc82aa2e0f..00000000000 --- a/server/sonar-db-dao/src/test/java/org/sonar/db/organization/OrganizationMemberDaoTest.java +++ /dev/null @@ -1,188 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2020 SonarSource SA - * mailto:info AT sonarsource DOT com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.db.organization; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import org.apache.ibatis.exceptions.PersistenceException; -import org.assertj.core.groups.Tuple; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.sonar.db.DbClient; -import org.sonar.db.DbSession; -import org.sonar.db.DbTester; -import org.sonar.db.user.UserDto; - -import static java.util.Arrays.asList; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.entry; -import static org.assertj.core.api.Assertions.tuple; - -public class OrganizationMemberDaoTest { - @Rule - public final DbTester db = DbTester.create().setDisableDefaultOrganization(true); - @Rule - public ExpectedException expectedException = ExpectedException.none(); - - private DbClient dbClient = db.getDbClient(); - private DbSession dbSession = db.getSession(); - - private OrganizationMemberDao underTest = dbClient.organizationMemberDao(); - - @Test - public void select() { - underTest.insert(dbSession, create("O1", "512")); - - Optional<OrganizationMemberDto> result = underTest.select(dbSession, "O1", "512"); - - assertThat(result).isPresent(); - assertThat(result.get()).extracting(OrganizationMemberDto::getOrganizationUuid, OrganizationMemberDto::getUserUuid).containsExactly("O1", "512"); - assertThat(underTest.select(dbSession, "O1", "256")).isNotPresent(); - assertThat(underTest.select(dbSession, "O2", "512")).isNotPresent(); - } - - @Test - public void select_user_uuids_by_organization_uuid() { - OrganizationDto organization = db.organizations().insert(); - OrganizationDto anotherOrganization = db.organizations().insert(); - UserDto user = db.users().insertUser(); - UserDto anotherUser = db.users().insertUser(); - UserDto userInAnotherOrganization = db.users().insertUser(); - db.organizations().addMember(organization, user); - db.organizations().addMember(organization, anotherUser); - db.organizations().addMember(anotherOrganization, userInAnotherOrganization); - - List<String> result = underTest.selectUserUuidsByOrganizationUuid(dbSession, organization.getUuid()); - - assertThat(result).containsOnly(user.getUuid(), anotherUser.getUuid()); - } - - @Test - public void select_organization_uuids_by_user_uuid() { - OrganizationDto organizationDto1 = db.organizations().insert(); - OrganizationDto organizationDto2 = db.organizations().insert(); - OrganizationDto organizationDto3 = db.organizations().insert(); - underTest.insert(dbSession, create(organizationDto1.getUuid(), "512")); - underTest.insert(dbSession, create(organizationDto2.getUuid(), "512")); - - assertThat(underTest.selectOrganizationUuidsByUser(dbSession, "512")).containsOnly(organizationDto1.getUuid(), organizationDto2.getUuid()) - .doesNotContain(organizationDto3.getUuid()); - assertThat(underTest.selectOrganizationUuidsByUser(dbSession, "123")).isEmpty(); - } - - @Test - public void select_for_indexing() { - OrganizationDto org1 = db.organizations().insert(o -> o.setUuid("ORG_1")); - OrganizationDto org2 = db.organizations().insert(o -> o.setUuid("ORG_2")); - UserDto user1 = db.users().insertUser(); - UserDto user2 = db.users().insertUser(); - db.organizations().addMember(org1, user1); - db.organizations().addMember(org1, user2); - db.organizations().addMember(org2, user1); - List<Tuple> result = new ArrayList<>(); - - underTest.selectForUserIndexing(dbSession, asList(user1.getUuid(), user2.getUuid()), (login, org) -> result.add(tuple(login, org))); - - assertThat(result).containsOnly(tuple(user1.getUuid(), "ORG_1"), tuple(user1.getUuid(), "ORG_2"), tuple(user2.getUuid(), "ORG_1")); - } - - @Test - public void select_all_for_indexing() { - OrganizationDto org1 = db.organizations().insert(o -> o.setUuid("ORG_1")); - OrganizationDto org2 = db.organizations().insert(o -> o.setUuid("ORG_2")); - UserDto user1 = db.users().insertUser(); - UserDto user2 = db.users().insertUser(); - db.organizations().addMember(org1, user1); - db.organizations().addMember(org1, user2); - db.organizations().addMember(org2, user1); - List<Tuple> result = new ArrayList<>(); - - underTest.selectAllForUserIndexing(dbSession, (login, org) -> result.add(tuple(login, org))); - - assertThat(result).containsOnly(tuple(user1.getUuid(), "ORG_1"), tuple(user1.getUuid(), "ORG_2"), tuple(user2.getUuid(), "ORG_1")); - } - - @Test - public void insert() { - underTest.insert(dbSession, create("O_1", "256")); - - Map<String, Object> result = db.selectFirst(dbSession, "select organization_uuid as \"organizationUuid\", user_uuid as \"userUuid\" from organization_members"); - - assertThat(result).containsOnly(entry("organizationUuid", "O_1"), entry("userUuid", "256")); - } - - @Test - public void fail_insert_if_no_organization_uuid() { - expectedException.expect(PersistenceException.class); - - underTest.insert(dbSession, create(null, "256")); - } - - @Test - public void fail_insert_if_no_user_uuid() { - expectedException.expect(PersistenceException.class); - - underTest.insert(dbSession, create("O_1", null)); - } - - @Test - public void fail_if_organization_member_already_exist() { - underTest.insert(dbSession, create("O_1", "256")); - expectedException.expect(PersistenceException.class); - - underTest.insert(dbSession, create("O_1", "256")); - } - - @Test - public void delete_by_organization() { - underTest.insert(dbSession, create("O1", "512")); - underTest.insert(dbSession, create("O1", "513")); - underTest.insert(dbSession, create("O2", "512")); - - underTest.deleteByOrganizationUuid(dbSession, "O1"); - - assertThat(underTest.select(dbSession, "O1", "512")).isNotPresent(); - assertThat(underTest.select(dbSession, "O1", "513")).isNotPresent(); - assertThat(underTest.select(dbSession, "O2", "512")).isPresent(); - } - - @Test - public void delete_by_user_uuid() { - underTest.insert(dbSession, create("O1", "512")); - underTest.insert(dbSession, create("O1", "513")); - underTest.insert(dbSession, create("O2", "512")); - - underTest.deleteByUserUuid(dbSession, "512"); - db.commit(); - - assertThat(db.select("select organization_uuid as \"organizationUuid\", user_uuid as \"userUuid\" from organization_members")) - .extracting((row) -> row.get("organizationUuid"), (row) -> row.get("userUuid")) - .containsOnly(tuple("O1", "513")); - } - - private OrganizationMemberDto create(String organizationUuid, String userUuid) { - return new OrganizationMemberDto() - .setOrganizationUuid(organizationUuid) - .setUserUuid(userUuid); - } -} diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/permission/template/UserWithPermissionTemplateDaoTest.java b/server/sonar-db-dao/src/test/java/org/sonar/db/permission/template/UserWithPermissionTemplateDaoTest.java index 3644605c91f..1466911224c 100644 --- a/server/sonar-db-dao/src/test/java/org/sonar/db/permission/template/UserWithPermissionTemplateDaoTest.java +++ b/server/sonar-db-dao/src/test/java/org/sonar/db/permission/template/UserWithPermissionTemplateDaoTest.java @@ -27,7 +27,6 @@ import org.sonar.api.utils.System2; import org.sonar.api.web.UserRole; import org.sonar.db.DbSession; import org.sonar.db.DbTester; -import org.sonar.db.organization.OrganizationDto; import org.sonar.db.permission.PermissionQuery; import org.sonar.db.user.UserDto; @@ -46,17 +45,15 @@ public class UserWithPermissionTemplateDaoTest { @Rule public DbTester db = DbTester.create(System2.INSTANCE); - private DbSession dbSession = db.getSession(); + private final DbSession dbSession = db.getSession(); - private PermissionTemplateDao underTest = db.getDbClient().permissionTemplateDao(); + private final PermissionTemplateDao underTest = db.getDbClient().permissionTemplateDao(); @Test public void select_logins() { - OrganizationDto organization = db.organizations().insert(); UserDto user1 = db.users().insertUser(); UserDto user2 = db.users().insertUser(); UserDto user3 = db.users().insertUser(); - db.organizations().addMember(organization, user1, user2, user3); PermissionTemplateDto permissionTemplate = db.permissionTemplates().insertTemplate(); db.permissionTemplates().addUserToTemplate(permissionTemplate, user1, USER); db.permissionTemplates().addUserToTemplate(permissionTemplate, user1, ADMIN); @@ -76,9 +73,7 @@ public class UserWithPermissionTemplateDaoTest { @Test public void return_no_logins_on_unknown_template_key() { - OrganizationDto organization = db.organizations().insert(); UserDto user = db.users().insertUser(); - db.organizations().addMember(organization, user); PermissionTemplateDto permissionTemplate = db.permissionTemplates().insertTemplate(); db.permissionTemplates().addUserToTemplate(permissionTemplate, user, USER); @@ -89,11 +84,9 @@ public class UserWithPermissionTemplateDaoTest { @Test public void select_only_logins_with_permission() { - OrganizationDto organization = db.organizations().insert(); UserDto user1 = db.users().insertUser(); UserDto user2 = db.users().insertUser(); UserDto user3 = db.users().insertUser(); - db.organizations().addMember(organization, user1, user2, user3); PermissionTemplateDto permissionTemplate = db.permissionTemplates().insertTemplate(); db.permissionTemplates().addUserToTemplate(permissionTemplate, user1, USER); db.permissionTemplates().addUserToTemplate(permissionTemplate, user1, ADMIN); @@ -110,10 +103,8 @@ public class UserWithPermissionTemplateDaoTest { @Test public void select_only_enable_users() { - OrganizationDto organization = db.organizations().insert(); UserDto user = db.users().insertUser(); UserDto disabledUser = db.users().insertUser(u -> u.setActive(false)); - db.organizations().addMember(organization, user, disabledUser); PermissionTemplateDto permissionTemplate = db.permissionTemplates().insertTemplate(); db.permissionTemplates().addUserToTemplate(permissionTemplate, user, USER); db.permissionTemplates().addUserToTemplate(permissionTemplate, disabledUser, USER); @@ -125,11 +116,9 @@ public class UserWithPermissionTemplateDaoTest { @Test public void search_by_user_name() { - OrganizationDto organization = db.organizations().insert(); UserDto user1 = db.users().insertUser(u -> u.setName("User1")); UserDto user2 = db.users().insertUser(u -> u.setName("User2")); UserDto user3 = db.users().insertUser(u -> u.setName("User3")); - db.organizations().addMember(organization, user1, user2, user3); PermissionTemplateDto permissionTemplate = db.permissionTemplates().insertTemplate(); db.permissionTemplates().addUserToTemplate(permissionTemplate, user1, USER); db.permissionTemplates().addUserToTemplate(permissionTemplate, user2, USER); @@ -151,7 +140,6 @@ public class UserWithPermissionTemplateDaoTest { UserDto user1 = db.users().insertUser(u -> u.setName("A")); UserDto user2 = db.users().insertUser(u -> u.setName("B")); UserDto user3 = db.users().insertUser(u -> u.setName("C")); - //db.organizations().addMember(organization, user1, user2, user3); db.permissionTemplates().addUserToTemplate(template.getUuid(), user3.getUuid(), UserRole.USER); PermissionQuery query = PermissionQuery.builder().build(); @@ -161,13 +149,11 @@ public class UserWithPermissionTemplateDaoTest { @Test public void selectUserLoginsByQueryAndTemplate_is_order_by_groups_with_permission_when_many_users() { - OrganizationDto organization = db.organizations().insert(); PermissionTemplateDto template = db.permissionTemplates().insertTemplate(); // Add another template having some users with permission to make sure it's correctly ignored PermissionTemplateDto otherTemplate = db.permissionTemplates().insertTemplate(); IntStream.rangeClosed(1, DEFAULT_PAGE_SIZE + 1).forEach(i -> { UserDto user = db.users().insertUser("User-" + i); - db.organizations().addMember(organization, user); db.permissionTemplates().addUserToTemplate(otherTemplate, user, UserRole.USER); }); String lastLogin = "User-" + (DEFAULT_PAGE_SIZE + 1); @@ -181,11 +167,9 @@ public class UserWithPermissionTemplateDaoTest { @Test public void should_be_paginated() { - OrganizationDto organization = db.organizations().insert(); UserDto user1 = db.users().insertUser(u -> u.setName("User1")); UserDto user2 = db.users().insertUser(u -> u.setName("User2")); UserDto user3 = db.users().insertUser(u -> u.setName("User3")); - db.organizations().addMember(organization, user1, user2, user3); PermissionTemplateDto permissionTemplate = db.permissionTemplates().insertTemplate(); db.permissionTemplates().addUserToTemplate(permissionTemplate, user1, USER); db.permissionTemplates().addUserToTemplate(permissionTemplate, user2, USER); @@ -203,11 +187,9 @@ public class UserWithPermissionTemplateDaoTest { @Test public void count_users() { - OrganizationDto organization = db.organizations().insert(); UserDto user1 = db.users().insertUser(); UserDto user2 = db.users().insertUser(); UserDto user3 = db.users().insertUser(); - db.organizations().addMember(organization, user1, user2, user3); PermissionTemplateDto permissionTemplate = db.permissionTemplates().insertTemplate(); db.permissionTemplates().addUserToTemplate(permissionTemplate, user1, USER); db.permissionTemplates().addUserToTemplate(permissionTemplate, user2, USER); @@ -222,11 +204,9 @@ public class UserWithPermissionTemplateDaoTest { @Test public void select_user_permission_templates_by_template_and_logins() { - OrganizationDto organization = db.organizations().insert(); UserDto user1 = db.users().insertUser(); UserDto user2 = db.users().insertUser(); UserDto user3 = db.users().insertUser(); - db.organizations().addMember(organization, user1, user2, user3); PermissionTemplateDto permissionTemplate = db.permissionTemplates().insertTemplate(); db.permissionTemplates().addUserToTemplate(permissionTemplate, user1, USER); db.permissionTemplates().addUserToTemplate(permissionTemplate, user1, ADMIN); diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/property/PropertiesDaoTest.java b/server/sonar-db-dao/src/test/java/org/sonar/db/property/PropertiesDaoTest.java index 42c85973c39..644d17895c1 100644 --- a/server/sonar-db-dao/src/test/java/org/sonar/db/property/PropertiesDaoTest.java +++ b/server/sonar-db-dao/src/test/java/org/sonar/db/property/PropertiesDaoTest.java @@ -43,7 +43,6 @@ import org.sonar.db.DbTester; import org.sonar.db.EmailSubscriberDto; import org.sonar.db.component.ComponentDto; import org.sonar.db.component.ComponentTesting; -import org.sonar.db.organization.OrganizationDto; import org.sonar.db.user.UserDto; import static com.google.common.collect.ImmutableSet.of; @@ -1011,11 +1010,9 @@ public class PropertiesDaoTest { } @Test - public void delete_by_organization_and_user() { - OrganizationDto organization = db.organizations().insert(); - OrganizationDto anotherOrganization = db.organizations().insert(); - ComponentDto project = db.components().insertPrivateProject(organization); - ComponentDto anotherProject = db.components().insertPrivateProject(anotherOrganization); + public void delete_by_user() { + ComponentDto project = db.components().insertPrivateProject(); + ComponentDto anotherProject = db.components().insertPrivateProject(); UserDto user = db.users().insertUser(); UserDto anotherUser = db.users().insertUser(); insertProperty("KEY_11", "VALUE", project.uuid(), user.getUuid()); @@ -1023,22 +1020,19 @@ public class PropertiesDaoTest { insertProperty("KEY_11", "VALUE", project.uuid(), anotherUser.getUuid()); insertProperty("KEY_11", "VALUE", anotherProject.uuid(), user.getUuid()); - underTest.deleteByOrganizationAndUser(session, organization.getUuid(), user.getUuid()); + underTest.deleteByUser(session, user.getUuid()); assertThat(dbClient.propertiesDao().selectByQuery(PropertyQuery.builder().setComponentUuid(project.uuid()).build(), session)) .hasSize(1) .extracting(PropertyDto::getUserUuid).containsOnly(anotherUser.getUuid()); assertThat(dbClient.propertiesDao().selectByQuery(PropertyQuery.builder().setComponentUuid(anotherProject.uuid()).build(), session)) - .extracting(PropertyDto::getUserUuid) - .hasSize(1).containsOnly(user.getUuid()); + .isEmpty(); } @Test - public void delete_by_organization_and_matching_login() { - OrganizationDto organization = db.organizations().insert(); - OrganizationDto anotherOrganization = db.organizations().insert(); - ComponentDto project = db.components().insertPrivateProject(organization); - ComponentDto anotherProject = db.components().insertPrivateProject(anotherOrganization); + public void delete_by_matching_login() { + ComponentDto project = db.components().insertPrivateProject(); + ComponentDto anotherProject = db.components().insertPrivateProject(); UserDto user = db.users().insertUser(); UserDto anotherUser = db.users().insertUser(); insertProperty("KEY_11", user.getLogin(), project.uuid(), null); @@ -1046,14 +1040,13 @@ public class PropertiesDaoTest { insertProperty("KEY_11", anotherUser.getLogin(), project.uuid(), null); insertProperty("KEY_11", user.getLogin(), anotherProject.uuid(), null); - underTest.deleteByOrganizationAndMatchingLogin(session, organization.getUuid(), user.getLogin(), newArrayList("KEY_11", "KEY_12")); + underTest.deleteByMatchingLogin(session, user.getLogin(), newArrayList("KEY_11", "KEY_12")); assertThat(dbClient.propertiesDao().selectByQuery(PropertyQuery.builder().setComponentUuid(project.uuid()).build(), session)) .hasSize(1) .extracting(PropertyDto::getValue).containsOnly(anotherUser.getLogin()); assertThat(dbClient.propertiesDao().selectByQuery(PropertyQuery.builder().setComponentUuid(anotherProject.uuid()).build(), session)) - .extracting(PropertyDto::getValue) - .hasSize(1).containsOnly(user.getLogin()); + .isEmpty(); } @Test diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/qualityprofile/QProfileEditUsersDaoTest.java b/server/sonar-db-dao/src/test/java/org/sonar/db/qualityprofile/QProfileEditUsersDaoTest.java index 03c0b365d94..87cdcceb62d 100644 --- a/server/sonar-db-dao/src/test/java/org/sonar/db/qualityprofile/QProfileEditUsersDaoTest.java +++ b/server/sonar-db-dao/src/test/java/org/sonar/db/qualityprofile/QProfileEditUsersDaoTest.java @@ -27,7 +27,6 @@ import org.sonar.api.impl.utils.TestSystem2; import org.sonar.api.utils.System2; import org.sonar.db.DbTester; import org.sonar.db.Pagination; -import org.sonar.db.organization.OrganizationDto; import org.sonar.db.user.UserDto; import static java.util.Arrays.asList; @@ -44,14 +43,14 @@ public class QProfileEditUsersDaoTest { private static final long NOW = 10_000_000_000L; - private System2 system2 = new TestSystem2().setNow(NOW); + private final System2 system2 = new TestSystem2().setNow(NOW); @Rule public ExpectedException expectedException = ExpectedException.none(); @Rule public DbTester db = DbTester.create(system2); - private QProfileEditUsersDao underTest = db.getDbClient().qProfileEditUsersDao(); + private final QProfileEditUsersDao underTest = db.getDbClient().qProfileEditUsersDao(); @Test public void exists() { @@ -69,14 +68,10 @@ public class QProfileEditUsersDaoTest { @Test public void countByQuery() { - OrganizationDto organization = db.getDefaultOrganization(); QProfileDto profile = db.qualityProfiles().insert(); UserDto user1 = db.users().insertUser(); UserDto user2 = db.users().insertUser(); UserDto user3 = db.users().insertUser(); - db.organizations().addMember(organization, user1); - db.organizations().addMember(organization, user2); - db.organizations().addMember(organization, user3); db.qualityProfiles().addUserPermission(profile, user1); db.qualityProfiles().addUserPermission(profile, user2); @@ -102,9 +97,6 @@ public class QProfileEditUsersDaoTest { UserDto user1 = db.users().insertUser(); UserDto user2 = db.users().insertUser(); UserDto user3 = db.users().insertUser(); - db.organizations().addMember(db.getDefaultOrganization(), user1); - db.organizations().addMember(db.getDefaultOrganization(), user2); - db.organizations().addMember(db.getDefaultOrganization(), user3); db.qualityProfiles().addUserPermission(profile, user1); db.qualityProfiles().addUserPermission(profile, user2); @@ -138,9 +130,6 @@ public class QProfileEditUsersDaoTest { UserDto user1 = db.users().insertUser(u -> u.setLogin("user1").setName("John Doe")); UserDto user2 = db.users().insertUser(u -> u.setLogin("user2").setName("John Smith")); UserDto user3 = db.users().insertUser(u -> u.setLogin("user3").setName("Jane Doe")); - db.organizations().addMember(db.getDefaultOrganization(), user1); - db.organizations().addMember(db.getDefaultOrganization(), user2); - db.organizations().addMember(db.getDefaultOrganization(), user3); db.qualityProfiles().addUserPermission(profile, user1); db.qualityProfiles().addUserPermission(profile, user2); db.qualityProfiles().addUserPermission(profile, user3); @@ -176,9 +165,6 @@ public class QProfileEditUsersDaoTest { UserDto user1 = db.users().insertUser(u -> u.setName("user1")); UserDto user2 = db.users().insertUser(u -> u.setName("user2")); UserDto user3 = db.users().insertUser(u -> u.setName("user3")); - db.organizations().addMember(db.getDefaultOrganization(), user1); - db.organizations().addMember(db.getDefaultOrganization(), user2); - db.organizations().addMember(db.getDefaultOrganization(), user3); db.qualityProfiles().addUserPermission(profile, user1); db.qualityProfiles().addUserPermission(profile, user2); diff --git a/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/organization/OrganizationDbTester.java b/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/organization/OrganizationDbTester.java index 61bfb7ce7f4..674545c8267 100644 --- a/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/organization/OrganizationDbTester.java +++ b/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/organization/OrganizationDbTester.java @@ -19,13 +19,11 @@ */ package org.sonar.db.organization; -import java.util.Arrays; import java.util.function.Consumer; import javax.annotation.Nullable; import org.sonar.db.DbSession; import org.sonar.db.DbTester; import org.sonar.db.permission.template.DefaultTemplates; -import org.sonar.db.user.UserDto; //TODO remove @Deprecated @@ -80,11 +78,4 @@ public class OrganizationDbTester { .setPortfoliosUuid(portfoliosDefaultTemplateUuid)); dbSession.commit(); } - - public void addMember(OrganizationDto organization, UserDto... users) { - Arrays.stream(users) - .forEach( - u -> db.getDbClient().organizationMemberDao().insert(db.getSession(), new OrganizationMemberDto().setOrganizationUuid(organization.getUuid()).setUserUuid(u.getUuid()))); - db.commit(); - } } |