diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2015-10-05 12:55:35 +0200 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@sonarsource.com> | 2015-10-05 15:39:00 +0200 |
commit | a3caa98f84849143fa78f9fc286079e871b3c9dd (patch) | |
tree | 4deec6bf15632e570e10b35e6df5cd7340025017 /sonar-db/src | |
parent | bce3d38e9c99e156a8251f95cb437f3d54ee9a80 (diff) | |
download | sonarqube-a3caa98f84849143fa78f9fc286079e871b3c9dd.tar.gz sonarqube-a3caa98f84849143fa78f9fc286079e871b3c9dd.zip |
SONAR-6397 Do not read SCM info from db on first analysis
Diffstat (limited to 'sonar-db/src')
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> |