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)
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);
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);
private Integer purgeStatus;
private Boolean last;
private String codePeriodVersion;
+ private String projectVersion;
private String periodMode;
private String periodParam;
private Long periodDate;
}
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
*/
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;
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);
@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
", purgeStatus=" + purgeStatus +
", last=" + last +
", codePeriodVersion='" + codePeriodVersion + '\'' +
+ ", projectVersion='" + projectVersion + '\'' +
", periodMode='" + periodMode + '\'' +
", periodParam='" + periodParam + '\'' +
", periodDate=" + periodDate +
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>
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;
.setPeriodParam("30")
.setPeriodDate(1500000000001L)
.setCodePeriodVersion("2.1-SNAPSHOT")
+ .setProjectVersion("2.1.0.2336")
.setBuildDate(1500000000006L)
.setCreatedAt(1403042400000L));
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);
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();
created_at="1228172400001"
build_date="1317247200000"
version="2.0-SNAPSHOT"
+ project_version="2.0.0.2363"
/>
<snapshots id="2"
uuid="u2"
created_at="1228172400002"
build_date="1317247200000"
version="2.1-SNAPSHOT"
+ project_version="2.1.0.11"
/>
<snapshots id="3"
uuid="u3"
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 -->