diff options
author | Duarte Meneses <duarte.meneses@sonarsource.com> | 2017-07-26 15:48:28 +0200 |
---|---|---|
committer | Julien HENRY <julien.henry@sonarsource.com> | 2017-08-07 11:44:06 +0200 |
commit | 2c0140f74f4a2371d12160b429955734d66ea837 (patch) | |
tree | 2457653c0d2950d2e1c6909d386e1a5c4756ec59 /server/sonar-db-dao | |
parent | 4039997a677f07b724960d505a54b2b4970affb7 (diff) | |
download | sonarqube-2c0140f74f4a2371d12160b429955734d66ea837.tar.gz sonarqube-2c0140f74f4a2371d12160b429955734d66ea837.zip |
SONAR-9621 Read cpd text blocks from DB in incremental mode
Diffstat (limited to 'server/sonar-db-dao')
5 files changed, 75 insertions, 1 deletions
diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/duplication/DuplicationDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/duplication/DuplicationDao.java index 8883f303e03..dc4f8e1133a 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/duplication/DuplicationDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/duplication/DuplicationDao.java @@ -45,5 +45,12 @@ public class DuplicationDao implements Dao { public void insert(DbSession session, DuplicationUnitDto dto) { session.getMapper(DuplicationMapper.class).batchInsert(dto); } + + /** + * @param componentUUid uuid of the component + */ + public List<DuplicationUnitDto> selectComponent(DbSession session, String componentUuid, String analysisUuid) { + return session.getMapper(DuplicationMapper.class).selectComponent(componentUuid, analysisUuid); + } } diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/duplication/DuplicationMapper.java b/server/sonar-db-dao/src/main/java/org/sonar/db/duplication/DuplicationMapper.java index 8edec655644..109caebb30a 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/duplication/DuplicationMapper.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/duplication/DuplicationMapper.java @@ -33,4 +33,5 @@ public interface DuplicationMapper { void batchInsert(DuplicationUnitDto unit); + List<DuplicationUnitDto> selectComponent(@Param("componentUuid") String componentUuid, @Param("analysisUuid") String analysisUuid); } diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/duplication/DuplicationMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/duplication/DuplicationMapper.xml index 21135fa3248..d24950c4c99 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/duplication/DuplicationMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/duplication/DuplicationMapper.xml @@ -25,6 +25,21 @@ </if> </where> </select> + + <select id="selectComponent" parameterType="map" resultType="DuplicationUnit"> + SELECT DISTINCT + dup.id as id, + dup.analysis_uuid as analysisUuid, + dup.component_uuid as componentUuid, + dup.hash as hash, + dup.index_in_file as indexInFile, + dup.start_line as startLine, + dup.end_line as endLine + FROM duplications_index dup + WHERE + dup.component_uuid = #{componentUuid,jdbcType=VARCHAR} AND + dup.analysis_uuid = #{analysisUuid,jdbcType=VARCHAR} + </select> <insert id="batchInsert" parameterType="DuplicationUnit" useGeneratedKeys="false"> INSERT INTO duplications_index ( diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/duplication/DuplicationDaoTest.java b/server/sonar-db-dao/src/test/java/org/sonar/db/duplication/DuplicationDaoTest.java index 9c027764c2f..0c685ed1f97 100644 --- a/server/sonar-db-dao/src/test/java/org/sonar/db/duplication/DuplicationDaoTest.java +++ b/server/sonar-db-dao/src/test/java/org/sonar/db/duplication/DuplicationDaoTest.java @@ -29,7 +29,6 @@ import org.sonar.db.DbTester; import static java.util.Collections.singletonList; import static org.assertj.core.api.Assertions.assertThat; - public class DuplicationDaoTest { @Rule @@ -61,6 +60,25 @@ public class DuplicationDaoTest { } @Test + public void select_component() { + db.prepareDbUnit(getClass(), "select_component.xml"); + dbSession.commit(); + + List<DuplicationUnitDto> blocks = dao.selectComponent(dbSession, "uuid_3", "u5"); + assertThat(blocks).hasSize(1); + + DuplicationUnitDto block = blocks.get(0); + assertThat(block.getComponentKey()).isNull(); + assertThat(block.getComponentUuid()).isEqualTo("uuid_3"); + assertThat(block.getHash()).isEqualTo("bb"); + assertThat(block.getAnalysisUuid()).isEqualTo("u5"); + assertThat(block.getIndexInFile()).isEqualTo(0); + assertThat(block.getStartLine()).isEqualTo(0); + assertThat(block.getEndLine()).isEqualTo(0); + + } + + @Test public void insert() { db.prepareDbUnit(getClass(), "insert.xml"); dbSession.commit(); diff --git a/server/sonar-db-dao/src/test/resources/org/sonar/db/duplication/DuplicationDaoTest/select_component.xml b/server/sonar-db-dao/src/test/resources/org/sonar/db/duplication/DuplicationDaoTest/select_component.xml new file mode 100644 index 00000000000..b31be796646 --- /dev/null +++ b/server/sonar-db-dao/src/test/resources/org/sonar/db/duplication/DuplicationDaoTest/select_component.xml @@ -0,0 +1,33 @@ +<dataset> + <duplications_index id="1" + analysis_uuid="u1" + component_uuid="uuid_1" + hash="bb" + index_in_file="0" + start_line="0" + end_line="0"/> + + <duplications_index id="2" + analysis_uuid="u3" + component_uuid="uuid_2" + hash="aa" + index_in_file="0" + start_line="1" + end_line="2"/> + + <duplications_index id="3" + analysis_uuid="u5" + component_uuid="uuid_3" + hash="bb" + index_in_file="0" + start_line="0" + end_line="0"/> + + <duplications_index id="4" + analysis_uuid="u5" + component_uuid="uuid_4" + hash="aa" + index_in_file="0" + start_line="0" + end_line="0"/> +</dataset> |