return dbSession.getMapper(RuleRepositoryMapper.class).selectByLanguage(language);
}
- public void truncate(DbSession dbSession) {
- dbSession.getMapper(RuleRepositoryMapper.class).truncate();
- }
-
- public void insert(DbSession dbSession, Collection<RuleRepositoryDto> dtos) {
- RuleRepositoryMapper mapper = dbSession.getMapper(RuleRepositoryMapper.class);
- long now = system2.now();
- for (RuleRepositoryDto dto : dtos) {
- mapper.insert(dto, now);
- }
- }
-
public void insertOrUpdate(DbSession dbSession, Collection<RuleRepositoryDto> dtos) {
RuleRepositoryMapper mapper = dbSession.getMapper(RuleRepositoryMapper.class);
long now = system2.now();
@CheckForNull
RuleRepositoryDto selectByKey(@Param("key") String key);
- void truncate();
-
void insert(@Param("repository") RuleRepositoryDto repository, @Param("now") long now);
int update(@Param("repository") RuleRepositoryDto repository);
order by kee
</select>
- <update id="truncate">
- delete from rule_repositories
- </update>
-
<insert id="insert" parameterType="map" useGeneratedKeys="false">
insert into rule_repositories (kee, language, name, created_at)
values (
underTest.deleteIfKeyNotIn(dbTester.getSession(), keys);
}
- @Test
- public void test_insert_and_selectAll() {
- DbSession dbSession = dbTester.getSession();
- RuleRepositoryDto dto = new RuleRepositoryDto("findbugs", "java", "Findbugs");
- underTest.insert(dbSession, asList(dto));
-
- List<RuleRepositoryDto> rows = underTest.selectAll(dbSession);
- assertThat(rows).hasSize(1);
- RuleRepositoryDto row = rows.get(0);
- assertThat(row.getKey()).isEqualTo("findbugs");
- assertThat(row.getName()).isEqualTo("Findbugs");
- assertThat(row.getLanguage()).isEqualTo("java");
- }
-
- @Test
- public void insert_multiple_rows() {
- DbSession dbSession = dbTester.getSession();
- RuleRepositoryDto dto1 = new RuleRepositoryDto("findbugs", "java", "Findbugs");
- RuleRepositoryDto dto2 = new RuleRepositoryDto("squid", "java", "Java");
- RuleRepositoryDto dto3 = new RuleRepositoryDto("cobol-lint", "cobol", "Cobol Lint");
- underTest.insert(dbSession, asList(dto1, dto2, dto3));
-
- assertThat(underTest.selectAll(dbSession)).extracting(RuleRepositoryDto::getKey)
- // ordered by key
- .containsExactly("cobol-lint", "findbugs", "squid");
- }
-
@Test
public void selectByLanguage() {
DbSession dbSession = dbTester.getSession();
RuleRepositoryDto dto1 = new RuleRepositoryDto("findbugs", "java", "Findbugs");
RuleRepositoryDto dto2 = new RuleRepositoryDto("squid", "java", "Java");
RuleRepositoryDto dto3 = new RuleRepositoryDto("cobol-lint", "cobol", "Cobol Lint");
- underTest.insert(dbSession, asList(dto1, dto2, dto3));
+ underTest.insertOrUpdate(dbSession, asList(dto1, dto2, dto3));
assertThat(underTest.selectByLanguage(dbSession, "java")).extracting(RuleRepositoryDto::getKey)
// ordered by key
public void selectByLanguage_returns_empty_list_if_no_results() {
DbSession dbSession = dbTester.getSession();
RuleRepositoryDto dto1 = new RuleRepositoryDto("findbugs", "java", "Findbugs");
- underTest.insert(dbSession, asList(dto1));
+ underTest.insertOrUpdate(dbSession, asList(dto1));
assertThat(underTest.selectByLanguage(dbSession, "missing")).hasSize(0);
}
- @Test
- public void truncate() {
- DbSession dbSession = dbTester.getSession();
- RuleRepositoryDto dto1 = new RuleRepositoryDto("findbugs", "java", "Findbugs");
- RuleRepositoryDto dto2 = new RuleRepositoryDto("squid", "java", "Java");
- underTest.insert(dbSession, asList(dto1, dto2));
-
- underTest.truncate(dbSession);
-
- assertThat(underTest.selectAll(dbSession)).isEmpty();
- }
-
-
private long selectCreatedAtByKey(DbSession dbSession, String key) {
return (long) dbTester.selectFirst(dbSession, "select created_at as \"created_at\" from rule_repositories where kee='" + key + "'")
.get("created_at");
}
private void persistRepositories(DbSession dbSession, List<RulesDefinition.Repository> repositories) {
- dbClient.ruleRepositoryDao().truncate(dbSession);
List<RuleRepositoryDto> dtos = repositories
.stream()
.map(r -> new RuleRepositoryDto(r.key(), r.language(), r.name()))
.collect(toList(repositories.size()));
- dbClient.ruleRepositoryDao().insert(dbSession, dtos);
+ List<String> keys = dtos.stream().map(RuleRepositoryDto::getKey).collect(toList(repositories.size()));
+ dbClient.ruleRepositoryDao().insertOrUpdate(dbSession, dtos);
+ dbClient.ruleRepositoryDao().deleteIfKeyNotIn(dbSession, keys);
dbSession.commit();
}
import org.sonar.db.qualityprofile.QualityProfileTesting;
import org.sonar.db.rule.RuleDefinitionDto;
import org.sonar.db.rule.RuleDto;
+import org.sonar.db.rule.RuleDto.Scope;
import org.sonar.db.rule.RuleParamDto;
import org.sonar.db.rule.RuleRepositoryDto;
-import org.sonar.db.rule.RuleDto.Scope;
import org.sonar.server.language.LanguageTesting;
import org.sonar.server.qualityprofile.QProfileComparison;
import org.sonar.server.qualityprofile.QProfileName;
import org.sonar.server.ws.TestRequest;
import org.sonar.server.ws.WsActionTester;
-import static java.util.Arrays.asList;
+import static java.util.Collections.singletonList;
public class CompareActionTest {
private void createRepository(String repositoryKey, String repositoryLanguage, String repositoryName) {
RuleRepositoryDto dto = new RuleRepositoryDto(repositoryKey, repositoryLanguage, repositoryName);
- db.ruleRepositoryDao().insert(session, asList(dto));
+ db.ruleRepositoryDao().insertOrUpdate(session, singletonList(dto));
session.commit();
}
}
public void delete_repositories_that_have_been_uninstalled() {
RuleRepositoryDto repository = new RuleRepositoryDto("findbugs", "java", "Findbugs");
DbSession dbSession = dbTester.getSession();
- dbTester.getDbClient().ruleRepositoryDao().insert(dbSession, singletonList(repository));
+ dbTester.getDbClient().ruleRepositoryDao().insertOrUpdate(dbSession, singletonList(repository));
dbSession.commit();
execute(new FakeRepositoryV1());
private void insertRules() {
RuleRepositoryDto repo1 = new RuleRepositoryDto("xoo", "xoo", "SonarQube");
RuleRepositoryDto repo2 = new RuleRepositoryDto("squid", "ws", "SonarQube");
- db.getDbClient().ruleRepositoryDao().insert(db.getSession(), asList(repo1, repo2));
+ db.getDbClient().ruleRepositoryDao().insertOrUpdate(db.getSession(), asList(repo1, repo2));
db.getSession().commit();
}
RuleRepositoryDto repo1 = new RuleRepositoryDto("xoo", "xoo", "SonarQube");
RuleRepositoryDto repo2 = new RuleRepositoryDto("squid", "ws", "SonarQube");
RuleRepositoryDto repo3 = new RuleRepositoryDto("common-ws", "ws", "SonarQube Common");
- dbTester.getDbClient().ruleRepositoryDao().insert(dbSession, asList(repo1, repo2, repo3));
+ dbTester.getDbClient().ruleRepositoryDao().insertOrUpdate(dbSession, asList(repo1, repo2, repo3));
dbSession.commit();
wsTester = new WsTester(new RulesWs(new RepositoriesAction(dbTester.getDbClient())));