]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-11631 add SnapshotDto.projectVersion
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Wed, 16 Jan 2019 09:01:58 +0000 (10:01 +0100)
committersonartech <sonartech@sonarsource.com>
Mon, 11 Feb 2019 08:11:47 +0000 (09:11 +0100)
server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/PersistAnalysisStep.java
server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/ReportPersistAnalysisStepTest.java
server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/ViewsPersistAnalysisStepTest.java
server/sonar-db-dao/src/main/java/org/sonar/db/component/SnapshotDto.java
server/sonar-db-dao/src/main/resources/org/sonar/db/component/SnapshotMapper.xml
server/sonar-db-dao/src/test/java/org/sonar/db/component/SnapshotDaoTest.java
server/sonar-db-dao/src/test/resources/org/sonar/db/component/SnapshotDaoTest/select_snapshots_by_query.xml

index fe7e648cb81314e18411104fb52a21fda6675549..8b7ae5010908ff5ac1df0646a967cd1eeca0d38e 100644 (file)
@@ -100,9 +100,11 @@ public class PersistAnalysisStep implements ComputationStep {
 
     private SnapshotDto createAnalysis(String snapshotUuid, Component component) {
       String componentUuid = component.getUuid();
+      String version = component.getType() == Component.Type.PROJECT ? component.getProjectAttributes().getVersion() : null;
       return new SnapshotDto()
         .setUuid(snapshotUuid)
-        .setCodePeriodVersion(component.getType() == Component.Type.PROJECT ? component.getProjectAttributes().getVersion() : null)
+        .setCodePeriodVersion(version)
+        .setProjectVersion(version)
         .setComponentUuid(componentUuid)
         .setLast(false)
         .setStatus(SnapshotDto.STATUS_UNPROCESSED)
index 8da7c06eb3b6e83d0cb54bd41f1f101a48e15480..6abffaf5db1cc1791ebfb3634b9c68c8d9d2083f 100644 (file)
@@ -122,6 +122,7 @@ public class ReportPersistAnalysisStepTest extends BaseStepTest {
     assertThat(projectSnapshot.getUuid()).isEqualTo(ANALYSIS_UUID);
     assertThat(projectSnapshot.getComponentUuid()).isEqualTo(project.getUuid());
     assertThat(projectSnapshot.getCodePeriodVersion()).isEqualTo("1.0");
+    assertThat(projectSnapshot.getProjectVersion()).isEqualTo("1.0");
     assertThat(projectSnapshot.getLast()).isFalse();
     assertThat(projectSnapshot.getStatus()).isEqualTo("U");
     assertThat(projectSnapshot.getCreatedAt()).isEqualTo(analysisDate);
index be13f629469837eb9cfbf4f9c5faeed04bf28f39..603fe2a6a037c2f2d6863022db49c38c0cf12241 100644 (file)
@@ -112,6 +112,7 @@ public class ViewsPersistAnalysisStepTest extends BaseStepTest {
     assertThat(viewSnapshot.getUuid()).isEqualTo(ANALYSIS_UUID);
     assertThat(viewSnapshot.getComponentUuid()).isEqualTo(view.getUuid());
     assertThat(viewSnapshot.getCodePeriodVersion()).isNull();
+    assertThat(viewSnapshot.getProjectVersion()).isNull();
     assertThat(viewSnapshot.getLast()).isFalse();
     assertThat(viewSnapshot.getStatus()).isEqualTo("U");
     assertThat(viewSnapshot.getCreatedAt()).isEqualTo(analysisDate);
index 9f4291d9e67f57d955acdefed6cbf1bbd5b7416f..a024529384d64882eda0204ce6af6af4b0ab4334 100644 (file)
@@ -43,6 +43,7 @@ public final class SnapshotDto {
   private Integer purgeStatus;
   private Boolean last;
   private String codePeriodVersion;
+  private String projectVersion;
   private String periodMode;
   private String periodParam;
   private Long periodDate;
@@ -120,14 +121,18 @@ public final class SnapshotDto {
   }
 
   public SnapshotDto setCodePeriodVersion(@Nullable String codePeriodVersion) {
-    if (codePeriodVersion != null) {
-      checkArgument(codePeriodVersion.length() <= MAX_VERSION_LENGTH,
-        "codePeriodVersion length (%s) is longer than the maximum authorized (%s). '%s' was provided.", codePeriodVersion.length(), MAX_VERSION_LENGTH, codePeriodVersion);
-    }
+    checkVersion(codePeriodVersion, "codePeriodVersion");
     this.codePeriodVersion = codePeriodVersion;
     return this;
   }
 
+  private static void checkVersion(@Nullable String version, String versionLabel) {
+    if (version != null) {
+      checkArgument(version.length() <= MAX_VERSION_LENGTH,
+        "%s length (%s) is longer than the maximum authorized (%s). '%s' was provided.", versionLabel, version.length(), MAX_VERSION_LENGTH, version);
+    }
+  }
+
   /**
    * Used by MyBatis
    */
@@ -135,6 +140,24 @@ public final class SnapshotDto {
     this.codePeriodVersion = codePeriodVersion;
   }
 
+  public SnapshotDto setProjectVersion(@Nullable String projectVersion) {
+    checkVersion(projectVersion, "projectVersion");
+    this.projectVersion = projectVersion;
+    return this;
+  }
+
+  @CheckForNull
+  public String getProjectVersion() {
+    return projectVersion;
+  }
+
+  /**
+   * Used by MyBatis
+   */
+  private void setRawProjectVersion(@Nullable String projectVersion) {
+    this.projectVersion = projectVersion;
+  }
+
   public SnapshotDto setPeriodMode(@Nullable String p) {
     periodMode = p;
     return this;
@@ -195,6 +218,7 @@ public final class SnapshotDto {
       Objects.equals(purgeStatus, that.purgeStatus) &&
       Objects.equals(last, that.last) &&
       Objects.equals(codePeriodVersion, that.codePeriodVersion) &&
+      Objects.equals(projectVersion, that.projectVersion) &&
       Objects.equals(periodMode, that.periodMode) &&
       Objects.equals(periodParam, that.periodParam) &&
       Objects.equals(periodDate, that.periodDate);
@@ -202,7 +226,7 @@ public final class SnapshotDto {
 
   @Override
   public int hashCode() {
-    return Objects.hash(id, uuid, componentUuid, createdAt, buildDate, status, purgeStatus, last, codePeriodVersion, periodMode, periodParam, periodDate);
+    return Objects.hash(id, uuid, componentUuid, createdAt, buildDate, status, purgeStatus, last, codePeriodVersion, projectVersion, periodMode, periodParam, periodDate);
   }
 
   @Override
@@ -217,6 +241,7 @@ public final class SnapshotDto {
       ", purgeStatus=" + purgeStatus +
       ", last=" + last +
       ", codePeriodVersion='" + codePeriodVersion + '\'' +
+      ", projectVersion='" + projectVersion + '\'' +
       ", periodMode='" + periodMode + '\'' +
       ", periodParam='" + periodParam + '\'' +
       ", periodDate=" + periodDate +
index 15d242471abe056a1edd4f7b6ef71b4703696bcd..7257db1b518cc7a9ef72d1d9b6309467ce244db2 100644 (file)
@@ -12,6 +12,7 @@
     s.purge_status as purgeStatus,
     s.islast as last,
     s.version as rawCodePeriodVersion,
+    s.project_version as rawProjectVersion,
     s.period1_mode as periodMode,
     s.period1_param as periodParam,
     s.period1_date as periodDate
 
   <insert id="insert" parameterType="Snapshot" keyColumn="id" useGeneratedKeys="true" keyProperty="id">
     insert into snapshots (
-    uuid,
-    component_uuid,
-    created_at,
-    build_date,
-    status,
-    purge_status,
-    islast,
-    version,
-    period1_mode,
-    period1_param,
-    period1_date)
+      uuid,
+      component_uuid,
+      created_at,
+      build_date,
+      status,
+      purge_status,
+      islast,
+      version,
+      project_version,
+      period1_mode,
+      period1_param,
+      period1_date
+    )
     values (
-    #{uuid, jdbcType=VARCHAR},
-    #{componentUuid, jdbcType=VARCHAR},
-    #{createdAt, jdbcType=BIGINT},
-    #{buildDate, jdbcType=BIGINT},
-    #{status, jdbcType=VARCHAR},
-    #{purgeStatus, jdbcType=INTEGER},
-    #{last, jdbcType=BOOLEAN},
-    #{codePeriodVersion, jdbcType=VARCHAR},
-    #{periodMode, jdbcType=VARCHAR},
-    #{periodParam, jdbcType=VARCHAR},
-    #{periodDate, jdbcType=BIGINT})
+      #{uuid, jdbcType=VARCHAR},
+      #{componentUuid, jdbcType=VARCHAR},
+      #{createdAt, jdbcType=BIGINT},
+      #{buildDate, jdbcType=BIGINT},
+      #{status, jdbcType=VARCHAR},
+      #{purgeStatus, jdbcType=INTEGER},
+      #{last, jdbcType=BOOLEAN},
+      #{codePeriodVersion, jdbcType=VARCHAR},
+      #{projectVersion, jdbcType=VARCHAR},
+      #{periodMode, jdbcType=VARCHAR},
+      #{periodParam, jdbcType=VARCHAR},
+      #{periodDate, jdbcType=BIGINT}
+    )
   </insert>
 </mapper>
 
index 575e4ad20671cd0d24ca5b0bfe08b90f50e72ce7..aaff3da458895f799500558a918a5037858bc425 100644 (file)
@@ -43,6 +43,7 @@ import static java.util.Collections.singletonList;
 import static org.apache.commons.lang.RandomStringUtils.randomAlphanumeric;
 import static org.apache.commons.lang.math.RandomUtils.nextLong;
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.groups.Tuple.tuple;
 import static org.sonar.db.ce.CeActivityDto.Status.CANCELED;
 import static org.sonar.db.ce.CeActivityDto.Status.SUCCESS;
 import static org.sonar.db.component.ComponentTesting.newPrivateProjectDto;
@@ -77,6 +78,7 @@ public class SnapshotDaoTest {
       .setPeriodParam("30")
       .setPeriodDate(1500000000001L)
       .setCodePeriodVersion("2.1-SNAPSHOT")
+      .setProjectVersion("2.1.0.2336")
       .setBuildDate(1500000000006L)
       .setCreatedAt(1403042400000L));
 
@@ -88,6 +90,7 @@ public class SnapshotDaoTest {
     assertThat(result.getLast()).isTrue();
     assertThat(result.getPurgeStatus()).isEqualTo(1);
     assertThat(result.getCodePeriodVersion()).isEqualTo("2.1-SNAPSHOT");
+    assertThat(result.getProjectVersion()).isEqualTo("2.1.0.2336");
     assertThat(result.getPeriodMode()).isEqualTo("days");
     assertThat(result.getPeriodModeParameter()).isEqualTo("30");
     assertThat(result.getPeriodDate()).isEqualTo(1500000000001L);
@@ -150,8 +153,20 @@ public class SnapshotDaoTest {
 
     assertThat(underTest.selectAnalysesByQuery(db.getSession(), new SnapshotQuery())).hasSize(6);
 
-    assertThat(underTest.selectAnalysesByQuery(db.getSession(), new SnapshotQuery().setComponentUuid("ABCD").setSort(BY_DATE, ASC)).get(0).getId()).isEqualTo(1L);
-    assertThat(underTest.selectAnalysesByQuery(db.getSession(), new SnapshotQuery().setComponentUuid("ABCD").setSort(BY_DATE, DESC)).get(0).getId()).isEqualTo(3L);
+    assertThat(underTest.selectAnalysesByQuery(db.getSession(), new SnapshotQuery().setComponentUuid("ABCD").setSort(BY_DATE, ASC)))
+      .extracting(SnapshotDto::getId, SnapshotDto::getCodePeriodVersion, SnapshotDto::getProjectVersion)
+      .containsOnly(
+        tuple(1L, "2.0-SNAPSHOT", "2.0.0.2363"),
+        tuple(2L, "2.1-SNAPSHOT", "2.1.0.11"),
+        tuple(3L, "2.2-SNAPSHOT", "2.2.0.8869")
+      );
+    assertThat(underTest.selectAnalysesByQuery(db.getSession(), new SnapshotQuery().setComponentUuid("ABCD").setSort(BY_DATE, DESC)))
+      .extracting(SnapshotDto::getId, SnapshotDto::getCodePeriodVersion, SnapshotDto::getProjectVersion)
+      .containsOnly(
+        tuple(3L, "2.2-SNAPSHOT", "2.2.0.8869"),
+        tuple(2L, "2.1-SNAPSHOT", "2.1.0.11"),
+        tuple(1L, "2.0-SNAPSHOT", "2.0.0.2363")
+      );
     assertThat(underTest.selectAnalysesByQuery(db.getSession(), new SnapshotQuery().setComponentUuid("ABCD"))).hasSize(3);
     assertThat(underTest.selectAnalysesByQuery(db.getSession(), new SnapshotQuery().setComponentUuid("UNKOWN"))).isEmpty();
     assertThat(underTest.selectAnalysesByQuery(db.getSession(), new SnapshotQuery().setComponentUuid("GHIJ"))).isEmpty();
index b8111f4f84205c569e86f3f4576336277c016a97..79cc26947fd8df7d4c5902e3a9e2cf0b7b6d1474 100644 (file)
@@ -47,6 +47,7 @@
              created_at="1228172400001"
              build_date="1317247200000"
              version="2.0-SNAPSHOT"
+             project_version="2.0.0.2363"
   />
   <snapshots id="2"
              uuid="u2"
@@ -72,6 +73,7 @@
              created_at="1228172400002"
              build_date="1317247200000"
              version="2.1-SNAPSHOT"
+             project_version="2.1.0.11"
   />
   <snapshots id="3"
              uuid="u3"
@@ -97,6 +99,7 @@
              created_at="1228172400003"
              build_date="1317247200000"
              version="2.2-SNAPSHOT"
+             project_version="2.2.0.8869"
   />
 
   <!-- PROJECT_ID = 2 -->
              created_at="1228172400000"
              build_date="1317247200000"
              version="2.1-SNAPSHOT"
+             project_version="2.1.0.66"
   />
   <!-- Unprocessed snapshot -->
   <snapshots organization_uuid="org1"
              created_at="1228172400000"
              build_date="1317247200000"
              version="2.1-SNAPSHOT"
+             project_version="2.1.0.1"
   />
 
   <!-- PROJECT_ID = 3 - no last snapshot -->
              created_at="1228172400000"
              build_date="1317247200000"
              version="2.1-SNAPSHOT"
+             project_version="2.1.0.5586"
   />
 
   <!-- PROJECT_ID = 4 - no snapshot -->