import javax.annotation.CheckForNull;
import javax.annotation.Nullable;
-import org.apache.commons.lang.builder.ReflectionToStringBuilder;
+import javax.annotation.concurrent.Immutable;
+@Immutable
public class Period {
private int index;
private String mode, modeParameter;
private long snapshotDate;
+ private final long snapshotId;
- public Period(int index, String mode, @Nullable String modeParameter, long snapshotDate) {
+ public Period(int index, String mode, @Nullable String modeParameter, long snapshotDate, long snapshotId) {
this.index = index;
this.mode = mode;
this.modeParameter = modeParameter;
this.snapshotDate = snapshotDate;
+ this.snapshotId = snapshotId;
}
public int getIndex() {
return snapshotDate;
}
+ public long getSnapshotId() {
+ return snapshotId;
+ }
+
public String getMode() {
return mode;
}
@Override
public String toString() {
- return ReflectionToStringBuilder.toString(this);
+ return "Period{" +
+ "index=" + index +
+ ", mode='" + mode + '\'' +
+ ", modeParameter='" + modeParameter + '\'' +
+ ", snapshotDate=" + snapshotDate +
+ ", snapshotId=" + snapshotId +
+ '}';
}
-
}
return null;
}
LOG.debug(String.format("Compare to date %s (analysis of %s)", formatDate(date.getTime()), formatDate(snapshot.getCreatedAt())));
- return new Period(index, CoreProperties.TIMEMACHINE_MODE_DATE, DateUtils.formatDate(date), snapshot.getCreatedAt());
+ return new Period(index, CoreProperties.TIMEMACHINE_MODE_DATE, DateUtils.formatDate(date), snapshot.getCreatedAt(), snapshot.getId());
}
@CheckForNull
return null;
}
LOG.debug(String.format("Compare over %s days (%s, analysis of %s)", String.valueOf(days), formatDate(targetDate), formatDate(snapshot.getCreatedAt())));
- return new Period(index, CoreProperties.TIMEMACHINE_MODE_DAYS, String.valueOf(days), snapshot.getCreatedAt());
+ return new Period(index, CoreProperties.TIMEMACHINE_MODE_DAYS, String.valueOf(days), snapshot.getCreatedAt(), snapshot.getId());
}
@CheckForNull
return null;
}
LOG.debug(String.format("Compare to previous analysis (%s)", formatDate(snapshot.getCreatedAt())));
- return new Period(index, CoreProperties.TIMEMACHINE_MODE_PREVIOUS_ANALYSIS, formatDate(snapshot.getCreatedAt()), snapshot.getCreatedAt());
+ return new Period(index, CoreProperties.TIMEMACHINE_MODE_PREVIOUS_ANALYSIS, formatDate(snapshot.getCreatedAt()), snapshot.getCreatedAt(), snapshot.getId());
}
@CheckForNull
}
SnapshotDto snapshotDto = snapshotDtos.get(0);
LOG.debug(String.format("Compare to previous version (%s)", formatDate(snapshotDto.getCreatedAt())));
- return new Period(index, CoreProperties.TIMEMACHINE_MODE_PREVIOUS_VERSION, snapshotDto.getVersion(), snapshotDto.getCreatedAt());
+ return new Period(index, CoreProperties.TIMEMACHINE_MODE_PREVIOUS_VERSION, snapshotDto.getVersion(), snapshotDto.getCreatedAt(), snapshotDto.getId());
}
@CheckForNull
return null;
}
LOG.debug(String.format("Compare to version (%s) (%s)", version, formatDate(snapshot.getCreatedAt())));
- return new Period(index, CoreProperties.TIMEMACHINE_MODE_VERSION, version, snapshot.getCreatedAt());
+ return new Period(index, CoreProperties.TIMEMACHINE_MODE_VERSION, version, snapshot.getCreatedAt(), snapshot.getId());
}
@CheckForNull
@Test
public void test_some_setters_and_getters() {
Long date = System.currentTimeMillis();
- Period period = new Period(1, CoreProperties.TIMEMACHINE_MODE_VERSION, "2.3", date);
+ Period period = new Period(1, CoreProperties.TIMEMACHINE_MODE_VERSION, "2.3", date, 10L);
assertThat(period.getMode()).isEqualTo(CoreProperties.TIMEMACHINE_MODE_VERSION);
assertThat(period.getModeParameter()).isEqualTo("2.3");
assertThat(period.getIndex()).isEqualTo(1);
assertThat(period.getSnapshotDate()).isEqualTo(date);
+ assertThat(period.getSnapshotId()).isEqualTo(10L);
}
+ @Test
+ public void test_to_string() throws Exception {
+ assertThat(new Period(1, CoreProperties.TIMEMACHINE_MODE_VERSION, "2.3", 1420034400000L, 10L).toString())
+ .isEqualTo("Period{index=1, mode='version', modeParameter='2.3', snapshotDate=1420034400000, snapshotId=10}");
+ }
}
@Test
public void get_periods() throws Exception {
List<Period> periods = new ArrayList<>();
- periods.add(new Period(1, "mode", null, 1000L));
+ periods.add(new Period(1, "mode", null, 1000L, 10L));
PeriodsHolderImpl periodsHolder = new PeriodsHolderImpl();
periodsHolder.setPeriods(periods);
thrown.expectMessage("Periods have already been initialized");
List<Period> periods = new ArrayList<>();
- periods.add(new Period(1, "mode", null, 1000L));
+ periods.add(new Period(1, "mode", null, 1000L, 10L));
PeriodsHolderImpl periodsHolder = new PeriodsHolderImpl();
periodsHolder.setPeriods(periods);
thrown.expect(UnsupportedOperationException.class);
List<Period> periods = new ArrayList<>();
- periods.add(new Period(1, "mode", null, 1000L));
+ periods.add(new Period(1, "mode", null, 1000L, 10L));
PeriodsHolderImpl periodsHolder = new PeriodsHolderImpl();
periodsHolder.setPeriods(periods);
- periodsHolder.getPeriods().add(new Period(2, "mode", null, 1001L));
+ periodsHolder.getPeriods().add(new Period(2, "mode", null, 1001L, 11L));
}
}
assertThat(period.getMode()).isEqualTo(CoreProperties.TIMEMACHINE_MODE_DATE);
assertThat(period.getModeParameter()).isEqualTo(textDate);
assertThat(period.getSnapshotDate()).isEqualTo(1227358680000L);
+ assertThat(period.getSnapshotId()).isEqualTo(1003L);
}
@Test
assertThat(period.getMode()).isEqualTo(CoreProperties.TIMEMACHINE_MODE_DATE);
assertThat(period.getModeParameter()).isEqualTo(textDate);
assertThat(period.getSnapshotDate()).isEqualTo(1227358680000L);
+ assertThat(period.getSnapshotId()).isEqualTo(1003L);
assertThat(logTester.logs()).hasSize(1);
assertThat(logTester.logs().get(0)).startsWith("Compare to date 2008-11-22 (analysis of ");
assertThat(period.getMode()).isEqualTo(CoreProperties.TIMEMACHINE_MODE_DATE);
assertThat(period.getModeParameter()).isEqualTo(date);
assertThat(period.getSnapshotDate()).isEqualTo(1227934800000L);
+ assertThat(period.getSnapshotId()).isEqualTo(1004L);
}
@Test
assertThat(period.getMode()).isEqualTo(CoreProperties.TIMEMACHINE_MODE_DAYS);
assertThat(period.getModeParameter()).isEqualTo("10");
assertThat(period.getSnapshotDate()).isEqualTo(1227157200000L);
+ assertThat(period.getSnapshotId()).isEqualTo(1002L);
assertThat(logTester.logs()).hasSize(1);
assertThat(logTester.logs().get(0)).startsWith("Compare over 10 days (2008-11-20, analysis of ");
assertThat(period.getMode()).isEqualTo(CoreProperties.TIMEMACHINE_MODE_PREVIOUS_ANALYSIS);
assertThat(period.getModeParameter()).isNotNull();
assertThat(period.getSnapshotDate()).isEqualTo(1227934800000L);
+ assertThat(period.getSnapshotId()).isEqualTo(1004L);
assertThat(logTester.logs()).hasSize(1);
assertThat(logTester.logs().get(0)).startsWith("Compare to previous analysis (");
assertThat(period.getMode()).isEqualTo(CoreProperties.TIMEMACHINE_MODE_PREVIOUS_VERSION);
assertThat(period.getModeParameter()).isEqualTo("1.0");
assertThat(period.getSnapshotDate()).isEqualTo(1226494680000L);
+ assertThat(period.getSnapshotId()).isEqualTo(1001L);
assertThat(logTester.logs()).hasSize(1);
assertThat(logTester.logs().get(0)).startsWith("Compare to previous version (");
assertThat(period.getMode()).isEqualTo(CoreProperties.TIMEMACHINE_MODE_PREVIOUS_VERSION);
assertThat(period.getModeParameter()).isEqualTo("0.9");
assertThat(period.getSnapshotDate()).isEqualTo(1226379600000L);
+ assertThat(period.getSnapshotId()).isEqualTo(1000L);
}
@Test
assertThat(period.getMode()).isEqualTo(CoreProperties.TIMEMACHINE_MODE_VERSION);
assertThat(period.getModeParameter()).isEqualTo("0.9");
assertThat(period.getSnapshotDate()).isEqualTo(1226379600000L);
+ assertThat(period.getSnapshotId()).isEqualTo(1000L);
assertThat(logTester.logs()).hasSize(1);
assertThat(logTester.logs().get(0)).startsWith("Compare to version (0.9) (");
SnapshotDto snapshotDto = SnapshotTesting.createForProject(projectDto).setCreatedAt(DateUtils.parseDateQuietly("2015-01-01").getTime());
dbClient.snapshotDao().insert(session, snapshotDto);
session.commit();
- periodsHolderRule.addPeriod(new Period(1, CoreProperties.TIMEMACHINE_MODE_DATE, "2015-01-01", analysisDate));
+ periodsHolderRule.addPeriod(new Period(1, CoreProperties.TIMEMACHINE_MODE_DATE, "2015-01-01", analysisDate, 123L));
Component project = DumbComponent.builder(Component.Type.PROJECT, 1).setUuid("ABCD").setKey(PROJECT_KEY).build();
treeRootHolder.setRoot(project);
@Test
public void only_persist_snapshots_with_periods_on_project_and_module() throws Exception {
- periodsHolderRule.addPeriod(new Period(1, CoreProperties.TIMEMACHINE_MODE_PREVIOUS_ANALYSIS, null, analysisDate));
+ periodsHolderRule.addPeriod(new Period(1, CoreProperties.TIMEMACHINE_MODE_PREVIOUS_ANALYSIS, null, analysisDate, 123L));
ComponentDto projectDto = ComponentTesting.newProjectDto("ABCD").setKey(PROJECT_KEY).setName("Project");
dbClient.componentDao().insert(session, projectDto);