diff options
author | Eric Hartmann <hartmann.eric@gmail.com> | 2018-07-18 12:44:28 +0200 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2018-07-24 09:31:49 +0200 |
commit | 3826a9205932325b420b0da43e23d52d531d5dc4 (patch) | |
tree | b1550feb508d6a7d3ca29b784ec68000b0c7312d /server/sonar-db-dao | |
parent | 84a883d19f373f06423f638dc7ca9beff589036e (diff) | |
download | sonarqube-3826a9205932325b420b0da43e23d52d531d5dc4.tar.gz sonarqube-3826a9205932325b420b0da43e23d52d531d5dc4.zip |
SONARCLOUD-103 Introduce organizationUuid in loc calculation
Diffstat (limited to 'server/sonar-db-dao')
5 files changed, 46 insertions, 24 deletions
diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureDao.java index dc07aa60d50..4f76a3cf800 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureDao.java @@ -87,12 +87,13 @@ public class LiveMeasureDao implements Dao { * If Main Branch = 100 LOCs and the "largest long-lived branch" is 120 LOCs, I'm expecting to consider the value 120. * If Main Branch = 100 LOCs and the "largest long-lived branch" is 80 LOCs, I'm expecting to consider the value 100. */ - public long sumNclocOfBiggestLongLivingBranch(DbSession dbSession) { - return sumNclocOfBiggestLongLivingBranch(dbSession, SumNclocDbQuery.builder().build()); + public long sumNclocOfBiggestLongLivingBranch(DbSession dbSession, String organizationUuid) { + return sumNclocOfBiggestLongLivingBranch(dbSession, SumNclocDbQuery.builder().setOrganizationUuid(organizationUuid).build()); } public long sumNclocOfBiggestLongLivingBranch(DbSession dbSession, SumNclocDbQuery dbQuery) { - Long ncloc = mapper(dbSession).sumNclocOfBiggestLongLivingBranch(NCLOC_KEY, KeyType.BRANCH, BranchType.LONG, dbQuery.getProjectUuidToExclude()); + Long ncloc = mapper(dbSession).sumNclocOfBiggestLongLivingBranch( + NCLOC_KEY, KeyType.BRANCH, BranchType.LONG, dbQuery.getOrganizationUuid(), dbQuery.getProjectUuidToExclude()); return ncloc == null ? 0L : ncloc; } diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureMapper.java b/server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureMapper.java index ed3977d684b..a8901407637 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureMapper.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureMapper.java @@ -47,6 +47,7 @@ public interface LiveMeasureMapper { @Param("ncloc") String nclocKey, @Param("branch") KeyType branchOrPullRequest, @Param("branchType") BranchType branchType, + @Param("organizationUuid") String organizationUuid, @Nullable @Param("projectUuidToExclude") String projectUuidToExclude); void insert( diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/measure/SumNclocDbQuery.java b/server/sonar-db-dao/src/main/java/org/sonar/db/measure/SumNclocDbQuery.java index b9e3a502632..437ce88cee4 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/measure/SumNclocDbQuery.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/measure/SumNclocDbQuery.java @@ -22,12 +22,16 @@ package org.sonar.db.measure; import javax.annotation.CheckForNull; import javax.annotation.Nullable; +import static com.google.common.base.Preconditions.checkNotNull; + public class SumNclocDbQuery { private final String projectUuidToExclude; + private final String organizationUuid; public SumNclocDbQuery(Builder builder) { projectUuidToExclude = builder.projectUuidToExclude; + organizationUuid = builder.organizationUuid; } @CheckForNull @@ -35,12 +39,17 @@ public class SumNclocDbQuery { return projectUuidToExclude; } + public String getOrganizationUuid() { + return organizationUuid; + } + public static Builder builder() { return new Builder(); } public static class Builder { private String projectUuidToExclude; + private String organizationUuid; private Builder() { // to enforce use of builder() @@ -51,7 +60,13 @@ public class SumNclocDbQuery { return this; } + public Builder setOrganizationUuid(String organizationUuid) { + this.organizationUuid = organizationUuid; + return this; + } + public SumNclocDbQuery build() { + checkNotNull(organizationUuid); return new SumNclocDbQuery(this); } } diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/measure/LiveMeasureMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/measure/LiveMeasureMapper.xml index 999aa79aec9..fc89e3ac806 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/measure/LiveMeasureMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/measure/LiveMeasureMapper.xml @@ -36,24 +36,25 @@ <select id="sumNclocOfBiggestLongLivingBranch" parameterType="map" resultType="long"> select sum(sumncloc.maxncloc) from ( - select b.project_uuid as projectUuid, max(lm.value) as maxncloc - from live_measures lm - inner join metrics m on m.id = lm.metric_id - inner join projects p on p.uuid = lm.component_uuid - inner join project_branches b on b.uuid = p.uuid - <where> - m.name = #{ncloc, jdbcType=VARCHAR} - and p.enabled = ${_true} - and p.scope = 'PRJ' - and p.qualifier = 'TRK' - and p.copy_component_uuid is null - and b.branch_type = #{branchType, jdbcType=VARCHAR} - and b.key_type = #{branch, jdbcType=VARCHAR} - <if test="projectUuidToExclude != null"> - and b.project_uuid <> #{projectUuidToExclude,jdbcType=VARCHAR} - </if> - </where> - group by b.project_uuid + select b.project_uuid as projectUuid, max(lm.value) as maxncloc + from live_measures lm + inner join metrics m on m.id = lm.metric_id + inner join projects p on p.uuid = lm.component_uuid + inner join project_branches b on b.uuid = p.uuid + <where> + m.name = #{ncloc, jdbcType=VARCHAR} + and p.enabled = ${_true} + and p.scope = 'PRJ' + and p.qualifier = 'TRK' + and p.copy_component_uuid is null + and p.organization_uuid = #{organizationUuid, jdbcType=VARCHAR} + and b.branch_type = #{branchType, jdbcType=VARCHAR} + and b.key_type = #{branch, jdbcType=VARCHAR} + <if test="projectUuidToExclude != null"> + and b.project_uuid <> #{projectUuidToExclude,jdbcType=VARCHAR} + </if> + </where> + group by b.project_uuid ) sumncloc </select> diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/measure/LiveMeasureDaoTest.java b/server/sonar-db-dao/src/test/java/org/sonar/db/measure/LiveMeasureDaoTest.java index 51d83d6d795..5100e6791be 100644 --- a/server/sonar-db-dao/src/test/java/org/sonar/db/measure/LiveMeasureDaoTest.java +++ b/server/sonar-db-dao/src/test/java/org/sonar/db/measure/LiveMeasureDaoTest.java @@ -219,7 +219,7 @@ public class LiveMeasureDaoTest { db.measures().insertLiveMeasure(projectWithLinesButNoLoc, lines, m -> m.setValue(365d)); db.measures().insertLiveMeasure(projectWithLinesButNoLoc, ncloc, m -> m.setValue(0d)); - long result = underTest.sumNclocOfBiggestLongLivingBranch(db.getSession()); + long result = underTest.sumNclocOfBiggestLongLivingBranch(db.getSession(), organization.getUuid()); assertThat(result).isEqualTo(10L + 200L); } @@ -229,7 +229,7 @@ public class LiveMeasureDaoTest { db.measures().insertMetric(m -> m.setKey("ncloc").setValueType(INT.toString())); db.measures().insertMetric(m -> m.setKey("lines").setValueType(INT.toString())); - long result = underTest.sumNclocOfBiggestLongLivingBranch(db.getSession()); + long result = underTest.sumNclocOfBiggestLongLivingBranch(db.getSession(), db.getDefaultOrganization().getUuid()); assertThat(result).isEqualTo(0L); } @@ -252,7 +252,11 @@ public class LiveMeasureDaoTest { db.measures().insertLiveMeasure(projectToExclude, ncloc, m -> m.setValue(300d)); db.measures().insertLiveMeasure(projectToExcludeBranch, ncloc, m -> m.setValue(400d)); - long result = underTest.sumNclocOfBiggestLongLivingBranch(db.getSession(), SumNclocDbQuery.builder().setProjectUuidToExclude(projectToExclude.uuid()).build()); + SumNclocDbQuery query = SumNclocDbQuery.builder() + .setOrganizationUuid(organization.getUuid()) + .setProjectUuidToExclude(projectToExclude.uuid()) + .build(); + long result = underTest.sumNclocOfBiggestLongLivingBranch(db.getSession(), query); assertThat(result).isEqualTo(10L + 200L); } |