aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-db/src
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2015-10-05 12:55:35 +0200
committerJulien Lancelot <julien.lancelot@sonarsource.com>2015-10-05 15:39:00 +0200
commita3caa98f84849143fa78f9fc286079e871b3c9dd (patch)
tree4deec6bf15632e570e10b35e6df5cd7340025017 /sonar-db/src
parentbce3d38e9c99e156a8251f95cb437f3d54ee9a80 (diff)
downloadsonarqube-a3caa98f84849143fa78f9fc286079e871b3c9dd.tar.gz
sonarqube-a3caa98f84849143fa78f9fc286079e871b3c9dd.zip
SONAR-6397 Do not read SCM info from db on first analysis
Diffstat (limited to 'sonar-db/src')
-rw-r--r--sonar-db/src/main/java/org/sonar/db/component/SnapshotDao.java4
-rw-r--r--sonar-db/src/main/java/org/sonar/db/component/SnapshotMapper.java2
-rw-r--r--sonar-db/src/main/resources/org/sonar/db/component/SnapshotMapper.xml9
-rw-r--r--sonar-db/src/test/java/org/sonar/db/component/SnapshotDaoTest.java9
-rw-r--r--sonar-db/src/test/resources/org/sonar/db/component/SnapshotDaoTest/has_last_snapshot_by_component_uuid.xml48
5 files changed, 72 insertions, 0 deletions
diff --git a/sonar-db/src/main/java/org/sonar/db/component/SnapshotDao.java b/sonar-db/src/main/java/org/sonar/db/component/SnapshotDao.java
index 46306bf9a04..55d3fbbb630 100644
--- a/sonar-db/src/main/java/org/sonar/db/component/SnapshotDao.java
+++ b/sonar-db/src/main/java/org/sonar/db/component/SnapshotDao.java
@@ -53,6 +53,10 @@ public class SnapshotDao implements Dao {
return mapper(session).selectLastSnapshot(componentId);
}
+ public boolean hasLastSnapshotByComponentUuid(DbSession session, String componentUUid) {
+ return mapper(session).countLastSnapshotByComponentUuid(componentUUid) > 0;
+ }
+
public List<SnapshotDto> selectSnapshotsByComponentId(DbSession session, long componentId) {
return mapper(session).selectSnapshotsByQuery(new SnapshotQuery().setComponentId(componentId));
}
diff --git a/sonar-db/src/main/java/org/sonar/db/component/SnapshotMapper.java b/sonar-db/src/main/java/org/sonar/db/component/SnapshotMapper.java
index 49fe34a0ee0..a77633f7d1a 100644
--- a/sonar-db/src/main/java/org/sonar/db/component/SnapshotMapper.java
+++ b/sonar-db/src/main/java/org/sonar/db/component/SnapshotMapper.java
@@ -34,6 +34,8 @@ public interface SnapshotMapper {
@CheckForNull
SnapshotDto selectLastSnapshot(Long resourceId);
+ int countLastSnapshotByComponentUuid(String componentUuid);
+
List<SnapshotDto> selectSnapshotsByQuery(@Param("query") SnapshotQuery query);
List<SnapshotDto> selectPreviousVersionSnapshots(@Param(value = "componentId") Long componentId, @Param(value = "lastVersion") String lastVersion);
diff --git a/sonar-db/src/main/resources/org/sonar/db/component/SnapshotMapper.xml b/sonar-db/src/main/resources/org/sonar/db/component/SnapshotMapper.xml
index 6892b27e3b6..01b89c7e1aa 100644
--- a/sonar-db/src/main/resources/org/sonar/db/component/SnapshotMapper.xml
+++ b/sonar-db/src/main/resources/org/sonar/db/component/SnapshotMapper.xml
@@ -56,6 +56,15 @@
where s.islast=${_true} and s.project_id = #{resource}
</select>
+ <select id="countLastSnapshotByComponentUuid" resultType="Integer">
+ SELECT count(s.id)
+ FROM snapshots s
+ INNER JOIN projects p ON p.id=s.project_id AND p.uuid=#{componentUuid}
+ <where>
+ AND s.islast=${_true}
+ </where>
+ </select>
+
<select id="selectSnapshotsByQuery" parameterType="map" resultType="Snapshot">
SELECT
<include refid="snapshotColumns"/>
diff --git a/sonar-db/src/test/java/org/sonar/db/component/SnapshotDaoTest.java b/sonar-db/src/test/java/org/sonar/db/component/SnapshotDaoTest.java
index 4377a7d45ca..9768a52e1c6 100644
--- a/sonar-db/src/test/java/org/sonar/db/component/SnapshotDaoTest.java
+++ b/sonar-db/src/test/java/org/sonar/db/component/SnapshotDaoTest.java
@@ -261,6 +261,15 @@ public class SnapshotDaoTest {
assertThat(isLast).isFalse();
}
+ @Test
+ public void has_last_snapshot_by_component_uuid() throws Exception {
+ db.prepareDbUnit(getClass(), "has_last_snapshot_by_component_uuid.xml");
+
+ assertThat(underTest.hasLastSnapshotByComponentUuid(db.getSession(), "ABCD")).isTrue();
+ assertThat(underTest.hasLastSnapshotByComponentUuid(db.getSession(), "EFGH")).isFalse();
+ assertThat(underTest.hasLastSnapshotByComponentUuid(db.getSession(), "FGHI")).isFalse();
+ }
+
private static SnapshotDto defaultSnapshot() {
return new SnapshotDto()
.setComponentId(3L)
diff --git a/sonar-db/src/test/resources/org/sonar/db/component/SnapshotDaoTest/has_last_snapshot_by_component_uuid.xml b/sonar-db/src/test/resources/org/sonar/db/component/SnapshotDaoTest/has_last_snapshot_by_component_uuid.xml
new file mode 100644
index 00000000000..16f7fe75471
--- /dev/null
+++ b/sonar-db/src/test/resources/org/sonar/db/component/SnapshotDaoTest/has_last_snapshot_by_component_uuid.xml
@@ -0,0 +1,48 @@
+<dataset>
+
+ <!-- Has last snapshot -->
+ <projects id="1" root_id="[null]" scope="PRJ" qualifier="TRK" kee="org.struts:struts" name="Struts"
+ uuid="ABCD" project_uuid="ABCD" module_uuid="[null]" module_uuid_path="."
+ description="the description" long_name="Apache Struts"
+ enabled="[true]" language="[null]" copy_resource_id="[null]" person_id="[null]" path="[null]" authorization_updated_at="[null]" />
+ <snapshots id="1" project_id="1" parent_snapshot_id="[null]" root_project_id="1" root_snapshot_id="[null]"
+ status="P" islast="[true]" purge_status="[null]"
+ period1_mode="[null]" period1_param="[null]" period1_date="[null]"
+ period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+ period3_mode="[null]" period3_param="[null]" period3_date="[null]"
+ period4_mode="[null]" period4_param="[null]" period4_date="[null]"
+ period5_mode="[null]" period5_param="[null]" period5_date="[null]"
+ depth="[null]" scope="PRJ" qualifier="TRK" created_at="1228222680000" build_date="1228222680000"
+ version="[null]" path=""/>
+ <snapshots id="10" project_id="1" parent_snapshot_id="[null]" root_project_id="1" root_snapshot_id="[null]"
+ status="P" islast="[false]" purge_status="[null]"
+ period1_mode="[null]" period1_param="[null]" period1_date="[null]"
+ period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+ period3_mode="[null]" period3_param="[null]" period3_date="[null]"
+ period4_mode="[null]" period4_param="[null]" period4_date="[null]"
+ period5_mode="[null]" period5_param="[null]" period5_date="[null]"
+ depth="[null]" scope="PRJ" qualifier="TRK" created_at="1228136280000" build_date="1228136280000"
+ version="[null]" path=""/>
+
+ <!-- No snapshot -->
+ <projects id="2" root_id="1" kee="org.struts:struts-core" name="Struts Core"
+ uuid="EFGH" project_uuid="ABCD" module_uuid="[null]" module_uuid_path=".ABCD."
+ scope="PRJ" qualifier="BRC" long_name="Struts Core"
+ description="[null]" enabled="[true]" language="[null]" copy_resource_id="[null]" person_id="[null]" authorization_updated_at="[null]" />
+
+ <!-- No last snapshot -->
+ <projects id="3" root_id="1" kee="org.struts:struts-data" name="Struts Data"
+ uuid="FGHI" project_uuid="ABCD" module_uuid="EFGH" module_uuid_path=".ABCD.EFGH."
+ scope="PRJ" qualifier="BRC" long_name="Struts Data"
+ description="[null]" enabled="[true]" language="[null]" copy_resource_id="[null]" person_id="[null]" authorization_updated_at="[null]" />
+ <snapshots id="3" project_id="3" parent_snapshot_id="2" root_project_id="1" root_snapshot_id="1"
+ status="P" islast="[false]" purge_status="[null]"
+ period1_mode="[null]" period1_param="[null]" period1_date="[null]"
+ period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+ period3_mode="[null]" period3_param="[null]" period3_date="[null]"
+ period4_mode="[null]" period4_param="[null]" period4_date="[null]"
+ period5_mode="[null]" period5_param="[null]" period5_date="[null]"
+ depth="[null]" scope="PRJ" qualifier="BRC" created_at="1228222680000" build_date="1228222680000"
+ version="[null]" path="1.2."/>
+
+</dataset>