aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-db-dao
diff options
context:
space:
mode:
authorDuarte Meneses <duarte.meneses@sonarsource.com>2017-07-26 15:48:28 +0200
committerJulien HENRY <julien.henry@sonarsource.com>2017-08-07 11:44:06 +0200
commit2c0140f74f4a2371d12160b429955734d66ea837 (patch)
tree2457653c0d2950d2e1c6909d386e1a5c4756ec59 /server/sonar-db-dao
parent4039997a677f07b724960d505a54b2b4970affb7 (diff)
downloadsonarqube-2c0140f74f4a2371d12160b429955734d66ea837.tar.gz
sonarqube-2c0140f74f4a2371d12160b429955734d66ea837.zip
SONAR-9621 Read cpd text blocks from DB in incremental mode
Diffstat (limited to 'server/sonar-db-dao')
-rw-r--r--server/sonar-db-dao/src/main/java/org/sonar/db/duplication/DuplicationDao.java7
-rw-r--r--server/sonar-db-dao/src/main/java/org/sonar/db/duplication/DuplicationMapper.java1
-rw-r--r--server/sonar-db-dao/src/main/resources/org/sonar/db/duplication/DuplicationMapper.xml15
-rw-r--r--server/sonar-db-dao/src/test/java/org/sonar/db/duplication/DuplicationDaoTest.java20
-rw-r--r--server/sonar-db-dao/src/test/resources/org/sonar/db/duplication/DuplicationDaoTest/select_component.xml33
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>