import org.sonar.server.computation.snapshot.Snapshot;
public interface AnalysisMetadataHolder {
+
+ /**
+ * Returns the UUID generated for this analysis.
+ * @throws IllegalStateException if uuid has not been set
+ */
+ String getUuid();
+
/**
* @throws IllegalStateException if no analysis date has been set
*/
public class AnalysisMetadataHolderImpl implements MutableAnalysisMetadataHolder {
- private InitializedProperty<Long> analysisDate = new InitializedProperty<>();
+ private final InitializedProperty<String> uuid = new InitializedProperty<>();
- private InitializedProperty<Snapshot> baseProjectSnapshot = new InitializedProperty<>();
+ private final InitializedProperty<Long> analysisDate = new InitializedProperty<>();
- private InitializedProperty<Boolean> crossProjectDuplicationEnabled = new InitializedProperty<>();
+ private final InitializedProperty<Snapshot> baseProjectSnapshot = new InitializedProperty<>();
- private InitializedProperty<String> branch = new InitializedProperty<>();
+ private final InitializedProperty<Boolean> crossProjectDuplicationEnabled = new InitializedProperty<>();
- private InitializedProperty<Integer> rootComponentRef = new InitializedProperty<>();
+ private final InitializedProperty<String> branch = new InitializedProperty<>();
- private InitializedProperty<Map<String, QualityProfile>> qProfilesPerLanguage = new InitializedProperty<>();
+ private final InitializedProperty<Integer> rootComponentRef = new InitializedProperty<>();
+
+ private final InitializedProperty<Map<String, QualityProfile>> qProfilesPerLanguage = new InitializedProperty<>();
+
+ @Override
+ public MutableAnalysisMetadataHolder setUuid(String s) {
+ checkState(!uuid.isInitialized(), "Analysis uuid has already been set");
+ this.uuid.setProperty(s);
+ return this;
+ }
@Override
public MutableAnalysisMetadataHolder setAnalysisDate(long date) {
return this;
}
+ @Override
+ public String getUuid() {
+ checkState(uuid.isInitialized(), "Analysis uuid has not been set");
+ return this.uuid.getProperty();
+ }
+
@Override
public long getAnalysisDate() {
checkState(analysisDate.isInitialized(), "Analysis date has not been set");
public interface MutableAnalysisMetadataHolder extends AnalysisMetadataHolder {
+ /**
+ * @throws IllegalStateException if the analysis uuid has already been set
+ */
+ MutableAnalysisMetadataHolder setUuid(String uuid);
+
/**
* @throws IllegalStateException if the analysis date has already been set
*/
--- /dev/null
+/*
+ * SonarQube
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.server.computation.step;
+
+import org.sonar.core.util.UuidFactory;
+import org.sonar.server.computation.analysis.MutableAnalysisMetadataHolder;
+
+public class GenerateAnalysisUuid implements ComputationStep {
+
+ private final UuidFactory uuidFactory;
+ private final MutableAnalysisMetadataHolder analysisMetadataHolder;
+
+ public GenerateAnalysisUuid(UuidFactory uuidFactory, MutableAnalysisMetadataHolder analysisMetadataHolder) {
+ this.uuidFactory = uuidFactory;
+ this.analysisMetadataHolder = analysisMetadataHolder;
+ }
+
+ @Override
+ public void execute() {
+ analysisMetadataHolder.setUuid(uuidFactory.create());
+ }
+
+ @Override
+ public String getDescription() {
+ return "Generate analysis UUID";
+ }
+}
import org.sonar.api.resources.Qualifiers;
import org.sonar.api.resources.Scopes;
import org.sonar.api.utils.System2;
+import org.sonar.core.util.Uuids;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.component.SnapshotDto;
@Override
public void visitProject(Component project, Path<SnapshotDtoHolder> path) {
this.rootUuid = project.getUuid();
- SnapshotDto snapshot = createSnapshot(project, path, Qualifiers.PROJECT, Scopes.PROJECT, true);
+ SnapshotDto snapshot = createSnapshot(analysisMetadataHolder.getUuid(), project, path, Qualifiers.PROJECT, Scopes.PROJECT, true);
updateSnapshotPeriods(snapshot);
commonForAnyVisit(project, path, snapshot);
}
@Override
public void visitModule(Component module, Path<SnapshotDtoHolder> path) {
- SnapshotDto snapshot = createSnapshot(module, path, Qualifiers.MODULE, Scopes.PROJECT, true);
+ SnapshotDto snapshot = createSnapshot(Uuids.create(), module, path, Qualifiers.MODULE, Scopes.PROJECT, true);
updateSnapshotPeriods(snapshot);
commonForAnyVisit(module, path, snapshot);
}
@Override
public void visitDirectory(Component directory, Path<SnapshotDtoHolder> path) {
- SnapshotDto snapshot = createSnapshot(directory, path, Qualifiers.DIRECTORY, Scopes.DIRECTORY, false);
+ SnapshotDto snapshot = createSnapshot(Uuids.create(), directory, path, Qualifiers.DIRECTORY, Scopes.DIRECTORY, false);
commonForAnyVisit(directory, path, snapshot);
}
@Override
public void visitFile(Component file, Path<SnapshotDtoHolder> path) {
- SnapshotDto snapshot = createSnapshot(file, path, getFileQualifier(file), Scopes.FILE, false);
+ SnapshotDto snapshot = createSnapshot(Uuids.create(), file, path, getFileQualifier(file), Scopes.FILE, false);
commonForAnyVisit(file, path, snapshot);
}
@Override
public void visitView(Component view, Path<SnapshotDtoHolder> path) {
this.rootUuid = view.getUuid();
- SnapshotDto snapshot = createSnapshot(view, path, Qualifiers.VIEW, Scopes.PROJECT, false);
+ SnapshotDto snapshot = createSnapshot(Uuids.create(), view, path, Qualifiers.VIEW, Scopes.PROJECT, false);
updateSnapshotPeriods(snapshot);
commonForAnyVisit(view, path, snapshot);
}
@Override
public void visitSubView(Component subView, Path<SnapshotDtoHolder> path) {
- SnapshotDto snapshot = createSnapshot(subView, path, Qualifiers.SUBVIEW, Scopes.PROJECT, false);
+ SnapshotDto snapshot = createSnapshot(Uuids.create(), subView, path, Qualifiers.SUBVIEW, Scopes.PROJECT, false);
updateSnapshotPeriods(snapshot);
commonForAnyVisit(subView, path, snapshot);
}
@Override
public void visitProjectView(Component projectView, Path<SnapshotDtoHolder> path) {
- SnapshotDto snapshot = createSnapshot(projectView, path, Qualifiers.PROJECT, Scopes.FILE, false);
+ SnapshotDto snapshot = createSnapshot(Uuids.create(), projectView, path, Qualifiers.PROJECT, Scopes.FILE, false);
updateSnapshotPeriods(snapshot);
commonForAnyVisit(projectView, path, snapshot);
}
}
}
- private SnapshotDto createSnapshot(Component component, Path<SnapshotDtoHolder> path,
+ private SnapshotDto createSnapshot(String snapshotUuid, Component component, Path<SnapshotDtoHolder> path,
String qualifier, String scope, boolean setVersion) {
String componentUuid = component.getUuid();
SnapshotDto snapshotDto = new SnapshotDto()
+ .setUuid(snapshotUuid)
.setRootComponentUuid(rootUuid)
.setVersion(setVersion ? component.getReportAttributes().getVersion() : null)
.setComponentUuid(componentUuid)
private static final List<Class<? extends ComputationStep>> STEPS = Arrays.asList(
ExtractReportStep.class,
LogScannerContextStep.class,
+ GenerateAnalysisUuid.class,
// Builds Component tree
LoadReportAnalysisMetadataHolderStep.class,
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Preconditions.checkState;
-public class AnalysisMetadataHolderRule extends ExternalResource implements AnalysisMetadataHolder {
+public class AnalysisMetadataHolderRule extends ExternalResource implements MutableAnalysisMetadataHolder {
- private InitializedProperty<Long> analysisDate = new InitializedProperty<>();
+ private final InitializedProperty<String> uuid = new InitializedProperty<>();
- private InitializedProperty<Snapshot> baseProjectSnapshot = new InitializedProperty<>();
+ private final InitializedProperty<Long> analysisDate = new InitializedProperty<>();
- private InitializedProperty<Boolean> crossProjectDuplicationEnabled = new InitializedProperty<>();
+ private final InitializedProperty<Snapshot> baseProjectSnapshot = new InitializedProperty<>();
- private InitializedProperty<String> branch = new InitializedProperty<>();
+ private final InitializedProperty<Boolean> crossProjectDuplicationEnabled = new InitializedProperty<>();
- private InitializedProperty<Integer> rootComponentRef = new InitializedProperty<>();
+ private final InitializedProperty<String> branch = new InitializedProperty<>();
- private InitializedProperty<Map<String, QualityProfile>> qProfilesPerLanguage = new InitializedProperty<>();
+ private final InitializedProperty<Integer> rootComponentRef = new InitializedProperty<>();
+
+ private final InitializedProperty<Map<String, QualityProfile>> qProfilesPerLanguage = new InitializedProperty<>();
+
+ @Override
+ public String getUuid() {
+ checkState(uuid.isInitialized(), "Analysis UUID has not been set");
+ return this.uuid.getProperty();
+ }
+
+ @Override
+ public AnalysisMetadataHolderRule setUuid(String s) {
+ checkNotNull(s, "UUID must not be null");
+ this.uuid.setProperty(s);
+ return this;
+ }
public AnalysisMetadataHolderRule setAnalysisDate(Date date) {
checkNotNull(date, "Date must not be null");
return this;
}
+ @Override
public AnalysisMetadataHolderRule setAnalysisDate(long date) {
checkNotNull(date, "Date must not be null");
this.analysisDate.setProperty(date);
return getBaseProjectSnapshot() == null;
}
+ @Override
public AnalysisMetadataHolderRule setBaseProjectSnapshot(@Nullable Snapshot baseProjectSnapshot) {
this.baseProjectSnapshot.setProperty(baseProjectSnapshot);
return this;
return baseProjectSnapshot.getProperty();
}
+ @Override
public AnalysisMetadataHolderRule setCrossProjectDuplicationEnabled(boolean isCrossProjectDuplicationEnabled) {
this.crossProjectDuplicationEnabled.setProperty(isCrossProjectDuplicationEnabled);
return this;
return crossProjectDuplicationEnabled.getProperty();
}
+ @Override
public AnalysisMetadataHolderRule setBranch(@Nullable String branch) {
this.branch.setProperty(branch);
return this;
return branch.getProperty();
}
+ @Override
public AnalysisMetadataHolderRule setRootComponentRef(int rootComponentRef) {
this.rootComponentRef.setProperty(rootComponentRef);
return this;
return rootComponentRef.getProperty();
}
+ @Override
public AnalysisMetadataHolderRule setQProfilesByLanguage(Map<String, QualityProfile> qProfilesPerLanguage) {
this.qProfilesPerLanguage.setProperty(qProfilesPerLanguage);
return this;
delegate = new AnalysisMetadataHolderImpl();
}
+ @Override
+ public String getUuid() {
+ return delegate.getUuid();
+ }
+
+ public MutableAnalysisMetadataHolderRule setUuid(String s) {
+ delegate.setUuid(s);
+ return this;
+ }
+
@Override
public long getAnalysisDate() {
return delegate.getAnalysisDate();
public class ReportPersistSnapshotsStepTest extends BaseStepTest {
private static final String PROJECT_KEY = "PROJECT_KEY";
+ private static final String ANALYSIS_UUID = "U1";
@Rule
public DbTester dbTester = DbTester.create(System2.INSTANCE);
@Before
public void setup() {
analysisDate = DateUtils.parseDateQuietly("2015-06-01").getTime();
+ analysisMetadataHolder.setUuid(ANALYSIS_UUID);
analysisMetadataHolder.setAnalysisDate(analysisDate);
dbIdsRepository = new DbIdsRepositoryImpl();
public class ViewsPersistSnapshotsStepTest extends BaseStepTest {
private static final int PROJECT_KEY = 1;
+ private static final String ANALYSIS_UUID = "U1";
@Rule
public DbTester dbTester = DbTester.create(System2.INSTANCE);
@Before
public void setup() {
analysisDate = DateUtils.parseDateQuietly("2015-06-01").getTime();
+ analysisMetadataHolder.setUuid(ANALYSIS_UUID);
analysisMetadataHolder.setAnalysisDate(analysisDate);
now = DateUtils.parseDateQuietly("2015-06-02").getTime();
ComponentDto project = ComponentTesting.newProjectDto("abcd")
.setKey("polop").setName("Polop");
dbClient.componentDao().insert(dbTester.getSession(), project);
- dbClient.snapshotDao().insert(dbTester.getSession(), new SnapshotDto().setCreatedAt(snapshotDate.getTime()).setVersion("3.14")
- .setLast(true).setQualifier(project.qualifier()).setComponentUuid(project.uuid()).setRootComponentUuid(project.uuid()).setScope(project.scope()));
+ dbClient.snapshotDao().insert(dbTester.getSession(), new SnapshotDto()
+ .setUuid("u1")
+ .setCreatedAt(snapshotDate.getTime())
+ .setVersion("3.14")
+ .setLast(true)
+ .setQualifier(project.qualifier())
+ .setComponentUuid(project.uuid())
+ .setRootComponentUuid(project.uuid())
+ .setScope(project.scope()));
dbTester.getSession().commit();
userSessionRule.login("obiwan").setUserId(userId).addProjectUuidPermissions(UserRole.USER, "abcd");
<dataset>
<projects id="10" kee="P1" qualifier="TRK" uuid="ABCD" name="Project 1"/>
<snapshots
- id="110" project_id="10" parent_snapshot_id="[null]" root_project_id="10" root_snapshot_id="[null]"
+ id="110"
+ uuid="u110"
+ project_id="10" parent_snapshot_id="[null]" root_project_id="10" root_snapshot_id="[null]"
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]"
<dataset>
- <projects id="567" uuid="uuid_1" root_uuid="uuid_1" kee="file cpt key" enabled="[true]"/>
- <snapshots id="123" component_uuid="uuid_1" root_component_uuid="uuid_1" islast="[true]"/>
- <snapshots id="369" component_uuid="uuid_1" root_component_uuid="uuid_1" islast="[false]"/>
- <metrics id="1" name="metric 1" />
- <metrics id="2" name="metric 2" />
+ <projects id="567" uuid="uuid_1" root_uuid="uuid_1" kee="file cpt key" enabled="[true]"/>
+ <snapshots id="123"
+ uuid="u123"
+ component_uuid="uuid_1" root_component_uuid="uuid_1" islast="[true]"/>
+ <snapshots id="369"
+ uuid="u369"
+ component_uuid="uuid_1" root_component_uuid="uuid_1" islast="[false]"/>
+ <metrics id="1" name="metric 1"/>
+ <metrics id="2" name="metric 2"/>
</dataset>
enabled="true"/>
<!-- snapshots -->
- <snapshots id="1000" project_id="1" root_project_id="1" root_snapshot_id="[null]"
+ <snapshots id="1000"
+ uuid="u1000"
+ project_id="1" root_project_id="1" root_snapshot_id="[null]"
scope="PRJ" qualifier="TRK" created_at="1225544280000" build_date="1225544280000"
status="P" islast="false"/>
- <snapshots id="1001" project_id="2" root_project_id="1" root_snapshot_id="1000"
+ <snapshots id="1001"
+ uuid="u1001"
+ project_id="2" root_project_id="1" root_snapshot_id="1000"
scope="DIR" qualifier="PAC" created_at="1225544280000" build_date="1225544280000"
status="P" islast="false"/>
<!-- 2008-11-11 -->
<!-- Version 0.9 -->
- <snapshots id="1000" purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]" period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+ <snapshots id="1000"
+ uuid="u1000"
+ 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]"
component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
<!-- 2008-11-12 -->
<!-- Version 1.0 -->
- <snapshots id="1001" purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]" period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+ <snapshots id="1001"
+ uuid="u1001"
+ 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]" component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
scope="PRJ" qualifier="TRK" created_at="1226494680000" build_date="1226494680000" version="1.0" path=""
<!-- 2008-11-20 -->
<!-- First version 1.1 -->
- <snapshots id="1002" purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]" period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+ <snapshots id="1002"
+ uuid="u1002"
+ 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]"
component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
status="P" islast="[false]" depth="0"/>
<!-- 2008-11-22 -->
- <snapshots id="1003" purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]" period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+ <snapshots id="1003"
+ uuid="u1003"
+ 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]"
component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
<!-- 2008-11-29 -->
<!-- Last version 1.1 -->
- <snapshots id="1004" purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]" period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+ <snapshots id="1004"
+ uuid="u1004"
+ 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]" component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
scope="PRJ" qualifier="TRK" created_at="1227934800000" build_date="1227934800000" version="1.1" path=""
<!-- 2008-11-11 -->
<!-- Version 0.9 -->
- <snapshots id="1000" purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]" period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+ <snapshots id="1000"
+ uuid="u1000"
+ 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]"
component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
<!-- 2008-11-12 -->
<!-- Version 1.0 -->
- <snapshots id="1001" purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]" period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+ <snapshots id="1001"
+ uuid="u1001"
+ 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]" component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
scope="PRJ" qualifier="TRK" created_at="1226494680000" build_date="1226494680000" version="1.0" path=""
<!-- 2008-11-20 -->
<!-- version 1.1 -->
- <snapshots id="1002" purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]" period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+ <snapshots id="1002"
+ uuid="u1002"
+ 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]"
component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
<!-- 2008-11-11 -->
<!-- Version 0.9 -->
- <snapshots id="1000" purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]"
+ <snapshots id="1000"
+ uuid="u1000"
+ 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]"
<!-- 2008-11-11 -->
<!-- Version 0.9 -->
- <snapshots id="1000" purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]" period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+ <snapshots id="1000"
+ uuid="u1000"
+ 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]"
component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
<!-- 2008-11-12 -->
<!-- Version 1.0 -->
- <snapshots id="1001" purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]" period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+ <snapshots id="1001"
+ uuid="u1001"
+ 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]" component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
scope="PRJ" qualifier="TRK" created_at="1226494680000" build_date="1226494680000" version="1.0" path=""
<!-- 2008-11-20 -->
<!-- First version 1.1 -->
- <snapshots id="1002" purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]" period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+ <snapshots id="1002"
+ uuid="u1002"
+ 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]"
component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
status="P" islast="[false]" depth="0"/>
<!-- 2008-11-22 -->
- <snapshots id="1003" purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]" period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+ <snapshots id="1003"
+ uuid="u1003"
+ 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]"
component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
<!-- 2008-11-29 -->
<!-- Last version 1.1 -->
- <snapshots id="1004" purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]" period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+ <snapshots id="1004"
+ uuid="u1004"
+ 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]" component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
scope="PRJ" qualifier="TRK" created_at="1227934800000" build_date="1227934800000" version="1.1" path=""
enabled="[true]" language="java" />
<!-- Unprocessed snapshot -->
- <snapshots id="1000" purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]" period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+ <snapshots id="1000"
+ uuid="u1000"
+ 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]"
component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
<dataset>
<!-- NEW SNAPSHOT -->
- <snapshots id="1" component_uuid="uuid_123" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="1"
+ <snapshots id="1"
+ uuid="u1"
+ component_uuid="uuid_123" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="1"
status="P" islast="[true]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
period5_mode="days5" period5_param="34" period5_date="1317160800000"
depth="1" scope="PRJ" qualifier="PAC" created_at="1228258800000" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
- <snapshots id="2" component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="1"
+ <snapshots id="2"
+ uuid="u2"
+ component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="1"
status="P" islast="[true]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
period5_mode="days5" period5_param="34" period5_date="1317160800000"
depth="1" scope="DIR" qualifier="PAC" created_at="1228258800000" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
- <snapshots id="3" component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="1"
+ <snapshots id="3"
+ uuid="u3"
+ component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="1"
status="P" islast="[true]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
depth="1" scope="DIR" qualifier="PAC" created_at="1228258800000" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
<!-- PROJECT_ID = 3 - no last snapshot -->
- <snapshots id="4" component_uuid="uuid_3" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="1"
+ <snapshots id="4"
+ uuid="u4"
+ component_uuid="uuid_3" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="1"
status="P" islast="[true]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
depth="1" scope="DIR" qualifier="PAC" created_at="1228258800000" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
<!-- Child of snapshot id=1 -->
- <snapshots id="5" component_uuid="uuid_55" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="1"
+ <snapshots id="5"
+ uuid="u5"
+ component_uuid="uuid_55" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="1"
status="P" islast="[true]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
version="2.1-SNAPSHOT" path="1.2."/>
<!-- LAST FLAGGED SNAPSHOT -->
- <snapshots id="21" component_uuid="uuid_123" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="21"
+ <snapshots id="21"
+ uuid="u21"
+ component_uuid="uuid_123" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="21"
status="P" islast="[false]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
period5_mode="days5" period5_param="34" period5_date="1317160800000"
depth="1" scope="PRJ" qualifier="PAC" created_at="1228172400000" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
- <snapshots id="22" component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="21"
+ <snapshots id="22"
+ uuid="u22"
+ component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="21"
status="P" islast="[false]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
period5_mode="days5" period5_param="34" period5_date="1317160800000"
depth="1" scope="DIR" qualifier="PAC" created_at="1228172400000" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
- <snapshots id="23" component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="21"
+ <snapshots id="23"
+ uuid="u23"
+ component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="21"
status="P" islast="[false]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
depth="1" scope="DIR" qualifier="PAC" created_at="1228172400000" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
<!-- PROJECT_ID = 3 - no last snapshot -->
- <snapshots id="24" component_uuid="uuid_3" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="21"
+ <snapshots id="24"
+ uuid="u24"
+ component_uuid="uuid_3" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="21"
status="P" islast="[false]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
depth="1" scope="DIR" qualifier="PAC" created_at="1228172400000" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
<!-- Child of snapshot id=1 -->
- <snapshots id="25" component_uuid="uuid_55" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="21"
+ <snapshots id="25"
+ uuid="u25"
+ component_uuid="uuid_55" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="21"
status="P" islast="[false]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
version="2.1-SNAPSHOT" path="1.2."/>
<!-- OLD SNAPSHOT -->
- <snapshots id="46" component_uuid="uuid_123" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="46"
+ <snapshots id="46"
+ uuid="u46"
+ component_uuid="uuid_123" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="46"
status="P" islast="[false]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
period5_mode="days5" period5_param="34" period5_date="1317160800000"
depth="1" scope="PRJ" qualifier="PAC" created_at="1228086000000" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
- <snapshots id="47" component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="46"
+ <snapshots id="47"
+ uuid="u47"
+ component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="46"
status="P" islast="[false]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
period5_mode="days5" period5_param="34" period5_date="1317160800000"
depth="1" scope="DIR" qualifier="PAC" created_at="1228086000000" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
- <snapshots id="48" component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="46"
+ <snapshots id="48"
+ uuid="u48"
+ component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="46"
status="P" islast="[false]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
depth="1" scope="DIR" qualifier="PAC" created_at="1228086000000" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
<!-- PROJECT_ID = 3 - no last snapshot -->
- <snapshots id="49" component_uuid="uuid_3" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="46"
+ <snapshots id="49"
+ uuid="u49"
+ component_uuid="uuid_3" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="46"
status="P" islast="[false]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
depth="1" scope="DIR" qualifier="PAC" created_at="1228086000000" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
<!-- Child of snapshot id=1 -->
- <snapshots id="50" component_uuid="uuid_55" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="46"
+ <snapshots id="50"
+ uuid="u50"
+ component_uuid="uuid_55" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="46"
status="P" islast="[false]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
<dataset>
<!-- NEW SNAPSHOT -->
- <snapshots id="1" component_uuid="uuid_123" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="1"
+ <snapshots id="1"
+ uuid="u1"
+ component_uuid="uuid_123" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="1"
status="U" islast="[false]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
period5_mode="days5" period5_param="34" period5_date="1317160800000"
depth="1" scope="PRJ" qualifier="PAC" created_at="1228258800000" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
- <snapshots id="2" component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="1"
+ <snapshots id="2"
+ uuid="u2"
+ component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="1"
status="U" islast="[false]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
period5_mode="days5" period5_param="34" period5_date="1317160800000"
depth="1" scope="DIR" qualifier="PAC" created_at="1228258800000" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
- <snapshots id="3" component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="1"
+ <snapshots id="3"
+ uuid="u3"
+ component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="1"
status="U" islast="[false]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
depth="1" scope="DIR" qualifier="PAC" created_at="1228258800000" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
<!-- PROJECT_ID = 3 - no last snapshot -->
- <snapshots id="4" component_uuid="uuid_3" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="1"
+ <snapshots id="4"
+ uuid="u4"
+ component_uuid="uuid_3" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="1"
status="U" islast="[false]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
depth="1" scope="DIR" qualifier="PAC" created_at="1228258800000" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
<!-- Child of snapshot id=1 -->
- <snapshots id="5" component_uuid="uuid_55" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="1"
+ <snapshots id="5"
+ uuid="u5"
+ component_uuid="uuid_55" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="1"
status="U" islast="[false]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
version="2.1-SNAPSHOT" path="1.2."/>
<!-- LAST FLAGGED SNAPSHOT -->
- <snapshots id="21" component_uuid="uuid_123" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="21"
+ <snapshots id="21"
+ uuid="u21"
+ component_uuid="uuid_123" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="21"
status="P" islast="[true]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
period5_mode="days5" period5_param="34" period5_date="1317160800000"
depth="1" scope="PRJ" qualifier="PAC" created_at="1228172400000" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
- <snapshots id="22" component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="21"
+ <snapshots id="22"
+ uuid="u22"
+ component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="21"
status="P" islast="[true]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
period5_mode="days5" period5_param="34" period5_date="1317160800000"
depth="1" scope="DIR" qualifier="PAC" created_at="1228172400000" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
- <snapshots id="23" component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="21"
+ <snapshots id="23"
+ uuid="u23"
+ component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="21"
status="P" islast="[true]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
depth="1" scope="DIR" qualifier="PAC" created_at="1228172400000" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
<!-- PROJECT_ID = 3 - no last snapshot -->
- <snapshots id="24" component_uuid="uuid_3" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="21"
+ <snapshots id="24"
+ uuid="u24"
+ component_uuid="uuid_3" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="21"
status="P" islast="[true]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
depth="1" scope="DIR" qualifier="PAC" created_at="1228172400000" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
<!-- Child of snapshot id=1 -->
- <snapshots id="25" component_uuid="uuid_55" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="21"
+ <snapshots id="25"
+ uuid="u25"
+ component_uuid="uuid_55" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="21"
status="P" islast="[true]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
version="2.1-SNAPSHOT" path="1.2."/>
<!-- OLD SNAPSHOT -->
- <snapshots id="46" component_uuid="uuid_123" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="46"
+ <snapshots id="46"
+ uuid="u46"
+ component_uuid="uuid_123" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="46"
status="P" islast="[false]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
period5_mode="days5" period5_param="34" period5_date="1317160800000"
depth="1" scope="PRJ" qualifier="PAC" created_at="1228086000000" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
- <snapshots id="47" component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="46"
+ <snapshots id="47"
+ uuid="u47"
+ component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="46"
status="P" islast="[false]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
period5_mode="days5" period5_param="34" period5_date="1317160800000"
depth="1" scope="DIR" qualifier="PAC" created_at="1228086000000" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
- <snapshots id="48" component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="46"
+ <snapshots id="48"
+ uuid="u48"
+ component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="46"
status="P" islast="[false]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
depth="1" scope="DIR" qualifier="PAC" created_at="1228086000000" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
<!-- PROJECT_ID = 3 - no last snapshot -->
- <snapshots id="49" component_uuid="uuid_3" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="46"
+ <snapshots id="49"
+ uuid="u49"
+ component_uuid="uuid_3" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="46"
status="P" islast="[false]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
depth="1" scope="DIR" qualifier="PAC" created_at="1228086000000" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
<!-- Child of snapshot id=1 -->
- <snapshots id="50" component_uuid="uuid_55" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="46"
+ <snapshots id="50"
+ uuid="u50"
+ component_uuid="uuid_55" parent_snapshot_id="2" root_component_uuid="uuid_123" root_snapshot_id="46"
status="P" islast="[false]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
<!-- snapshots -->
- <snapshots 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]" id="1" created_at="1230163200000" build_date="1230163200000" version="1.0" project_id="1" scope="PRJ" qualifier="TRK"
+ <snapshots 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]"
+ id="1"
+ uuid="u1"
+ created_at="1230163200000" build_date="1230163200000" version="1.0" project_id="1" scope="PRJ" qualifier="TRK"
root_project_id="1" root_snapshot_id="[null]" parent_snapshot_id="[null]" STATUS="P" ISLAST="true"
path=""
depth="0"/>
- <snapshots 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]" id="2" created_at="1230163201000" build_date="1230163201000" version="1.0" project_id="3" scope="PRJ" qualifier="VW"
+ <snapshots 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]"
+ id="2"
+ uuid="u2"
+ created_at="1230163201000" build_date="1230163201000" version="1.0" project_id="3" scope="PRJ" qualifier="VW"
root_project_id="2" root_snapshot_id="[null]" parent_snapshot_id="[null]" STATUS="P" ISLAST="true"
path=""
depth="0"/>
- <snapshots 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]" id="3" created_at="1230163201000" build_date="1230163201000" version="1.0" project_id="3" scope="PRJ" qualifier="SVW"
+ <snapshots 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]"
+ id="3"
+ uuid="u3"
+ created_at="1230163201000" build_date="1230163201000" version="1.0" project_id="3" scope="PRJ" qualifier="SVW"
root_project_id="2" root_snapshot_id="2" parent_snapshot_id="2" STATUS="P" ISLAST="true"
path="2."
depth="1"/>
- <snapshots 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]" id="4" created_at="1230163200000" build_date="1230163200000" version="1.0" project_id="4" scope="FIL" qualifier="TRK"
+ <snapshots 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]"
+ id="4"
+ uuid="u4"
+ created_at="1230163200000" build_date="1230163200000" version="1.0" project_id="4" scope="FIL" qualifier="TRK"
root_project_id="2" root_snapshot_id="2" parent_snapshot_id="3" STATUS="P" ISLAST="true"
path="2.3."
depth="2"/>
<dataset>
<projects id="10" scope="PRJ" qualifier="TRK" kee="struts" name="Struts" uuid="ABCD" root_uuid="ABCD"/>
- <snapshots id="10" component_uuid="ABCD" root_component_uuid="ABCD" islast="[true]"/>
+ <snapshots id="10"
+ uuid="u10"
+ component_uuid="ABCD" root_component_uuid="ABCD" islast="[true]"/>
<projects id="100" scope="FIL" qualifier="CLA" kee="struts:Action" name="Action" uuid="BCDE" root_uuid="ABCD"/>
- <snapshots id="100" component_uuid="BCDE" root_component_uuid="ABCD" islast="[true]"/>
+ <snapshots id="100"
+ uuid="u100"
+ component_uuid="BCDE" root_component_uuid="ABCD" islast="[true]"/>
</dataset>
<projects id="1" kee="struts" root_uuid="ABCD" uuid="ABCD"/>
<projects id="2" kee="struts:Action.java" root_uuid="ABCD" uuid="BCDE"/>
- <snapshots id="1" component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]" islast="[true]" />
- <snapshots id="2" component_uuid="BCDE" parent_snapshot_id="1" root_component_uuid="ABCD" root_snapshot_id="1" islast="[true]" />
+ <snapshots id="1"
+ uuid="u1"
+ component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]" islast="[true]" />
+ <snapshots id="2"
+ uuid="u2"
+ component_uuid="BCDE" parent_snapshot_id="1" root_component_uuid="ABCD" root_snapshot_id="1" islast="[true]" />
</dataset>
<dataset>
<projects id="10" scope="PRJ" qualifier="TRK" kee="struts" name="Struts" uuid="ABCD" root_uuid="ABCD"/>
- <snapshots id="10" component_uuid="ABCD" root_component_uuid="ABCD" islast="[true]"/>
+ <snapshots id="10"
+ uuid="u10"
+ component_uuid="ABCD" root_component_uuid="ABCD" islast="[true]"/>
<projects id="100" scope="FIL" qualifier="CLA" kee="struts:Action" name="Action" uuid="BCDE" root_uuid="ABCD"/>
- <snapshots id="100" component_uuid="BCDE" root_component_uuid="ABCD" islast="[true]"/>
+ <snapshots id="100"
+ uuid="u100"
+ component_uuid="BCDE" root_component_uuid="ABCD" islast="[true]"/>
</dataset>
<dataset>
<projects id="10" scope="PRJ" qualifier="TRK" kee="struts" name="Struts" uuid="ABCD" root_uuid="ABCD"/>
- <snapshots id="10" component_uuid="ABCD" root_component_uuid="ABCD" islast="[true]"/>
+ <snapshots id="10"
+ uuid="u10"
+ component_uuid="ABCD" root_component_uuid="ABCD" islast="[true]"/>
<projects id="100" scope="FIL" qualifier="CLA" kee="struts:Action" name="Action" uuid="BCDE" root_uuid="ABCD"/>
- <snapshots id="100" component_uuid="BCDE" root_component_uuid="ABCD" islast="[true]"/>
+ <snapshots id="100"
+ uuid="u100"
+ component_uuid="BCDE" root_component_uuid="ABCD" islast="[true]"/>
<issues id="1"
kee="ABCDE"
description="[null]" enabled="[true]" language="java"
created_at="2008-12-19 00:00:00.00"/>
- <snapshots id="101" component_uuid="ABCD" root_component_uuid="ABCD" root_snapshot_id="[null]" parent_snapshot_id="[null]"
+ <snapshots id="101"
+ uuid="u101"
+ component_uuid="ABCD" root_component_uuid="ABCD" root_snapshot_id="[null]" parent_snapshot_id="[null]"
scope="FIL" qualifier="CLA" path="" depth="0"
purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]"
period2_mode="[null]" period2_param="[null]" period2_date="[null]" period3_mode="[null]"
created_at="1229727600000" build_date="1229727600000"
version="1.0" status="P" islast="[true]"/>
- <snapshots id="102" component_uuid="BCDE" root_component_uuid="ABCD" root_snapshot_id="101" parent_snapshot_id="101"
+ <snapshots id="102"
+ uuid="u102"
+ component_uuid="BCDE" root_component_uuid="ABCD" root_snapshot_id="101" parent_snapshot_id="101"
scope="FIL" qualifier="CLA" path="101." depth="1"
purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]"
period2_mode="[null]" period2_param="[null]" period2_date="[null]" period3_mode="[null]"
created_at="1229727600000" build_date="1229727600000"
version="1.0" status="P" islast="[true]"/>
- <snapshots id="103" component_uuid="CDEF" root_component_uuid="ABCD" root_snapshot_id="101" parent_snapshot_id="102"
+ <snapshots id="103"
+ uuid="u103"
+ component_uuid="CDEF" root_component_uuid="ABCD" root_snapshot_id="101" parent_snapshot_id="102"
scope="FIL" qualifier="CLA" path="101.102." depth="2"
purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]"
period2_mode="[null]" period2_param="[null]" period2_date="[null]" period3_mode="[null]"
created_at="1229727600000" build_date="1229727600000"
version="1.0" status="P" islast="[true]"/>
- <snapshots id="104" component_uuid="DEFG" root_component_uuid="ABCD" root_snapshot_id="101" parent_snapshot_id="102"
+ <snapshots id="104"
+ uuid="u104"
+ component_uuid="DEFG" root_component_uuid="ABCD" root_snapshot_id="101" parent_snapshot_id="102"
scope="FIL" qualifier="CLA" path="101.102." depth="2"
purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]"
period2_mode="[null]" period2_param="[null]" period2_date="[null]" period3_mode="[null]"
id="1" root_uuid="UUID_JAVA_PROJECT" uuid="UUID_JAVA_PROJECT"
description="[null]" enabled="[true]" language="[null]" />
- <snapshots id="101" component_uuid="UUID_JAVA_PROJECT" root_component_uuid="UUID_JAVA_PROJECT"
+ <snapshots id="101"
+ uuid="u101"
+ component_uuid="UUID_JAVA_PROJECT" root_component_uuid="UUID_JAVA_PROJECT"
root_snapshot_id="[null]" parent_snapshot_id="[null]"
scope="PRJ" qualifier="TRK" path="" depth="0"
purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]"
id="1" root_uuid="UUID_JAVA_PROJECT" uuid="UUID_JAVA_PROJECT"
description="[null]" enabled="[true]" language="[null]"/>
- <snapshots id="101" component_uuid="UUID_JAVA_PROJECT" root_component_uuid="UUID_JAVA_PROJECT"
+ <snapshots id="101"
+ uuid="u101"
+ component_uuid="UUID_JAVA_PROJECT" root_component_uuid="UUID_JAVA_PROJECT"
root_snapshot_id="[null]" parent_snapshot_id="[null]"
scope="PRJ" qualifier="TRK" path="" depth="0"
purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]"
description="[null]" enabled="[true]" language="java"
created_at="2008-12-19 00:00:00.00"/>
- <snapshots id="101" component_uuid="UUID_JAVA_PROJECT" root_component_uuid="UUID_JAVA_PROJECT"
+ <snapshots id="101"
+ uuid="u101"
+ component_uuid="UUID_JAVA_PROJECT" root_component_uuid="UUID_JAVA_PROJECT"
root_snapshot_id="[null]" parent_snapshot_id="[null]"
scope="PRJ" qualifier="TRK" path="" depth="0"
purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]"
created_at="1229727600000" build_date="1229727600000"
version="1.0" status="P" islast="[true]"/>
- <snapshots id="102" component_uuid="BCDE" root_component_uuid="UUID_JAVA_PROJECT" root_snapshot_id="101"
+ <snapshots id="102"
+ uuid="u102"
+ component_uuid="BCDE" root_component_uuid="UUID_JAVA_PROJECT" root_snapshot_id="101"
parent_snapshot_id="101"
scope="DIR" qualifier="PAC" path="101." depth="1"
purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]"
created_at="1229727600000" build_date="1229727600000"
version="1.0" status="P" islast="[true]"/>
- <snapshots id="103" component_uuid="CDEF" root_component_uuid="UUID_JAVA_PROJECT" root_snapshot_id="101"
+ <snapshots id="103"
+ uuid="u103"
+ component_uuid="CDEF" root_component_uuid="UUID_JAVA_PROJECT" root_snapshot_id="101"
parent_snapshot_id="102"
scope="FIL" qualifier="CLA" path="101.102." depth="2"
purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]"
created_at="1229727600000" build_date="1229727600000"
version="1.0" status="P" islast="[true]"/>
- <snapshots id="104" component_uuid="DEFG" root_component_uuid="UUID_JAVA_PROJECT" root_snapshot_id="101"
+ <snapshots id="104"
+ uuid="u104"
+ component_uuid="DEFG" root_component_uuid="UUID_JAVA_PROJECT" root_snapshot_id="101"
parent_snapshot_id="102"
scope="FIL" qualifier="CLA" path="101.102." depth="2"
purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]"
created_at="2012-12-12 04:06:00.00"/>
- <snapshots id="110" component_uuid="UUID_PHP_PROJECT" root_component_uuid="UUID_PHP_PROJECT" root_snapshot_id="[null]"
+ <snapshots id="110"
+ uuid="u110"
+ component_uuid="UUID_PHP_PROJECT" root_component_uuid="UUID_PHP_PROJECT" root_snapshot_id="[null]"
parent_snapshot_id="[null]"
scope="PRJ" qualifier="TRK" path="" depth="0"
purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]"
description="[null]" enabled="[true]" language="[null]"
created_at="2008-12-19 00:00:00.00"/>
- <snapshots id="101" component_uuid="UUID_JAVA_PROJECT" root_component_uuid="UUID_JAVA_PROJECT"
+ <snapshots id="101"
+ uuid="u101"
+ component_uuid="UUID_JAVA_PROJECT" root_component_uuid="UUID_JAVA_PROJECT"
root_snapshot_id="[null]" parent_snapshot_id="[null]"
scope="PRJ" qualifier="TRK" path="" depth="0"
purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]"
created_at="2012-12-12 04:06:00.00"/>
- <snapshots id="110" component_uuid="UUID_PHP_PROJECT" root_component_uuid="UUID_PHP_PROJECT" root_snapshot_id="[null]"
+ <snapshots id="110"
+ uuid="u110"
+ component_uuid="UUID_PHP_PROJECT" root_component_uuid="UUID_PHP_PROJECT" root_snapshot_id="[null]"
parent_snapshot_id="[null]"
scope="PRJ" qualifier="TRK" path="" depth="0"
purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]"
created_at="2012-12-12 04:06:00.00"/>
- <snapshots id="120" component_uuid="CDEF" root_component_uuid="CDEF" root_snapshot_id="[null]" parent_snapshot_id="[null]"
+ <snapshots id="120"
+ uuid="u120"
+ component_uuid="CDEF" root_component_uuid="CDEF" root_snapshot_id="[null]" parent_snapshot_id="[null]"
scope="PRJ" qualifier="TRK" path="" depth="0"
purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]"
period2_mode="[null]" period2_param="[null]" period2_date="[null]" period3_mode="[null]"
uuid="JKLM" root_uuid="JKLM" project_uuid="JKLM" module_uuid="[null]" module_uuid_path="."
enabled="[true]" path="[null]"/>
- <snapshots id="100" component_uuid="JKLM" parent_snapshot_id="[null]" root_component_uuid="JKLM" root_snapshot_id="[null]"
+ <snapshots id="100"
+ uuid="u100"
+ component_uuid="JKLM" parent_snapshot_id="[null]" root_component_uuid="JKLM" root_snapshot_id="[null]"
status="P" islast="[true]" purge_status="[null]"
depth="[null]" scope="PRJ" qualifier="TRK" version="[null]" path=""/>
<!-- Simple View -->
<projects id="10" uuid="ABCD" root_uuid="ABCD" project_uuid="ABCD" module_uuid="[null]" module_uuid_path="." copy_component_uuid="[null]" enabled="[true]"
kee="MASTER_PROJECT" scope="PRJ" qualifier="VW" name="All projects" path="[null]"/>
- <snapshots id="10" component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
+ <snapshots id="10"
+ uuid="u10"
+ component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
status="P" islast="[true]" purge_status="[null]"
depth="[null]" scope="PRJ" qualifier="VW" created_at="1228222680000" build_date="1228222680000"
version="[null]" path=""/>
<projects id="110" uuid="BCDE" root_uuid="ABCD" project_uuid="ABCD" module_uuid="ABCD" module_uuid_path=".ABCD." copy_component_uuid="JKLM" enabled="[true]"
kee="MASTER_PROJECTorg.struts:struts" scope="FIL" qualifier="TRK" name="Struts" path="[null]"/>
- <snapshots id="110" component_uuid="BCDE" parent_snapshot_id="[null]" root_component_uuid="BCDE" root_snapshot_id="[null]"
+ <snapshots id="110"
+ uuid="u110"
+ component_uuid="BCDE" parent_snapshot_id="[null]" root_component_uuid="BCDE" root_snapshot_id="[null]"
status="P" islast="[true]" purge_status="[null]"
depth="[null]" scope="PRJ" qualifier="TRK" created_at="1228222680000" build_date="1228222680000"
version="[null]" path=""/>
<!-- View with sub view -->
<projects id="11" uuid="EFGH" root_uuid="EFGH" project_uuid="EFGH" module_uuid="[null]" module_uuid_path="." copy_component_uuid="[null]" enabled="[true]"
kee="LANGUAGE_VIEW" scope="PRJ" qualifier="VW" name="By Language" path="[null]"/>
- <snapshots id="11" component_uuid="EFGH" parent_snapshot_id="[null]" root_component_uuid="EFGH" root_snapshot_id="[null]"
+ <snapshots id="11"
+ uuid="u11"
+ component_uuid="EFGH" parent_snapshot_id="[null]" root_component_uuid="EFGH" root_snapshot_id="[null]"
status="P" islast="[true]" purge_status="[null]"
depth="[null]" scope="PRJ" qualifier="VW" created_at="1228222680000" build_date="1228222680000"
version="[null]" path=""/>
<projects id="112" uuid="GHIJ" root_uuid="EFGH" project_uuid="EFGH" module_uuid="EFGH" module_uuid_path=".EFGH." copy_component_uuid="KLMN" enabled="[true]"
kee="VIEW2org.elasticsearch:elasticsearch" scope="FIL" qualifier="TRK" name="SSLR" path="[null]"/>
- <snapshots id="112" component_uuid="GHIJ" parent_snapshot_id="[null]" root_component_uuid="GHIJ" root_snapshot_id="[null]"
+ <snapshots id="112"
+ uuid="u112"
+ component_uuid="GHIJ" parent_snapshot_id="[null]" root_component_uuid="GHIJ" root_snapshot_id="[null]"
status="P" islast="[true]" purge_status="[null]"
depth="[null]" scope="PRJ" qualifier="TRK" created_at="1228222680000" build_date="1228222680000"
version="[null]" path=""/>
<!-- Sub view -->
<projects id="13" uuid="FGHI" root_uuid="EFGH" project_uuid="EFGH" module_uuid="EFGH" module_uuid_path=".EFGH." copy_component_uuid="[null]" enabled="[true]"
kee="JAVA_PROJECTS" scope="PRJ" qualifier="SVW" name="Java projects" path="[null]"/>
- <snapshots id="13" component_uuid="FGHI" parent_snapshot_id="[null]" root_component_uuid="FGHI" root_snapshot_id="[null]"
+ <snapshots id="13"
+ uuid="u13"
+ component_uuid="FGHI" parent_snapshot_id="[null]" root_component_uuid="FGHI" root_snapshot_id="[null]"
status="P" islast="[true]" purge_status="[null]"
depth="[null]" scope="PRJ" qualifier="SVW" created_at="1228222680000" build_date="1228222680000"
version="[null]" path=""/>
<projects id="113" uuid="HIJK" root_uuid="EFGH" project_uuid="EFGH" module_uuid="FGHI" module_uuid_path=".EFGH.FGHI." copy_component_uuid="JKLM" enabled="[true]"
kee="VIEW2org.struts:struts" scope="FIL" qualifier="TRK" name="Struts" path="[null]"/>
- <snapshots id="113" component_uuid="HIJK" parent_snapshot_id="[null]" root_component_uuid="HIJK" root_snapshot_id="[null]"
+ <snapshots id="113"
+ uuid="u113"
+ component_uuid="HIJK" parent_snapshot_id="[null]" root_component_uuid="HIJK" root_snapshot_id="[null]"
status="P" islast="[true]" purge_status="[null]"
depth="[null]" scope="PRJ" qualifier="TRK" created_at="1228222680000" build_date="1228222680000"
version="[null]" path=""/>
<!-- View without project -->
<projects id="14" uuid="IJKL" root_uuid="IJKL" project_uuid="IJKL" module_uuid="[null]" module_uuid_path="." copy_component_uuid="[null]" enabled="[true]"
kee="OTHER" scope="PRJ" qualifier="VW" name="Other projects" path="[null]"/>
- <snapshots id="14" component_uuid="IJKL" parent_snapshot_id="[null]" root_component_uuid="IJKL" root_snapshot_id="[null]"
+ <snapshots id="14"
+ uuid="u14"
+ component_uuid="IJKL" parent_snapshot_id="[null]" root_component_uuid="IJKL" root_snapshot_id="[null]"
status="P" islast="[true]" purge_status="[null]"
depth="[null]" scope="PRJ" qualifier="VW" created_at="1228222680000" build_date="1228222680000"
version="[null]" path=""/>
<projects id="100" scope="PRJ" qualifier="TRK" kee="org.struts:struts" name="Struts"
uuid="JKLM" root_uuid="JKLM" project_uuid="JKLM" module_uuid="[null]" module_uuid_path="."
enabled="[true]" copy_component_uuid="[null]" path="[null]"/>
- <snapshots id="100" component_uuid="JKLM" parent_snapshot_id="[null]" root_component_uuid="JKLM" root_snapshot_id="[null]"
+ <snapshots id="100"
+ uuid="u100"
+ component_uuid="JKLM" parent_snapshot_id="[null]" root_component_uuid="JKLM" root_snapshot_id="[null]"
status="P" islast="[true]" purge_status="[null]"
depth="[null]" scope="PRJ" qualifier="TRK" created_at="1228222680000" build_date="1228222680000"
version="[null]" path=""/>
<projects id="101" scope="PRJ" qualifier="TRK" kee="org.elasticsearch:elasticsearch" name="Elasticsearch"
uuid="KLMN" root_uuid="KLMN" project_uuid="KLMN" module_uuid="[null]" module_uuid_path="."
enabled="[true]" copy_component_uuid="[null]" path="[null]"/>
- <snapshots id="101" component_uuid="KLMN" parent_snapshot_id="[null]" root_component_uuid="KLMN" root_snapshot_id="[null]"
+ <snapshots id="101"
+ uuid="u101"
+ component_uuid="KLMN" parent_snapshot_id="[null]" root_component_uuid="KLMN" root_snapshot_id="[null]"
status="P" islast="[true]" purge_status="[null]"
depth="[null]" scope="PRJ" qualifier="TRK" created_at="1228222680000" build_date="1228222680000"
version="[null]" path=""/>
--- /dev/null
+#
+# SonarQube, open source software quality management tool.
+# Copyright (C) 2008-2014 SonarSource
+# mailto:contact AT sonarsource DOT com
+#
+# SonarQube is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 3 of the License, or (at your option) any later version.
+#
+# SonarQube is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+
+#
+# SonarQube 6.0
+#
+class AddComponentUuidColumnsToSnapshots < ActiveRecord::Migration
+
+ def self.up
+ execute_java_migration('org.sonar.db.version.v60.AddComponentUuidColumnsToSnapshots')
+ end
+end
+++ /dev/null
-#
-# SonarQube, open source software quality management tool.
-# Copyright (C) 2008-2014 SonarSource
-# mailto:contact AT sonarsource DOT com
-#
-# SonarQube is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 3 of the License, or (at your option) any later version.
-#
-# SonarQube is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#
-
-#
-# SonarQube 6.0
-#
-class AddUuidColumnsToSnapshots < ActiveRecord::Migration
-
- def self.up
- execute_java_migration('org.sonar.db.version.v60.AddUuidColumnsToSnapshots')
- end
-end
--- /dev/null
+#
+# SonarQube, open source software quality management tool.
+# Copyright (C) 2008-2014 SonarSource
+# mailto:contact AT sonarsource DOT com
+#
+# SonarQube is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 3 of the License, or (at your option) any later version.
+#
+# SonarQube is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+
+#
+# SonarQube 6.0
+#
+class PopulateComponentUuidColumnsOfSnapshots < ActiveRecord::Migration
+
+ def self.up
+ execute_java_migration('org.sonar.db.version.v60.PopulateComponentUuidColumnsOfSnapshots')
+ end
+end
+++ /dev/null
-#
-# SonarQube, open source software quality management tool.
-# Copyright (C) 2008-2014 SonarSource
-# mailto:contact AT sonarsource DOT com
-#
-# SonarQube is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 3 of the License, or (at your option) any later version.
-#
-# SonarQube is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#
-
-#
-# SonarQube 6.0
-#
-class PopulateUuidColumnsOfSnapshots < ActiveRecord::Migration
-
- def self.up
- execute_java_migration('org.sonar.db.version.v60.PopulateUuidColumnsOfSnapshots')
- end
-end
--- /dev/null
+#
+# SonarQube, open source software quality management tool.
+# Copyright (C) 2008-2014 SonarSource
+# mailto:contact AT sonarsource DOT com
+#
+# SonarQube is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 3 of the License, or (at your option) any later version.
+#
+# SonarQube is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+
+#
+# SonarQube 6.0
+#
+class MakeComponentUuidColumnsNotNullOnSnapshots < ActiveRecord::Migration
+
+ def self.up
+ execute_java_migration('org.sonar.db.version.v60.MakeComponentUuidColumnsNotNullOnSnapshots')
+
+ add_index :snapshots, :component_uuid, :name => 'snapshot_component'
+ add_index :snapshots, :root_component_uuid, :name => 'snapshot_root_component'
+ end
+end
+++ /dev/null
-#
-# SonarQube, open source software quality management tool.
-# Copyright (C) 2008-2014 SonarSource
-# mailto:contact AT sonarsource DOT com
-#
-# SonarQube is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 3 of the License, or (at your option) any later version.
-#
-# SonarQube is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#
-
-#
-# SonarQube 6.0
-#
-class MakeUuidColumnsNotNullOnSnapshots < ActiveRecord::Migration
-
- def self.up
- execute_java_migration('org.sonar.db.version.v60.MakeUuidColumnsNotNullOnSnapshots')
-
- add_index :snapshots, :component_uuid, :name => 'snapshot_component'
- add_index :snapshots, :root_component_uuid, :name => 'snapshot_root_component'
- end
-end
--- /dev/null
+#
+# SonarQube, open source software quality management tool.
+# Copyright (C) 2008-2014 SonarSource
+# mailto:contact AT sonarsource DOT com
+#
+# SonarQube is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 3 of the License, or (at your option) any later version.
+#
+# SonarQube is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+
+#
+# SonarQube 6.0
+#
+class AddUuidColumnToSnapshots < ActiveRecord::Migration
+
+ def self.up
+ execute_java_migration('org.sonar.db.version.v60.AddUuidColumnToSnapshots')
+ end
+end
--- /dev/null
+#
+# SonarQube, open source software quality management tool.
+# Copyright (C) 2008-2014 SonarSource
+# mailto:contact AT sonarsource DOT com
+#
+# SonarQube is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 3 of the License, or (at your option) any later version.
+#
+# SonarQube is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+
+#
+# SonarQube 6.0
+#
+class PopulateUuidColumnOnSnapshots < ActiveRecord::Migration
+
+ def self.up
+ execute_java_migration('org.sonar.db.version.v60.PopulateUuidColumnOnSnapshots')
+ end
+end
--- /dev/null
+#
+# SonarQube, open source software quality management tool.
+# Copyright (C) 2008-2014 SonarSource
+# mailto:contact AT sonarsource DOT com
+#
+# SonarQube is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 3 of the License, or (at your option) any later version.
+#
+# SonarQube is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+
+#
+# SonarQube 6.0
+#
+class MakeUuidColumnNotNullOnSnapshots < ActiveRecord::Migration
+
+ def self.up
+ execute_java_migration('org.sonar.db.version.v60.MakeUuidColumnNotNullOnSnapshots')
+ end
+end
--- /dev/null
+#
+# SonarQube, open source software quality management tool.
+# Copyright (C) 2008-2014 SonarSource
+# mailto:contact AT sonarsource DOT com
+#
+# SonarQube is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 3 of the License, or (at your option) any later version.
+#
+# SonarQube is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+
+#
+# SonarQube 6.0
+#
+class AddUniqueIndexOnUuidOfSnapshots < ActiveRecord::Migration
+
+ def self.up
+ add_index :snapshots, :uuid, :name => 'analyses_uuid', :unique => true
+ end
+end
private Long id;
private Long parentId;
private Long rootId;
+ private String uuid;
private String rootComponentUuid;
private String componentUuid;
return this;
}
+ public SnapshotDto setUuid(String s) {
+ this.uuid = s;
+ return this;
+ }
+
+ public String getUuid() {
+ return this.uuid;
+ }
+
@CheckForNull
public Long getParentId() {
return parentId;
public class DatabaseVersion {
- public static final int LAST_VERSION = 1_227;
+ public static final int LAST_VERSION = 1_231;
/**
* The minimum supported version which can be upgraded. Lower
import org.sonar.db.version.v56.FixLengthOfIssuesMessageOnOracle;
import org.sonar.db.version.v56.FixTypeOfRuleTypeOnMysql;
import org.sonar.db.version.v60.AddComponentUuidColumnToMeasures;
+import org.sonar.db.version.v60.AddComponentUuidColumnsToSnapshots;
+import org.sonar.db.version.v60.AddUuidColumnToSnapshots;
import org.sonar.db.version.v60.AddUuidColumnsToProjects;
import org.sonar.db.version.v60.AddUuidColumnsToResourceIndex;
-import org.sonar.db.version.v60.AddUuidColumnsToSnapshots;
import org.sonar.db.version.v60.CleanOrphanRowsInProjects;
import org.sonar.db.version.v60.CleanOrphanRowsInResourceIndex;
import org.sonar.db.version.v60.CleanOrphanRowsInSnapshots;
import org.sonar.db.version.v60.DropProjectIdColumnFromMeasures;
import org.sonar.db.version.v60.DropRememberMeColumnsFromUsers;
import org.sonar.db.version.v60.DropUnusedMeasuresColumns;
+import org.sonar.db.version.v60.MakeComponentUuidColumnsNotNullOnSnapshots;
import org.sonar.db.version.v60.MakeComponentUuidNotNullOnMeasures;
+import org.sonar.db.version.v60.MakeUuidColumnNotNullOnSnapshots;
import org.sonar.db.version.v60.MakeUuidColumnsNotNullOnProjects;
import org.sonar.db.version.v60.MakeUuidColumnsNotNullOnResourceIndex;
-import org.sonar.db.version.v60.MakeUuidColumnsNotNullOnSnapshots;
import org.sonar.db.version.v60.PopulateComponentUuidOfMeasures;
+import org.sonar.db.version.v60.PopulateUuidColumnOnSnapshots;
import org.sonar.db.version.v60.PopulateUuidColumnsOfProjects;
import org.sonar.db.version.v60.PopulateUuidColumnsOfResourceIndex;
-import org.sonar.db.version.v60.PopulateUuidColumnsOfSnapshots;
+import org.sonar.db.version.v60.PopulateComponentUuidColumnsOfSnapshots;
public class MigrationStepModule extends Module {
@Override
MakeUuidColumnsNotNullOnResourceIndex.class,
DropIdColumnsFromResourceIndex.class,
DropUnusedMeasuresColumns.class,
- AddUuidColumnsToSnapshots.class,
- PopulateUuidColumnsOfSnapshots.class,
+ AddComponentUuidColumnsToSnapshots.class,
+ PopulateComponentUuidColumnsOfSnapshots.class,
CleanOrphanRowsInSnapshots.class,
- MakeUuidColumnsNotNullOnSnapshots.class,
+ MakeComponentUuidColumnsNotNullOnSnapshots.class,
DropIdColumnsFromSnapshots.class,
AddComponentUuidColumnToMeasures.class,
PopulateComponentUuidOfMeasures.class,
PopulateUuidColumnsOfProjects.class,
CleanOrphanRowsInProjects.class,
MakeUuidColumnsNotNullOnProjects.class,
- DropIdColumnsFromProjects.class);
+ DropIdColumnsFromProjects.class,
+
+ // SNAPSHOTS.UUID
+ AddUuidColumnToSnapshots.class,
+ PopulateUuidColumnOnSnapshots.class,
+ MakeUuidColumnNotNullOnSnapshots.class
+ );
}
}
--- /dev/null
+/*
+ * SonarQube
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.db.version.v60;
+
+import java.sql.SQLException;
+import org.sonar.db.Database;
+import org.sonar.db.version.AddColumnsBuilder;
+import org.sonar.db.version.DdlChange;
+
+import static org.sonar.db.version.VarcharColumnDef.UUID_VARCHAR_SIZE;
+import static org.sonar.db.version.VarcharColumnDef.newVarcharColumnDefBuilder;
+
+public class AddComponentUuidColumnsToSnapshots extends DdlChange {
+
+ private static final String TABLE_SNAPSHOTS = "snapshots";
+
+ public AddComponentUuidColumnsToSnapshots(Database db) {
+ super(db);
+ }
+
+ @Override
+ public void execute(Context context) throws SQLException {
+ context.execute(new AddColumnsBuilder(getDatabase().getDialect(), TABLE_SNAPSHOTS)
+ .addColumn(newVarcharColumnDefBuilder().setColumnName("component_uuid").setLimit(UUID_VARCHAR_SIZE).setIsNullable(true).build())
+ .addColumn(newVarcharColumnDefBuilder().setColumnName("root_component_uuid").setLimit(UUID_VARCHAR_SIZE).setIsNullable(true).build())
+ .build());
+ }
+
+}
--- /dev/null
+/*
+ * SonarQube
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.db.version.v60;
+
+import java.sql.SQLException;
+import org.sonar.db.Database;
+import org.sonar.db.version.AddColumnsBuilder;
+import org.sonar.db.version.DdlChange;
+
+import static org.sonar.db.version.VarcharColumnDef.UUID_VARCHAR_SIZE;
+import static org.sonar.db.version.VarcharColumnDef.newVarcharColumnDefBuilder;
+
+public class AddUuidColumnToSnapshots extends DdlChange {
+
+ private static final String TABLE_SNAPSHOTS = "snapshots";
+
+ public AddUuidColumnToSnapshots(Database db) {
+ super(db);
+ }
+
+ @Override
+ public void execute(Context context) throws SQLException {
+ context.execute(new AddColumnsBuilder(getDialect(), TABLE_SNAPSHOTS)
+ .addColumn(newVarcharColumnDefBuilder().setColumnName("uuid").setLimit(UUID_VARCHAR_SIZE).setIsNullable(true).build())
+ .build());
+ }
+
+}
+++ /dev/null
-/*
- * SonarQube
- * Copyright (C) 2009-2016 SonarSource SA
- * mailto:contact AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.db.version.v60;
-
-import java.sql.SQLException;
-import org.sonar.db.Database;
-import org.sonar.db.version.AddColumnsBuilder;
-import org.sonar.db.version.DdlChange;
-
-import static org.sonar.db.version.VarcharColumnDef.UUID_VARCHAR_SIZE;
-import static org.sonar.db.version.VarcharColumnDef.newVarcharColumnDefBuilder;
-
-public class AddUuidColumnsToSnapshots extends DdlChange {
-
- private static final String TABLE_SNAPSHOTS = "snapshots";
-
- public AddUuidColumnsToSnapshots(Database db) {
- super(db);
- }
-
- @Override
- public void execute(Context context) throws SQLException {
- context.execute(new AddColumnsBuilder(getDatabase().getDialect(), TABLE_SNAPSHOTS)
- .addColumn(newVarcharColumnDefBuilder().setColumnName("component_uuid").setLimit(UUID_VARCHAR_SIZE).setIsNullable(true).build())
- .addColumn(newVarcharColumnDefBuilder().setColumnName("root_component_uuid").setLimit(UUID_VARCHAR_SIZE).setIsNullable(true).build())
- .build());
- }
-
-}
--- /dev/null
+/*
+ * SonarQube
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.db.version.v60;
+
+import java.sql.SQLException;
+import org.sonar.db.Database;
+import org.sonar.db.version.AlterColumnsBuilder;
+import org.sonar.db.version.DdlChange;
+
+import static org.sonar.db.version.VarcharColumnDef.UUID_VARCHAR_SIZE;
+import static org.sonar.db.version.VarcharColumnDef.newVarcharColumnDefBuilder;
+
+public class MakeComponentUuidColumnsNotNullOnSnapshots extends DdlChange {
+
+ private static final String TABLE_SNAPSHOTS = "snapshots";
+
+ public MakeComponentUuidColumnsNotNullOnSnapshots(Database db) {
+ super(db);
+ }
+
+ @Override
+ public void execute(Context context) throws SQLException {
+ context.execute(new AlterColumnsBuilder(getDatabase().getDialect(), TABLE_SNAPSHOTS)
+ .updateColumn(newVarcharColumnDefBuilder().setColumnName("component_uuid").setLimit(UUID_VARCHAR_SIZE).setIsNullable(false).build())
+ .updateColumn(newVarcharColumnDefBuilder().setColumnName("root_component_uuid").setLimit(UUID_VARCHAR_SIZE).setIsNullable(false).build())
+ .build());
+ }
+
+}
--- /dev/null
+/*
+ * SonarQube
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.db.version.v60;
+
+import java.sql.SQLException;
+import org.sonar.db.Database;
+import org.sonar.db.version.AlterColumnsBuilder;
+import org.sonar.db.version.DdlChange;
+
+import static org.sonar.db.version.VarcharColumnDef.UUID_VARCHAR_SIZE;
+import static org.sonar.db.version.VarcharColumnDef.newVarcharColumnDefBuilder;
+
+public class MakeUuidColumnNotNullOnSnapshots extends DdlChange {
+
+ private static final String TABLE_SNAPSHOTS = "snapshots";
+
+ public MakeUuidColumnNotNullOnSnapshots(Database db) {
+ super(db);
+ }
+
+ @Override
+ public void execute(Context context) throws SQLException {
+ context.execute(new AlterColumnsBuilder(getDatabase().getDialect(), TABLE_SNAPSHOTS)
+ .updateColumn(newVarcharColumnDefBuilder().setColumnName("uuid").setLimit(UUID_VARCHAR_SIZE).setIsNullable(false).build())
+ .build());
+ }
+
+}
+++ /dev/null
-/*
- * SonarQube
- * Copyright (C) 2009-2016 SonarSource SA
- * mailto:contact AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.db.version.v60;
-
-import java.sql.SQLException;
-import org.sonar.db.Database;
-import org.sonar.db.version.AlterColumnsBuilder;
-import org.sonar.db.version.DdlChange;
-
-import static org.sonar.db.version.VarcharColumnDef.UUID_VARCHAR_SIZE;
-import static org.sonar.db.version.VarcharColumnDef.newVarcharColumnDefBuilder;
-
-public class MakeUuidColumnsNotNullOnSnapshots extends DdlChange {
-
- private static final String TABLE_SNAPSHOTS = "snapshots";
-
- public MakeUuidColumnsNotNullOnSnapshots(Database db) {
- super(db);
- }
-
- @Override
- public void execute(Context context) throws SQLException {
- context.execute(new AlterColumnsBuilder(getDatabase().getDialect(), TABLE_SNAPSHOTS)
- .updateColumn(newVarcharColumnDefBuilder().setColumnName("component_uuid").setLimit(UUID_VARCHAR_SIZE).setIsNullable(false).build())
- .updateColumn(newVarcharColumnDefBuilder().setColumnName("root_component_uuid").setLimit(UUID_VARCHAR_SIZE).setIsNullable(false).build())
- .build());
- }
-
-}
--- /dev/null
+/*
+ * SonarQube
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.db.version.v60;
+
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.Map;
+import org.sonar.db.Database;
+import org.sonar.db.version.BaseDataChange;
+import org.sonar.db.version.MassUpdate;
+import org.sonar.db.version.Select;
+import org.sonar.db.version.SqlStatement;
+
+public class PopulateComponentUuidColumnsOfSnapshots extends BaseDataChange {
+
+ public PopulateComponentUuidColumnsOfSnapshots(Database db) {
+ super(db);
+ }
+
+ @Override
+ public void execute(Context context) throws SQLException {
+ Map<Long, String> componentUuidById = buildComponentUuidMap(context);
+ if (componentUuidById.isEmpty()) {
+ return;
+ }
+
+ populateUuidColumns(context, componentUuidById);
+ }
+
+ private static Map<Long, String> buildComponentUuidMap(Context context) throws SQLException {
+ Map<Long, String> componentUuidById = new HashMap<>();
+ context.prepareSelect("select distinct p.id, p.uuid from projects p" +
+ " join snapshots sn1 on sn1.project_id = p.id and sn1.component_uuid is null")
+ .scroll(row -> componentUuidById.put(row.getLong(1), row.getString(2)));
+ context.prepareSelect("select distinct p.id, p.uuid from projects p" +
+ " join snapshots sn2 on sn2.root_project_id = p.id and sn2.root_component_uuid is null")
+ .scroll(row -> componentUuidById.put(row.getLong(1), row.getString(2)));
+ return componentUuidById;
+ }
+
+ private void populateUuidColumns(Context context, Map<Long, String> componentUuidById) throws SQLException {
+ MassUpdate massUpdate = context.prepareMassUpdate();
+ massUpdate.select("SELECT sn.id, sn.project_id, sn.root_project_id from snapshots sn where sn.component_uuid is null or sn.root_component_uuid is null");
+ massUpdate.update("UPDATE snapshots SET component_uuid=?, root_component_uuid=? WHERE id=?");
+ massUpdate.rowPluralName("snapshots");
+ massUpdate.execute((row, update) -> this.handle(componentUuidById, row, update));
+ }
+
+ private boolean handle(Map<Long, String> componentUuidById, Select.Row row, SqlStatement update) throws SQLException {
+ long id = row.getLong(1);
+ long componentId = row.getLong(2);
+ long rootProjectId = row.getLong(3);
+
+ String componentUuid = componentUuidById.get(componentId);
+ String rootComponentUuid = componentUuidById.get(rootProjectId);
+
+ if (componentUuid == null && rootComponentUuid == null) {
+ return false;
+ }
+
+ update.setString(1, componentUuid);
+ update.setString(2, rootComponentUuid);
+ update.setLong(3, id);
+
+ return true;
+ }
+
+}
--- /dev/null
+/*
+ * SonarQube
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.db.version.v60;
+
+import java.sql.SQLException;
+import org.sonar.core.util.UuidFactory;
+import org.sonar.db.Database;
+import org.sonar.db.version.BaseDataChange;
+import org.sonar.db.version.MassUpdate;
+import org.sonar.db.version.Select;
+import org.sonar.db.version.SqlStatement;
+
+public class PopulateUuidColumnOnSnapshots extends BaseDataChange {
+
+ private final UuidFactory uuidFactory;
+
+ public PopulateUuidColumnOnSnapshots(Database db, UuidFactory uuidFactory) {
+ super(db);
+ this.uuidFactory = uuidFactory;
+ }
+
+ @Override
+ public void execute(Context context) throws SQLException {
+ MassUpdate massUpdate = context.prepareMassUpdate();
+ massUpdate.select("SELECT s.id from snapshots s where s.uuid is null");
+ massUpdate.update("UPDATE snapshots SET uuid=? WHERE id=?");
+ massUpdate.rowPluralName("snapshots");
+ massUpdate.execute(this::handle);
+ }
+
+ private boolean handle(Select.Row row, SqlStatement update) throws SQLException {
+ long id = row.getLong(1);
+ update.setString(1, uuidFactory.create());
+ update.setLong(2, id);
+ return true;
+ }
+
+}
+++ /dev/null
-/*
- * SonarQube
- * Copyright (C) 2009-2016 SonarSource SA
- * mailto:contact AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.db.version.v60;
-
-import java.sql.SQLException;
-import java.util.HashMap;
-import java.util.Map;
-import org.sonar.db.Database;
-import org.sonar.db.version.BaseDataChange;
-import org.sonar.db.version.MassUpdate;
-import org.sonar.db.version.Select;
-import org.sonar.db.version.SqlStatement;
-
-public class PopulateUuidColumnsOfSnapshots extends BaseDataChange {
-
- public PopulateUuidColumnsOfSnapshots(Database db) {
- super(db);
- }
-
- @Override
- public void execute(Context context) throws SQLException {
- Map<Long, String> componentUuidById = buildComponentUuidMap(context);
- if (componentUuidById.isEmpty()) {
- return;
- }
-
- populateUuidColumns(context, componentUuidById);
- }
-
- private static Map<Long, String> buildComponentUuidMap(Context context) throws SQLException {
- Map<Long, String> componentUuidById = new HashMap<>();
- context.prepareSelect("select distinct p.id, p.uuid from projects p" +
- " join snapshots sn1 on sn1.project_id = p.id and sn1.component_uuid is null")
- .scroll(row -> componentUuidById.put(row.getLong(1), row.getString(2)));
- context.prepareSelect("select distinct p.id, p.uuid from projects p" +
- " join snapshots sn2 on sn2.root_project_id = p.id and sn2.root_component_uuid is null")
- .scroll(row -> componentUuidById.put(row.getLong(1), row.getString(2)));
- return componentUuidById;
- }
-
- private void populateUuidColumns(Context context, Map<Long, String> componentUuidById) throws SQLException {
- MassUpdate massUpdate = context.prepareMassUpdate();
- massUpdate.select("SELECT sn.id, sn.project_id, sn.root_project_id from snapshots sn where sn.component_uuid is null or sn.root_component_uuid is null");
- massUpdate.update("UPDATE snapshots SET component_uuid=?, root_component_uuid=? WHERE id=?");
- massUpdate.rowPluralName("snapshots");
- massUpdate.execute((row, update) -> this.handle(componentUuidById, row, update));
- }
-
- private boolean handle(Map<Long, String> componentUuidById, Select.Row row, SqlStatement update) throws SQLException {
- long id = row.getLong(1);
- long componentId = row.getLong(2);
- long rootProjectId = row.getLong(3);
-
- String componentUuid = componentUuidById.get(componentId);
- String rootComponentUuid = componentUuidById.get(rootProjectId);
-
- if (componentUuid == null && rootComponentUuid == null) {
- return false;
- }
-
- update.setString(1, componentUuid);
- update.setString(2, rootComponentUuid);
- update.setLong(3, id);
-
- return true;
- }
-
-}
<sql id="snapshotColumns">
s.id,
+ s.uuid as uuid,
s.parent_snapshot_id as parentId,
s.root_snapshot_id as rootId,
s.root_component_uuid as rootComponentUuid,
order by created_at desc
</select>
- <sql id="insertColumns">
- (parent_snapshot_id, root_snapshot_id, root_component_uuid, component_uuid, created_at, build_date, status, purge_status,
- islast, scope, qualifier, version, path, depth,
- period1_mode, period2_mode, period3_mode, period4_mode, period5_mode,
- period1_param, period2_param, period3_param, period4_param, period5_param,
- period1_date, period2_date, period3_date, period4_date, period5_date)
- </sql>
<update id="updateSnapshotAndChildrenLastFlagAndStatus" parameterType="map">
update snapshots
</update>
<insert id="insert" parameterType="Snapshot" keyColumn="id" useGeneratedKeys="true" keyProperty="id">
- insert into snapshots
- <include refid="insertColumns"/>
- values (#{parentId}, #{rootId}, #{rootComponentUuid}, #{componentUuid}, #{createdAt}, #{buildDate}, #{status},
- #{purgeStatus}, #{last}, #{scope}, #{qualifier}, #{version}, #{path}, #{depth},
- #{period1Mode}, #{period2Mode}, #{period3Mode}, #{period4Mode}, #{period5Mode},
- #{period1Param}, #{period2Param}, #{period3Param}, #{period4Param}, #{period5Param},
- #{period1Date}, #{period2Date}, #{period3Date}, #{period4Date}, #{period5Date})
+ insert into snapshots (
+ uuid,
+ parent_snapshot_id,
+ root_snapshot_id,
+ root_component_uuid,
+ component_uuid,
+ created_at,
+ build_date,
+ status,
+ purge_status,
+ islast,
+ scope,
+ qualifier,
+ version,
+ path,
+ depth,
+ period1_mode,
+ period2_mode,
+ period3_mode,
+ period4_mode,
+ period5_mode,
+ period1_param,
+ period2_param,
+ period3_param,
+ period4_param,
+ period5_param,
+ period1_date,
+ period2_date,
+ period3_date,
+ period4_date,
+ period5_date)
+ values (
+ #{uuid, jdbcType=VARCHAR},
+ #{parentId, jdbcType=BIGINT},
+ #{rootId, jdbcType=BIGINT},
+ #{rootComponentUuid, jdbcType=VARCHAR},
+ #{componentUuid, jdbcType=VARCHAR},
+ #{createdAt, jdbcType=BIGINT},
+ #{buildDate, jdbcType=BIGINT},
+ #{status, jdbcType=VARCHAR},
+ #{purgeStatus, jdbcType=INTEGER},
+ #{last, jdbcType=BOOLEAN},
+ #{scope, jdbcType=VARCHAR},
+ #{qualifier, jdbcType=VARCHAR},
+ #{version, jdbcType=VARCHAR},
+ #{path, jdbcType=VARCHAR},
+ #{depth, jdbcType=BOOLEAN},
+ #{period1Mode, jdbcType=VARCHAR},
+ #{period2Mode, jdbcType=VARCHAR},
+ #{period3Mode, jdbcType=VARCHAR},
+ #{period4Mode, jdbcType=VARCHAR},
+ #{period5Mode, jdbcType=VARCHAR},
+ #{period1Param, jdbcType=VARCHAR},
+ #{period2Param, jdbcType=VARCHAR},
+ #{period3Param, jdbcType=VARCHAR},
+ #{period4Param, jdbcType=VARCHAR},
+ #{period5Param, jdbcType=VARCHAR},
+ #{period1Date, jdbcType=BIGINT},
+ #{period2Date, jdbcType=BIGINT},
+ #{period3Date, jdbcType=BIGINT},
+ #{period4Date, jdbcType=BIGINT},
+ #{period5Date, jdbcType=BIGINT})
</insert>
</mapper>
INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('1225');
INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('1226');
INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('1227');
+INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('1228');
+INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('1229');
+INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('1230');
+INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('1231');
INSERT INTO USERS(ID, LOGIN, NAME, EMAIL, EXTERNAL_IDENTITY, EXTERNAL_IDENTITY_PROVIDER, USER_LOCAL, CRYPTED_PASSWORD, SALT, CREATED_AT, UPDATED_AT) VALUES (1, 'admin', 'Administrator', '', 'admin', 'sonarqube', true, 'a373a0e667abb2604c1fd571eb4ad47fe8cc0878', '48bc4b0d93179b5103fd3885ea9119498e9d161b', '1418215735482', '1418215735482');
ALTER TABLE USERS ALTER COLUMN ID RESTART WITH 2;
CREATE TABLE "SNAPSHOTS" (
"ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
+ "UUID" VARCHAR(50) NOT NULL,
"CREATED_AT" BIGINT,
"BUILD_DATE" BIGINT,
"COMPONENT_UUID" VARCHAR(50) NOT NULL,
CREATE INDEX "SNAPSHOT_COMPONENT" ON "SNAPSHOTS" ("COMPONENT_UUID");
+CREATE UNIQUE INDEX "ANALYSES_UUID" ON "SNAPSHOTS" ("UUID");
+
CREATE INDEX "RULES_PARAMETERS_RULE_ID" ON "RULES_PARAMETERS" ("RULE_ID");
CREATE INDEX "ACTIVE_DASHBOARDS_DASHBOARDID" ON "ACTIVE_DASHBOARDS" ("DASHBOARD_ID");
ComponentDto project = new ComponentDto().setUuid(ROOT_UUID).setRootUuid(ROOT_UUID).setKey("the_key").setName(longName).setScope(Scopes.PROJECT).setQualifier(Qualifiers.PROJECT);
DbSession session = dbTester.getSession();
dbTester.getDbClient().componentDao().insert(session, project);
- dbTester.getDbClient().snapshotDao().insert(session, new SnapshotDto().setComponentUuid(project.uuid()).setRootComponentUuid(project.uuid()).setLast(true));
+ dbTester.getDbClient().snapshotDao().insert(session, new SnapshotDto()
+ .setUuid("u1")
+ .setComponentUuid(project.uuid())
+ .setRootComponentUuid(project.uuid())
+ .setLast(true));
underTest.indexProject(session, project.uuid());
session.commit();
SnapshotDto result = underTest.selectById(db.getSession(), 3L);
assertThat(result).isNotNull();
assertThat(result.getId()).isEqualTo(3L);
+ assertThat(result.getUuid()).isEqualTo("u3");
assertThat(result.getComponentUuid()).isEqualTo("uuid_3");
assertThat(result.getRootComponentUuid()).isEqualTo("uuid_1");
assertThat(result.getParentId()).isEqualTo(2L);
db.prepareDbUnit(getClass(), "empty.xml");
underTest.insert(db.getSession(),
- new SnapshotDto().setComponentUuid("uuid_1").setRootComponentUuid("uuid_1").setLast(false),
- new SnapshotDto().setComponentUuid("uuid_2").setRootComponentUuid("uuid_1").setLast(false));
+ new SnapshotDto().setComponentUuid("uuid_1").setRootComponentUuid("uuid_1").setLast(false).setUuid("u5"),
+ new SnapshotDto().setComponentUuid("uuid_2").setRootComponentUuid("uuid_1").setLast(false).setUuid("u6"));
db.getSession().commit();
assertThat(db.countRowsOfTable("snapshots")).isEqualTo(2);
private static SnapshotDto defaultSnapshot() {
return new SnapshotDto()
+ .setUuid("u1")
.setComponentUuid("uuid_3")
.setRootComponentUuid("uuid_1")
.setParentId(2L)
*/
package org.sonar.db.component;
+import org.apache.commons.lang.RandomStringUtils;
import org.assertj.core.util.Strings;
import static com.google.common.base.Preconditions.checkNotNull;
checkNotNull(component.getId(), "The project need to be persisted before creating this snapshot");
checkNotNull(rootComponentUuid, "Root component uuid is null");
return new SnapshotDto()
+ .setUuid(RandomStringUtils.randomAlphanumeric(40))
.setComponentUuid(component.uuid())
.setRootComponentUuid(rootComponentUuid)
.setStatus(SnapshotDto.STATUS_PROCESSED)
long otherDeveloperId = 666l;
ComponentDto projectDto = insertProject("aa");
- SnapshotDto snapshotDto = insertSnapshot(projectDto, true);
+ SnapshotDto snapshotDto = insertSnapshot("u1", projectDto, true);
insertMeasure(projectDto, snapshotDto, DEVELOPER_ID, NCLOC_METRIC_ID, 12d);
List<MeasureDto> measureDtos = underTest.selectProjectMeasuresByDeveloperForMetrics(dbSession, DEVELOPER_ID, ImmutableList.of(NCLOC_METRIC_ID));
long otherDeveloperId = 666l;
ComponentDto projectDto = insertProject("aa");
- SnapshotDto nonLastSnapshotDto = insertSnapshot(projectDto, false);
+ SnapshotDto nonLastSnapshotDto = insertSnapshot("u1", projectDto, false);
insertMeasure(projectDto, nonLastSnapshotDto, DEVELOPER_ID, NCLOC_METRIC_ID, 12d);
- SnapshotDto lastSnapshotDto = insertSnapshot(projectDto, true);
+ SnapshotDto lastSnapshotDto = insertSnapshot("u2", projectDto, true);
insertMeasure(projectDto, lastSnapshotDto, otherDeveloperId, NCLOC_METRIC_ID, 15d);
assertThat(underTest.selectProjectMeasuresByDeveloperForMetrics(dbSession, DEVELOPER_ID, ImmutableList.of(NCLOC_METRIC_ID))).hasSize(0);
@Test
public void selectProjectMeasuresByDeveloperForMetrics_returns_ignores_snapshots_of_any_component_but_project() {
ComponentDto projectDto = insertProject("aa");
- insertSnapshot(projectDto, true);
+ insertSnapshot("u1", projectDto, true);
ComponentDto moduleDto = insertComponent(ComponentTesting.newModuleDto(projectDto));
- insertMeasure(moduleDto, insertSnapshot(moduleDto, true), DEVELOPER_ID, NCLOC_METRIC_ID, 15d);
+ insertMeasure(moduleDto, insertSnapshot("u2", moduleDto, true), DEVELOPER_ID, NCLOC_METRIC_ID, 15d);
ComponentDto dirDto = insertComponent(ComponentTesting.newDirectory(moduleDto, "toto"));
- insertMeasure(dirDto, insertSnapshot(dirDto, true), DEVELOPER_ID, NCLOC_METRIC_ID, 25d);
+ insertMeasure(dirDto, insertSnapshot("u3", dirDto, true), DEVELOPER_ID, NCLOC_METRIC_ID, 25d);
ComponentDto fileDto = insertComponent(ComponentTesting.newFileDto(moduleDto, "tutu"));
- insertMeasure(fileDto, insertSnapshot(fileDto, true), DEVELOPER_ID, NCLOC_METRIC_ID, 35d);
+ insertMeasure(fileDto, insertSnapshot("u4", fileDto, true), DEVELOPER_ID, NCLOC_METRIC_ID, 35d);
assertThat(underTest.selectProjectMeasuresByDeveloperForMetrics(dbSession, DEVELOPER_ID, ImmutableList.of(NCLOC_METRIC_ID))).isEmpty();
}
return insertComponent(projectDto);
}
- private SnapshotDto insertSnapshot(ComponentDto componentDto, boolean last) {
- SnapshotDto snapshotDto = new SnapshotDto().setComponentUuid(componentDto.uuid()).setRootComponentUuid(componentDto.projectUuid())
- .setLast(last).setQualifier(componentDto.qualifier()).setScope(componentDto.scope());
+ private SnapshotDto insertSnapshot(String uuid, ComponentDto componentDto, boolean last) {
+ SnapshotDto snapshotDto = new SnapshotDto()
+ .setUuid(uuid)
+ .setComponentUuid(componentDto.uuid())
+ .setRootComponentUuid(componentDto.projectUuid())
+ .setLast(last)
+ .setQualifier(componentDto.qualifier()).setScope(componentDto.scope());
dbClient.snapshotDao().insert(dbSession, snapshotDto);
dbSession.commit();
return snapshotDto;
public void verify_count_of_added_MigrationStep_types() {
ComponentContainer container = new ComponentContainer();
new MigrationStepModule().configure(container);
- assertThat(container.size()).isEqualTo(87);
+ assertThat(container.size()).isEqualTo(90);
}
}
--- /dev/null
+/*
+ * SonarQube
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.db.version.v60;
+
+import java.sql.SQLException;
+import java.sql.Types;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.sonar.api.utils.System2;
+import org.sonar.db.DbTester;
+
+import static java.lang.String.valueOf;
+
+public class AddComponentUuidColumnsToSnapshotsTest {
+
+ private static final String SNAPSHOTS_TABLE = "snapshots";
+
+ @Rule
+ public DbTester db = DbTester.createForSchema(System2.INSTANCE, AddComponentUuidColumnsToSnapshotsTest.class, "old_snapshots.sql");
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
+ private AddComponentUuidColumnsToSnapshots underTest = new AddComponentUuidColumnsToSnapshots(db.database());
+
+ @Test
+ public void migration_adds_columns_to_empty_table() throws SQLException {
+ underTest.execute();
+
+ verifyAddedColumns();
+ }
+
+ @Test
+ public void migration_adds_columns_to_populated_table() throws SQLException {
+ for (int i = 0; i < 9; i++) {
+ db.executeInsert(
+ SNAPSHOTS_TABLE,
+ "PROJECT_ID", valueOf(i),
+ "ISLAST", "TRUE");
+ }
+ db.commit();
+
+ underTest.execute();
+
+ verifyAddedColumns();
+ }
+
+ private void verifyAddedColumns() {
+ db.assertColumnDefinition(SNAPSHOTS_TABLE, "component_uuid", Types.VARCHAR, 50, true);
+ db.assertColumnDefinition(SNAPSHOTS_TABLE, "root_component_uuid", Types.VARCHAR, 50, true);
+ }
+
+ @Test
+ public void migration_is_not_reentrant() throws SQLException {
+ underTest.execute();
+
+ expectedException.expect(IllegalStateException.class);
+ expectedException.expectMessage("Fail to execute ");
+ underTest.execute();
+ }
+}
--- /dev/null
+/*
+ * SonarQube
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.db.version.v60;
+
+import java.sql.SQLException;
+import java.sql.Types;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.sonar.api.utils.System2;
+import org.sonar.db.DbTester;
+
+import static java.lang.String.valueOf;
+
+
+public class AddUuidColumnToSnapshotsTest {
+ @Rule
+ public DbTester db = DbTester.createForSchema(System2.INSTANCE, AddUuidColumnToSnapshotsTest.class, "old_snapshots.sql");
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
+ private AddUuidColumnToSnapshots underTest = new AddUuidColumnToSnapshots(db.database());
+
+ @Test
+ public void migration_adds_columns_to_empty_table() throws SQLException {
+ underTest.execute();
+
+ verifyAddedColumns();
+ }
+
+ @Test
+ public void migration_adds_column_to_populated_table() throws SQLException {
+ for (int i = 0; i < 9; i++) {
+ db.executeInsert(
+ "snapshots",
+ "component_uuid", valueOf(i),
+ "root_component_uuid", valueOf(i + 10),
+ "QUALIFIER", (i % 2 == 0 ? "FIL" : "TRK"));
+ }
+ db.commit();
+
+ underTest.execute();
+
+ verifyAddedColumns();
+ }
+
+ @Test
+ public void migration_is_not_reentrant() throws SQLException {
+ underTest.execute();
+
+ expectedException.expect(IllegalStateException.class);
+ expectedException.expectMessage("Fail to execute ");
+ underTest.execute();
+ }
+
+ private void verifyAddedColumns() {
+ db.assertColumnDefinition("snapshots", "uuid", Types.VARCHAR, 50, true);
+ }
+
+}
+++ /dev/null
-/*
- * SonarQube
- * Copyright (C) 2009-2016 SonarSource SA
- * mailto:contact AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.db.version.v60;
-
-import java.sql.SQLException;
-import java.sql.Types;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.sonar.api.utils.System2;
-import org.sonar.db.DbTester;
-
-import static java.lang.String.valueOf;
-
-public class AddUuidColumnsToSnapshotsTest {
-
- private static final String SNAPSHOTS_TABLE = "snapshots";
-
- @Rule
- public DbTester db = DbTester.createForSchema(System2.INSTANCE, AddUuidColumnsToSnapshotsTest.class, "old_snapshots.sql");
- @Rule
- public ExpectedException expectedException = ExpectedException.none();
-
- private AddUuidColumnsToSnapshots underTest = new AddUuidColumnsToSnapshots(db.database());
-
- @Test
- public void migration_adds_columns_to_empty_table() throws SQLException {
- underTest.execute();
-
- verifyAddedColumns();
- }
-
- @Test
- public void migration_adds_columns_to_populated_table() throws SQLException {
- for (int i = 0; i < 9; i++) {
- db.executeInsert(
- SNAPSHOTS_TABLE,
- "PROJECT_ID", valueOf(i),
- "ISLAST", "TRUE");
- }
- db.commit();
-
- underTest.execute();
-
- verifyAddedColumns();
- }
-
- private void verifyAddedColumns() {
- db.assertColumnDefinition(SNAPSHOTS_TABLE, "component_uuid", Types.VARCHAR, 50, true);
- db.assertColumnDefinition(SNAPSHOTS_TABLE, "root_component_uuid", Types.VARCHAR, 50, true);
- }
-
- @Test
- public void migration_is_not_reentrant() throws SQLException {
- underTest.execute();
-
- expectedException.expect(IllegalStateException.class);
- expectedException.expectMessage("Fail to execute ");
- underTest.execute();
- }
-}
--- /dev/null
+/*
+ * SonarQube
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.db.version.v60;
+
+import java.sql.SQLException;
+import java.sql.Types;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.sonar.api.utils.System2;
+import org.sonar.db.DbTester;
+
+import static java.lang.String.valueOf;
+
+public class MakeComponentUuidColumnsNotNullOnSnapshotsTest {
+
+ private static final String SNAPSHOTS_TABLE = "snapshots";
+
+ @Rule
+ public DbTester db = DbTester.createForSchema(System2.INSTANCE, MakeComponentUuidColumnsNotNullOnSnapshotsTest.class,
+ "in_progress_snapshots.sql");
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
+ private MakeComponentUuidColumnsNotNullOnSnapshots underTest = new MakeComponentUuidColumnsNotNullOnSnapshots(db.database());
+
+ @Test
+ public void migration_sets_uuid_columns_not_nullable_on_empty_table() throws SQLException {
+ underTest.execute();
+
+ verifyColumnDefinitions();
+ }
+
+ @Test
+ public void migration_sets_uuid_columns_not_nullable_on_populated_table() throws SQLException {
+ insertSnapshots(1, true, true);
+ insertSnapshots(2, true, true);
+
+ underTest.execute();
+
+ verifyColumnDefinitions();
+ }
+
+ @Test
+ public void migration_fails_if_some_uuid_columns_are_null() throws SQLException {
+ insertSnapshots(1, false, true);
+
+ expectedException.expect(IllegalStateException.class);
+ expectedException.expectMessage("Fail to execute");
+
+ underTest.execute();
+ }
+
+ private void verifyColumnDefinitions() {
+ db.assertColumnDefinition(SNAPSHOTS_TABLE, "component_uuid", Types.VARCHAR, 50, false);
+ db.assertColumnDefinition(SNAPSHOTS_TABLE, "root_component_uuid", Types.VARCHAR, 50, false);
+ }
+
+ private void insertSnapshots(long id, boolean hasComponentUiid, boolean hasRootComponentUuid) {
+ db.executeInsert(
+ SNAPSHOTS_TABLE,
+ "ID", valueOf(id),
+ "ISLAST", "TRUE",
+ "PROJECT_ID", valueOf(id + 300),
+ "COMPONENT_UUID", hasComponentUiid ? "uuid_" + id : null,
+ "ROOT_COMPONENT_UUID", hasRootComponentUuid ? "root_uuid_" + id : null);
+ }
+
+}
--- /dev/null
+/*
+ * SonarQube
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.db.version.v60;
+
+import java.sql.SQLException;
+import java.sql.Types;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.sonar.api.utils.System2;
+import org.sonar.db.DbTester;
+
+import static java.lang.String.valueOf;
+
+
+public class MakeUuidColumnNotNullOnSnapshotsTest {
+
+ private static final String TABLE_SNAPSHOTS = "snapshots";
+
+ @Rule
+ public DbTester db = DbTester.createForSchema(System2.INSTANCE, MakeUuidColumnNotNullOnSnapshotsTest.class,
+ "in_progress_snapshots.sql");
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
+ private MakeUuidColumnNotNullOnSnapshots underTest = new MakeUuidColumnNotNullOnSnapshots(db.database());
+
+ @Test
+ public void migration_sets_uuid_column_not_nullable_on_empty_table() throws SQLException {
+ underTest.execute();
+
+ verifyColumnDefinitions();
+ }
+
+ @Test
+ public void migration_sets_uuid_column_not_nullable_on_populated_table() throws SQLException {
+ insertSnapshot(1, true);
+ insertSnapshot(2, true);
+
+ underTest.execute();
+
+ verifyColumnDefinitions();
+ }
+
+ @Test
+ public void migration_fails_if_some_row_has_a_null_uuid() throws SQLException {
+ insertSnapshot(1, false);
+
+ expectedException.expect(IllegalStateException.class);
+ expectedException.expectMessage("Fail to execute");
+
+ underTest.execute();
+ }
+
+
+ private void verifyColumnDefinitions() {
+ db.assertColumnDefinition(TABLE_SNAPSHOTS, "uuid", Types.VARCHAR, 50, false);
+ }
+
+ private String insertSnapshot(long id, boolean hasUuid) {
+ String uuid = "uuid_" + id;
+ db.executeInsert(
+ TABLE_SNAPSHOTS,
+ "ID", valueOf(id),
+ "COMPONENT_UUID", valueOf(id + 10),
+ "ROOT_COMPONENT_UUID", valueOf(id + 100),
+ "UUID", hasUuid ? "uuid_" + id : null);
+ return uuid;
+ }
+
+}
+++ /dev/null
-/*
- * SonarQube
- * Copyright (C) 2009-2016 SonarSource SA
- * mailto:contact AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.db.version.v60;
-
-import java.sql.SQLException;
-import java.sql.Types;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.sonar.api.utils.System2;
-import org.sonar.db.DbTester;
-
-import static java.lang.String.valueOf;
-
-public class MakeUuidColumnsNotNullOnSnapshotsTest {
-
- private static final String SNAPSHOTS_TABLE = "snapshots";
-
- @Rule
- public DbTester db = DbTester.createForSchema(System2.INSTANCE, MakeUuidColumnsNotNullOnSnapshotsTest.class,
- "in_progress_snapshots.sql");
- @Rule
- public ExpectedException expectedException = ExpectedException.none();
-
- private MakeUuidColumnsNotNullOnSnapshots underTest = new MakeUuidColumnsNotNullOnSnapshots(db.database());
-
- @Test
- public void migration_sets_uuid_columns_not_nullable_on_empty_table() throws SQLException {
- underTest.execute();
-
- verifyColumnDefinitions();
- }
-
- @Test
- public void migration_sets_uuid_columns_not_nullable_on_populated_table() throws SQLException {
- insertSnapshots(1, true, true);
- insertSnapshots(2, true, true);
-
- underTest.execute();
-
- verifyColumnDefinitions();
- }
-
- @Test
- public void migration_fails_if_some_uuid_columns_are_null() throws SQLException {
- insertSnapshots(1, false, true);
-
- expectedException.expect(IllegalStateException.class);
- expectedException.expectMessage("Fail to execute");
-
- underTest.execute();
- }
-
- private void verifyColumnDefinitions() {
- db.assertColumnDefinition(SNAPSHOTS_TABLE, "component_uuid", Types.VARCHAR, 50, false);
- db.assertColumnDefinition(SNAPSHOTS_TABLE, "root_component_uuid", Types.VARCHAR, 50, false);
- }
-
- private void insertSnapshots(long id, boolean hasComponentUiid, boolean hasRootComponentUuid) {
- db.executeInsert(
- SNAPSHOTS_TABLE,
- "ID", valueOf(id),
- "ISLAST", "TRUE",
- "PROJECT_ID", valueOf(id + 300),
- "COMPONENT_UUID", hasComponentUiid ? "uuid_" + id : null,
- "ROOT_COMPONENT_UUID", hasRootComponentUuid ? "root_uuid_" + id : null);
- }
-
-}
--- /dev/null
+/*
+ * SonarQube
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.db.version.v60;
+
+import java.sql.SQLException;
+import java.util.List;
+import java.util.Map;
+import javax.annotation.Nullable;
+import org.junit.Rule;
+import org.junit.Test;
+import org.sonar.api.utils.System2;
+import org.sonar.db.DbTester;
+
+import static java.lang.String.valueOf;
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class PopulateComponentUuidColumnsOfSnapshotsTest {
+
+ private static final String SNAPSHOTS_TABLE = "snapshots";
+
+ @Rule
+ public DbTester db = DbTester.createForSchema(System2.INSTANCE, PopulateComponentUuidColumnsOfSnapshotsTest.class,
+ "in_progress_snapshots_with_projects.sql");
+
+ private PopulateComponentUuidColumnsOfSnapshots underTest = new PopulateComponentUuidColumnsOfSnapshots(db.database());
+
+ @Test
+ public void migration_has_no_effect_on_empty_tables() throws SQLException {
+ underTest.execute();
+
+ assertThat(db.countRowsOfTable(SNAPSHOTS_TABLE)).isEqualTo(0);
+ assertThat(db.countRowsOfTable("projects")).isEqualTo(0);
+ }
+
+ @Test
+ public void migration_updates_uuid_columns_with_values_from_table_projects_when_they_exist() throws SQLException {
+ String uuid1 = insertComponent(40);
+ String uuid2 = insertComponent(50);
+ String uuid3 = insertComponent(60);
+ String uuid4 = insertComponent(70);
+ String uuid5 = insertComponent(80);
+
+ insertSnapshots(1, 40, 50L);
+ insertSnapshots(2, 60, 70L);
+ insertSnapshots(3, 90, 70L); // 90 does not exist
+ insertSnapshots(4, 40, 100L); // 100 does not exist
+ insertSnapshots(5, 110, 100L); // 110 and 100 do not exist
+ insertSnapshots(6, 80, null); // no root
+ insertSnapshots(7, 120, null); // no root and 120 does not exist
+ db.commit();
+
+ underTest.execute();
+
+ verifySnapshots(1, 40, uuid1, 50L, uuid2);
+ verifySnapshots(2, 60, uuid3, 70L, uuid4);
+ verifySnapshots(3, 90, null, 70L, uuid4);
+ verifySnapshots(4, 40, uuid1, 100L, null);
+ verifySnapshots(5, 110, null, 100L, null);
+ verifySnapshots(6, 80, uuid5, null, null);
+ verifySnapshots(7, 120, null, null, null);
+ }
+
+ @Test
+ public void migration_is_reentrant() throws SQLException {
+ String uuid1 = insertComponent(40);
+ String uuid2 = insertComponent(50);
+ insertSnapshots(1, 40, 50L);
+
+ underTest.execute();
+ verifySnapshots(1, 40, uuid1, 50L, uuid2);
+
+ underTest.execute();
+ verifySnapshots(1, 40, uuid1, 50L, uuid2);
+ }
+
+ private void insertSnapshots(long id, long projectId, @Nullable Long rootId) {
+ db.executeInsert(
+ SNAPSHOTS_TABLE,
+ "ID", valueOf(id),
+ "ISLAST", "TRUE",
+ "PROJECT_ID", valueOf(projectId),
+ "ROOT_PROJECT_ID", rootId == null ? null : valueOf(rootId));
+ }
+
+ private String insertComponent(long id) {
+ String uuid = "uuid_" + id;
+ db.executeInsert(
+ "projects",
+ "ID", valueOf(id),
+ "UUID", uuid);
+ return uuid;
+ }
+
+ private void verifySnapshots(long id, long resourceId, @Nullable String componentUuid, @Nullable Long rootProjectId, @Nullable String rootComponentUuid) {
+ List<Map<String, Object>> rows = db.select("select PROJECT_ID, COMPONENT_UUID, ROOT_PROJECT_ID, ROOT_COMPONENT_UUID from snapshots where ID=" + id);
+ assertThat(rows).hasSize(1);
+ Map<String, Object> row = rows.get(0);
+ assertThat(row.get("PROJECT_ID")).isEqualTo(resourceId);
+ assertThat(row.get("COMPONENT_UUID")).isEqualTo(componentUuid);
+ assertThat(row.get("ROOT_PROJECT_ID")).isEqualTo(rootProjectId);
+ assertThat(row.get("ROOT_COMPONENT_UUID")).isEqualTo(rootComponentUuid);
+ }
+
+}
--- /dev/null
+/*
+ * SonarQube
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.db.version.v60;
+
+import java.sql.SQLException;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+import org.apache.commons.lang.StringUtils;
+import org.junit.Rule;
+import org.junit.Test;
+import org.sonar.api.utils.System2;
+import org.sonar.core.util.UuidFactoryImpl;
+import org.sonar.db.DbTester;
+
+import static java.lang.String.valueOf;
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class PopulateUuidColumnOnSnapshotsTest {
+
+ private static final String TABLE_SNAPSHOTS = "snapshots";
+
+ @Rule
+ public DbTester db = DbTester.createForSchema(System2.INSTANCE, PopulateUuidColumnOnSnapshotsTest.class,
+ "in_progress_snapshots.sql");
+
+ private PopulateUuidColumnOnSnapshots underTest = new PopulateUuidColumnOnSnapshots(db.database(), UuidFactoryImpl.INSTANCE);
+
+ @Test
+ public void migration_has_no_effect_on_empty_tables() throws SQLException {
+ underTest.execute();
+
+ assertThat(db.countRowsOfTable(TABLE_SNAPSHOTS)).isEqualTo(0);
+ }
+
+ @Test
+ public void migration_generates_uuids() throws SQLException {
+ insertSnapshot(1);
+ insertSnapshot(2);
+ insertSnapshot(3);
+ db.commit();
+
+ underTest.execute();
+
+ verifyUuids(3);
+ }
+
+ private void verifyUuids(int expectedCount) {
+ List<Map<String, Object>> rows = db.select("select uuid from snapshots where uuid is not null");
+ Set<Object> uuids = rows.stream().map(cols -> cols.get("UUID")).filter(uuid -> StringUtils.isNotBlank((String) uuid)).collect(Collectors.toSet());
+ assertThat(uuids).hasSize(expectedCount);
+ }
+
+ @Test
+ public void migration_is_reentrant() throws SQLException {
+ insertSnapshot(1);
+
+ underTest.execute();
+ verifyUuids(1);
+
+ underTest.execute();
+ verifyUuids(1);
+ }
+
+ private String insertSnapshot(long id) {
+ String uuid = "uuid_" + id;
+ db.executeInsert(
+ TABLE_SNAPSHOTS,
+ "ID", valueOf(id),
+ "COMPONENT_UUID", valueOf(id + 10),
+ "ROOT_COMPONENT_UUID", valueOf(id + 100),
+ "SCOPE", "PRJ",
+ "QUALIFIER", "FIL");
+ return uuid;
+ }
+
+}
+++ /dev/null
-/*
- * SonarQube
- * Copyright (C) 2009-2016 SonarSource SA
- * mailto:contact AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.db.version.v60;
-
-import java.sql.SQLException;
-import java.util.List;
-import java.util.Map;
-import javax.annotation.Nullable;
-import org.junit.Rule;
-import org.junit.Test;
-import org.sonar.api.utils.System2;
-import org.sonar.db.DbTester;
-
-import static java.lang.String.valueOf;
-import static org.assertj.core.api.Assertions.assertThat;
-
-public class PopulateUuidColumnsOfSnapshotsTest {
-
- private static final String SNAPSHOTS_TABLE = "snapshots";
-
- @Rule
- public DbTester db = DbTester.createForSchema(System2.INSTANCE, PopulateUuidColumnsOfSnapshotsTest.class,
- "in_progress_snapshots_with_projects.sql");
-
- private PopulateUuidColumnsOfSnapshots underTest = new PopulateUuidColumnsOfSnapshots(db.database());
-
- @Test
- public void migration_has_no_effect_on_empty_tables() throws SQLException {
- underTest.execute();
-
- assertThat(db.countRowsOfTable(SNAPSHOTS_TABLE)).isEqualTo(0);
- assertThat(db.countRowsOfTable("projects")).isEqualTo(0);
- }
-
- @Test
- public void migration_updates_uuid_columns_with_values_from_table_projects_when_they_exist() throws SQLException {
- String uuid1 = insertComponent(40);
- String uuid2 = insertComponent(50);
- String uuid3 = insertComponent(60);
- String uuid4 = insertComponent(70);
- String uuid5 = insertComponent(80);
-
- insertSnapshots(1, 40, 50L);
- insertSnapshots(2, 60, 70L);
- insertSnapshots(3, 90, 70L); // 90 does not exist
- insertSnapshots(4, 40, 100L); // 100 does not exist
- insertSnapshots(5, 110, 100L); // 110 and 100 do not exist
- insertSnapshots(6, 80, null); // no root
- insertSnapshots(7, 120, null); // no root and 120 does not exist
- db.commit();
-
- underTest.execute();
-
- verifySnapshots(1, 40, uuid1, 50L, uuid2);
- verifySnapshots(2, 60, uuid3, 70L, uuid4);
- verifySnapshots(3, 90, null, 70L, uuid4);
- verifySnapshots(4, 40, uuid1, 100L, null);
- verifySnapshots(5, 110, null, 100L, null);
- verifySnapshots(6, 80, uuid5, null, null);
- verifySnapshots(7, 120, null, null, null);
- }
-
- @Test
- public void migration_is_reentrant() throws SQLException {
- String uuid1 = insertComponent(40);
- String uuid2 = insertComponent(50);
- insertSnapshots(1, 40, 50L);
-
- underTest.execute();
- verifySnapshots(1, 40, uuid1, 50L, uuid2);
-
- underTest.execute();
- verifySnapshots(1, 40, uuid1, 50L, uuid2);
- }
-
- private void insertSnapshots(long id, long projectId, @Nullable Long rootId) {
- db.executeInsert(
- SNAPSHOTS_TABLE,
- "ID", valueOf(id),
- "ISLAST", "TRUE",
- "PROJECT_ID", valueOf(projectId),
- "ROOT_PROJECT_ID", rootId == null ? null : valueOf(rootId));
- }
-
- private String insertComponent(long id) {
- String uuid = "uuid_" + id;
- db.executeInsert(
- "projects",
- "ID", valueOf(id),
- "UUID", uuid);
- return uuid;
- }
-
- private void verifySnapshots(long id, long resourceId, @Nullable String componentUuid, @Nullable Long rootProjectId, @Nullable String rootComponentUuid) {
- List<Map<String, Object>> rows = db.select("select PROJECT_ID, COMPONENT_UUID, ROOT_PROJECT_ID, ROOT_COMPONENT_UUID from snapshots where ID=" + id);
- assertThat(rows).hasSize(1);
- Map<String, Object> row = rows.get(0);
- assertThat(row.get("PROJECT_ID")).isEqualTo(resourceId);
- assertThat(row.get("COMPONENT_UUID")).isEqualTo(componentUuid);
- assertThat(row.get("ROOT_PROJECT_ID")).isEqualTo(rootProjectId);
- assertThat(row.get("ROOT_COMPONENT_UUID")).isEqualTo(rootComponentUuid);
- }
-
-}
uuid="ABCD" project_uuid="ABCD" module_uuid="[null]" module_uuid_path=".ABCD."
scope="PRJ" qualifier="TRK" long_name="Apache Struts" description="the description"
enabled="[true]" language="[null]" copy_component_uuid="[null]" developer_uuid="[null]" path="[null]" authorization_updated_at="[null]"/>
- <snapshots id="1" component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]" islast="[true]" scope="PRJ" qualifier="TRK"/>
- <snapshots id="10" component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]" islast="[false]" scope="PRJ" qualifier="TRK"/>
+ <snapshots id="1"
+ uuid="u1"
+ component_uuid="ABCD"
+ parent_snapshot_id="[null]"
+ root_component_uuid="ABCD"
+ root_snapshot_id="[null]"
+ islast="[true]"
+ scope="PRJ"
+ qualifier="TRK"/>
+ <snapshots id="10"
+ uuid="u10"
+ component_uuid="ABCD"
+ parent_snapshot_id="[null]"
+ root_component_uuid="ABCD"
+ root_snapshot_id="[null]"
+ islast="[false]"
+ scope="PRJ"
+ qualifier="TRK"/>
<!-- module -->
<projects id="2" root_uuid="ABCD" kee="org.struts:struts-core" name="Struts Core"
uuid="EFGH" project_uuid="ABCD" module_uuid="[null]" module_uuid_path=".ABCD.EFGH."
scope="PRJ" qualifier="BRC" long_name="Struts Core" description="[null]"
enabled="[true]" language="[null]" copy_component_uuid="[null]" developer_uuid="[null]" authorization_updated_at="[null]"/>
- <snapshots id="2" component_uuid="EFGH" parent_snapshot_id="1" root_component_uuid="ABCD" root_snapshot_id="1" islast="[true]" scope="PRJ" qualifier="BRC"/>
+ <snapshots id="2"
+ uuid="u2"
+ component_uuid="EFGH"
+ parent_snapshot_id="1"
+ root_component_uuid="ABCD"
+ root_snapshot_id="1"
+ islast="[true]"
+ scope="PRJ"
+ qualifier="BRC"/>
<!-- sub module -->
<projects id="3" root_uuid="ABCD" kee="org.struts:struts-data" name="Struts Data"
uuid="FGHI" project_uuid="ABCD" module_uuid="EFGH" module_uuid_path=".ABCD.EFGH.FGHI."
scope="PRJ" qualifier="BRC" long_name="Struts Data" description="[null]"
enabled="[true]" language="[null]" copy_component_uuid="[null]" developer_uuid="[null]" authorization_updated_at="[null]"/>
- <snapshots id="3" component_uuid="FGHI" parent_snapshot_id="2" root_component_uuid="ABCD" root_snapshot_id="1" islast="[true]" scope="PRJ" qualifier="BRC"/>
+ <snapshots id="3"
+ uuid="u3"
+ component_uuid="FGHI"
+ parent_snapshot_id="2"
+ root_component_uuid="ABCD"
+ root_snapshot_id="1"
+ islast="[true]"
+ scope="PRJ"
+ qualifier="BRC"/>
<!-- directory -->
<projects id="4" root_uuid="FGHI" scope="DIR" qualifier="DIR" kee="org.struts:struts-core:src/org/struts"
uuid="GHIJ" project_uuid="ABCD" module_uuid="FGHI" module_uuid_path=".ABCD.EFGH.FGHI."
name="src/org/struts" long_name="org.struts" description="[null]"
enabled="[true]" language="[null]" copy_component_uuid="[null]" developer_uuid="[null]" path="src/org/struts" authorization_updated_at="[null]"/>
- <snapshots id="4" component_uuid="GHIJ" parent_snapshot_id="3" root_component_uuid="ABCD" root_snapshot_id="1" islast="[true]" scope="DIR" qualifier="DIR"/>
+ <snapshots id="4"
+ uuid="u4"
+ component_uuid="GHIJ"
+ parent_snapshot_id="3"
+ root_component_uuid="ABCD"
+ root_snapshot_id="1"
+ islast="[true]"
+ scope="DIR"
+ qualifier="DIR"/>
<!-- file -->
<projects id="5" root_uuid="FGHI" scope="FIL" qualifier="FIL" kee="org.struts:struts-core:src/org/struts/RequestContext.java"
uuid="HIJK" project_uuid="ABCD" module_uuid="FGHI" module_uuid_path=".ABCD.EFGH.FGHI."
name="RequestContext.java" long_name="org.struts.RequestContext" description="[null]"
enabled="[true]" language="java" copy_component_uuid="[null]" developer_uuid="[null]" path="src/org/struts/RequestContext.java" authorization_updated_at="[null]"/>
- <snapshots id="5" component_uuid="HIJK" parent_snapshot_id="4" root_component_uuid="ABCD" root_snapshot_id="1" islast="[true]" scope="FIL" qualifier="FIL"/>
+ <snapshots id="5"
+ uuid="u5"
+ component_uuid="HIJK"
+ parent_snapshot_id="4"
+ root_component_uuid="ABCD"
+ root_snapshot_id="1"
+ islast="[true]"
+ scope="FIL"
+ qualifier="FIL"/>
<!-- removed sub module -->
<projects id="10" root_uuid="ABCD" kee="org.struts:struts-data-removed" name="Struts Data Removed"
uuid="ABCD" project_uuid="ABCD" module_uuid="[null]" module_uuid_path=".ABCD."
description="the description" long_name="Apache Struts"
enabled="[true]" language="[null]" copy_component_uuid="[null]" developer_uuid="[null]" path="[null]" authorization_updated_at="123456789"/>
- <snapshots id="1" component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" 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"
+ <snapshots id="1"
+ uuid="u1"
+ component_uuid="ABCD"
+ parent_snapshot_id="[null]"
+ root_component_uuid="ABCD"
+ 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" component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" 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"
+ <snapshots id="10"
+ uuid="u10"
+ component_uuid="ABCD"
+ parent_snapshot_id="[null]"
+ root_component_uuid="ABCD"
+ 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=""/>
- <snapshots id="11" component_uuid="PPAA" parent_snapshot_id="[null]" root_component_uuid="PPAA" root_snapshot_id="[null]"
- status="U" 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"
+ <snapshots id="11"
+ uuid="u11"
+ component_uuid="PPAA"
+ parent_snapshot_id="[null]"
+ root_component_uuid="PPAA"
+ root_snapshot_id="[null]"
+ status="U" 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=""/>
<!-- module -->
uuid="EFGH" project_uuid="ABCD" module_uuid="[null]" module_uuid_path=".ABCD.EFGH."
scope="PRJ" qualifier="BRC" long_name="Struts Core"
description="[null]" enabled="[true]" language="[null]" copy_component_uuid="[null]" developer_uuid="[null]" authorization_updated_at="[null]"/>
- <snapshots id="2" component_uuid="EFGH" parent_snapshot_id="1" root_component_uuid="ABCD" root_snapshot_id="1"
- 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="BRC" created_at="1228222680000" build_date="1228222680000"
- version="[null]" path="1."/>
+ <snapshots id="2"
+ uuid="u2"
+ component_uuid="EFGH"
+ parent_snapshot_id="1"
+ root_component_uuid="ABCD"
+ root_snapshot_id="1"
+ 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="BRC"
+ created_at="1228222680000"
+ build_date="1228222680000"
+ version="[null]"
+ path="1."/>
<!-- directory -->
<projects long_name="org.struts" id="3" scope="DIR" qualifier="DIR" kee="org.struts:struts-core:src/org/struts"
name="src/org/struts" root_uuid="EFGH"
description="[null]"
enabled="[true]" language="[null]" copy_component_uuid="[null]" developer_uuid="[null]" path="src/org/struts" authorization_updated_at="[null]"/>
- <snapshots id="3" component_uuid="GHIJ" parent_snapshot_id="2" root_component_uuid="ABCD" root_snapshot_id="1"
- 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="DIR" qualifier="PAC" created_at="1228222680000" build_date="1228222680000"
- version="[null]" path="1.2."/>
+ <snapshots id="3"
+ uuid="u3"
+ component_uuid="GHIJ"
+ parent_snapshot_id="2"
+ root_component_uuid="ABCD"
+ root_snapshot_id="1"
+ 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="DIR"
+ qualifier="PAC"
+ created_at="1228222680000"
+ build_date="1228222680000"
+ version="[null]"
+ path="1.2."/>
<!-- file -->
<projects long_name="org.struts.RequestContext" id="4" scope="FIL" qualifier="FIL" kee="org.struts:struts-core:src/org/struts/RequestContext.java"
description="[null]"
enabled="[true]" language="java" copy_component_uuid="[null]" developer_uuid="[null]" path="src/org/struts/RequestContext.java" authorization_updated_at="[null]"/>
- <snapshots id="4" component_uuid="KLMN" parent_snapshot_id="3" root_component_uuid="ABCD" root_snapshot_id="1"
- 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="FIL" qualifier="CLA" created_at="1228222680000" build_date="1228222680000"
- version="[null]" path="1.2.3."/>
+ <snapshots id="4"
+ uuid="u4"
+ component_uuid="KLMN"
+ parent_snapshot_id="3"
+ root_component_uuid="ABCD"
+ root_snapshot_id="1"
+ 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="FIL"
+ qualifier="CLA"
+ created_at="1228222680000"
+ build_date="1228222680000"
+ version="[null]"
+ path="1.2.3."/>
<!-- Disabled projects -->
<projects id="10" root_uuid="DCBA" scope="PRJ" qualifier="TRK" kee="org.disabled.project" name="Disabled Project"
uuid="ABCD" project_uuid="ABCD" module_uuid="[null]" module_uuid_path=".ABCD."
description="the description" long_name="Apache Struts"
enabled="[true]" language="[null]" copy_component_uuid="[null]" developer_uuid="[null]" path="[null]" authorization_updated_at="123456789"/>
- <snapshots id="1" component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
- status="P" islast="[true]" purge_status="[null]"
+ <snapshots id="1"
+ uuid="u1"
+ component_uuid="ABCD"
+ parent_snapshot_id="[null]"
+ root_component_uuid="ABCD"
+ 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]"
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" component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
- status="P" islast="[false]" purge_status="[null]"
+ <snapshots id="10"
+ uuid="u10"
+ component_uuid="ABCD"
+ parent_snapshot_id="[null]"
+ root_component_uuid="ABCD"
+ 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]"
uuid="EFGH" project_uuid="ABCD" module_uuid="[null]" module_uuid_path=".ABCD.EFGH."
scope="PRJ" qualifier="BRC" long_name="Struts Core"
description="[null]" enabled="[true]" language="[null]" copy_component_uuid="[null]" developer_uuid="[null]" authorization_updated_at="[null]"/>
- <snapshots id="2" component_uuid="EFGH" parent_snapshot_id="1" root_component_uuid="ABCD" root_snapshot_id="1"
- status="P" islast="[true]" purge_status="[null]"
+ <snapshots id="2"
+ uuid="u2"
+ component_uuid="EFGH"
+ parent_snapshot_id="1"
+ root_component_uuid="ABCD"
+ root_snapshot_id="1"
+ 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]"
name="src/org/struts" root_uuid="EFGH"
description="[null]"
enabled="[true]" language="[null]" copy_component_uuid="[null]" developer_uuid="[null]" path="src/org/struts" authorization_updated_at="[null]"/>
- <snapshots id="3" component_uuid="GHIJ" parent_snapshot_id="2" root_component_uuid="ABCD" root_snapshot_id="1"
- status="P" islast="[true]" purge_status="[null]"
+ <snapshots id="3"
+ uuid="u3"
+ component_uuid="GHIJ"
+ parent_snapshot_id="2"
+ root_component_uuid="ABCD"
+ root_snapshot_id="1"
+ 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]"
description="[null]"
enabled="[true]" language="java" copy_component_uuid="[null]" developer_uuid="[null]" path="src/org/struts/RequestContext.java" authorization_updated_at="[null]"/>
- <snapshots id="4" component_uuid="KLMN" parent_snapshot_id="3" root_component_uuid="ABCD" root_snapshot_id="1"
- status="P" islast="[true]" purge_status="[null]"
+ <snapshots id="4"
+ uuid="u4"
+ component_uuid="KLMN"
+ parent_snapshot_id="3"
+ root_component_uuid="ABCD"
+ root_snapshot_id="1"
+ 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]"
uuid="ABCD" project_uuid="ABCD" module_uuid="[null]" module_uuid_path=".ABCD."
description="the description" long_name="Apache Struts"
enabled="[true]" language="[null]" copy_component_uuid="[null]" developer_uuid="[null]" path="[null]" authorization_updated_at="123456789"/>
- <snapshots id="1" component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
- status="P" islast="[true]" purge_status="[null]"
+ <snapshots id="1"
+ uuid="u1"
+ component_uuid="ABCD"
+ parent_snapshot_id="[null]"
+ root_component_uuid="ABCD"
+ 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" component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
- status="P" islast="[false]" purge_status="[null]"
+ depth="[null]"
+ scope="PRJ"
+ qualifier="TRK"
+ created_at="1228222680000"
+ build_date="1228222680000"
+ version="[null]"
+ path=""/>
+ <snapshots id="10"
+ uuid="u10"
+ component_uuid="ABCD"
+ parent_snapshot_id="[null]"
+ root_component_uuid="ABCD"
+ 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]"
uuid="EFGH" project_uuid="ABCD" module_uuid="[null]" module_uuid_path=".ABCD.EFGH."
scope="PRJ" qualifier="BRC" long_name="Struts Core"
description="[null]" enabled="[true]" language="[null]" copy_component_uuid="[null]" developer_uuid="[null]" authorization_updated_at="[null]"/>
- <snapshots id="2" component_uuid="EFGH" parent_snapshot_id="1" root_component_uuid="ABCD" root_snapshot_id="1"
- status="P" islast="[true]" purge_status="[null]"
+ <snapshots id="2"
+ uuid="u2"
+ component_uuid="EFGH"
+ parent_snapshot_id="1"
+ root_component_uuid="ABCD"
+ root_snapshot_id="1"
+ 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]"
name="src/org/struts" root_uuid="EFGH"
description="[null]"
enabled="[true]" language="[null]" copy_component_uuid="[null]" developer_uuid="[null]" path="src/org/struts" authorization_updated_at="[null]"/>
- <snapshots id="3" component_uuid="GHIJ" parent_snapshot_id="2" root_component_uuid="ABCD" root_snapshot_id="1"
- status="P" islast="[true]" purge_status="[null]"
+ <snapshots id="3"
+ uuid="u3"
+ component_uuid="GHIJ"
+ parent_snapshot_id="2"
+ root_component_uuid="ABCD"
+ root_snapshot_id="1"
+ 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]"
description="[null]"
enabled="[true]" language="java" copy_component_uuid="[null]" developer_uuid="[null]" path="src/org/struts/RequestContext.java" authorization_updated_at="[null]"/>
- <snapshots id="4" component_uuid="KLMN" parent_snapshot_id="3" root_component_uuid="ABCD" root_snapshot_id="1"
- status="P" islast="[true]" purge_status="[null]"
+ <snapshots id="4"
+ uuid="u4"
+ component_uuid="KLMN"
+ parent_snapshot_id="3"
+ root_component_uuid="ABCD"
+ root_snapshot_id="1"
+ 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]"
uuid="ABCD" project_uuid="ABCD" module_uuid="[null]" module_uuid_path="."
enabled="[true]" language="java" copy_component_uuid="[null]" developer_uuid="[null]"
authorization_updated_at="[null]"/>
- <snapshots id="1" component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
+ <snapshots id="1"
+ uuid="u1"
+ component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" 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]"
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" component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
+ <snapshots id="10"
+ uuid="u10"
+ component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" 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]"
uuid="EFGH" project_uuid="ABCD" module_uuid="[null]" module_uuid_path=".ABCD."
description="[null]" enabled="[true]" language="java" copy_component_uuid="[null]" developer_uuid="[null]"
authorization_updated_at="[null]"/>
- <snapshots id="2" component_uuid="EFGH" parent_snapshot_id="1" root_component_uuid="ABCD" root_snapshot_id="1"
+ <snapshots id="2"
+ uuid="u2"
+ component_uuid="EFGH" parent_snapshot_id="1" root_component_uuid="ABCD" root_snapshot_id="1"
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]"
uuid="GHIJ" project_uuid="ABCD" module_uuid="EFGH" module_uuid_path=".ABCD.EFGH."
enabled="[true]" language="java" copy_component_uuid="[null]" developer_uuid="[null]"
authorization_updated_at="[null]"/>
- <snapshots id="3" component_uuid="GHIJ" parent_snapshot_id="2" root_component_uuid="ABCD" root_snapshot_id="1"
+ <snapshots id="3"
+ uuid="u3"
+ component_uuid="GHIJ" parent_snapshot_id="2" root_component_uuid="ABCD" root_snapshot_id="1"
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]"
enabled="[true]" language="java" copy_component_uuid="[null]" developer_uuid="[null]"
authorization_updated_at="[null]"/>
- <snapshots id="4" component_uuid="KLMN" parent_snapshot_id="3" root_component_uuid="ABCD" root_snapshot_id="1"
+ <snapshots id="4"
+ uuid="u4"
+ component_uuid="KLMN" parent_snapshot_id="3" root_component_uuid="ABCD" root_snapshot_id="1"
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]"
uuid="ONLYERRORS" project_uuid="[null]" module_uuid="[null]" module_uuid_path="."
description="the description" long_name="Shinding"
enabled="[true]" language="java" copy_component_uuid="[null]" developer_uuid="[null]"/>
- <snapshots id="6" component_uuid="ONLYERRORS" parent_snapshot_id="[null]" root_component_uuid="ONLYERRORS" root_snapshot_id="[null]"
+ <snapshots id="6"
+ uuid="u6"
+ component_uuid="ONLYERRORS"
+ parent_snapshot_id="[null]" root_component_uuid="ONLYERRORS" root_snapshot_id="[null]"
status="U" islast="[false]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
period2_mode="[null]" period2_param="[null]" period2_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="7" component_uuid="ONLYERRORS" parent_snapshot_id="6" root_component_uuid="ONLYERRORS" root_snapshot_id="6"
+ <snapshots id="7"
+ uuid="u7"
+ component_uuid="ONLYERRORS"
+ parent_snapshot_id="6" root_component_uuid="ONLYERRORS" root_snapshot_id="6"
status="U" islast="[false]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
period2_mode="[null]" period2_param="[null]" period2_date="[null]"
description="the description" long_name="Tika"
uuid="DISABLED" project_uuid="[null]" module_uuid="[null]" module_uuid_path="."
enabled="[false]" language="java" copy_component_uuid="[null]" developer_uuid="[null]"/>
- <snapshots id="8" component_uuid="DISABLED" parent_snapshot_id="[null]" root_component_uuid="DISABLED" root_snapshot_id="[null]"
+ <snapshots id="8"
+ uuid="u8"
+ component_uuid="DISABLED"
+ parent_snapshot_id="[null]"
+ root_component_uuid="DISABLED" 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]"
description="the description" long_name="Apache Struts"
enabled="[true]" language="java" copy_component_uuid="[null]" developer_uuid="[null]" path="[null]"
created_at="2008-12-02" authorization_updated_at="123456789"/>
- <snapshots id="1" component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
- status="P" islast="[true]" purge_status="[null]"
+ <snapshots id="1"
+ uuid="u1"
+ component_uuid="ABCD"
+ parent_snapshot_id="[null]"
+ root_component_uuid="ABCD"
+ 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]"
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" component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
- status="P" islast="[false]" purge_status="[null]"
+ <snapshots id="10"
+ uuid="u10"
+ component_uuid="ABCD"
+ parent_snapshot_id="[null]"
+ root_component_uuid="ABCD"
+ 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]"
scope="PRJ" qualifier="BRC" long_name="Struts Core"
description="[null]" enabled="[true]" language="java" copy_component_uuid="[null]" developer_uuid="[null]"
created_at="2008-12-02" authorization_updated_at="[null]"/>
- <snapshots id="2" component_uuid="BCDE" parent_snapshot_id="1" root_component_uuid="ABCD" root_snapshot_id="1"
- status="P" islast="[true]" purge_status="[null]"
+ <snapshots id="2"
+ uuid="u2"
+ component_uuid="BCDE"
+ parent_snapshot_id="1"
+ root_component_uuid="ABCD"
+ root_snapshot_id="1"
+ 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]"
description="[null]"
enabled="[true]" language="java" copy_component_uuid="[null]" developer_uuid="[null]" path="src/org/struts"
created_at="2008-12-02" authorization_updated_at="[null]"/>
- <snapshots id="3" component_uuid="CDEF" parent_snapshot_id="2" root_component_uuid="ABCD" root_snapshot_id="1"
- status="P" islast="[true]" purge_status="[null]"
+ <snapshots id="3"
+ uuid="u3"
+ component_uuid="CDEF"
+ parent_snapshot_id="2"
+ root_component_uuid="ABCD"
+ root_snapshot_id="1"
+ 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]"
path="src/org/struts/RequestContext.java"
created_at="2008-12-02" authorization_updated_at="[null]"/>
- <snapshots id="4" component_uuid="DEFG" parent_snapshot_id="3" root_component_uuid="ABCD" root_snapshot_id="1"
- status="P" islast="[true]" purge_status="[null]"
+ <snapshots id="4"
+ uuid="u4"
+ component_uuid="DEFG"
+ parent_snapshot_id="3"
+ root_component_uuid="ABCD"
+ root_snapshot_id="1"
+ 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]"
description="the description" long_name="Apache Struts"
enabled="[true]" language="java" 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]"
+ <snapshots id="1"
+ uuid="u1"
+ project_id="1" parent_snapshot_id="[null]" root_project_id="1" root_snapshot_id="[null]"
status="P" islast="[true]" purge_status="[null]"
period1_mode="previous_analysis" period1_param="[null]" period1_date="[null]"
period2_mode="days" period2_param="30" period2_date="1316815200000"
period5_mode="previous_version" 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]"
+ <snapshots id="10"
+ uuid="u10"
+ 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]"
scope="PRJ" qualifier="BRC" long_name="Struts Core"
description="[null]" enabled="[true]" language="java" copy_resource_id="[null]" person_id="[null]"
authorization_updated_at="[null]"/>
- <snapshots id="2" project_id="2" parent_snapshot_id="1" root_project_id="1" root_snapshot_id="1"
+ <snapshots id="2"
+ uuid="u2"
+ project_id="2" parent_snapshot_id="1" root_project_id="1" root_snapshot_id="1"
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]"
description="[null]"
enabled="[true]" language="java" copy_resource_id="[null]" person_id="[null]" path="src/org/struts"
authorization_updated_at="[null]"/>
- <snapshots id="3" project_id="3" parent_snapshot_id="2" root_project_id="1" root_snapshot_id="1"
+ <snapshots id="3"
+ uuid="u3"
+ project_id="3" parent_snapshot_id="2" root_project_id="1" root_snapshot_id="1"
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]"
enabled="[true]" language="java" copy_resource_id="[null]" person_id="[null]"
path="src/org/struts/RequestContext.java" authorization_updated_at="[null]"/>
- <snapshots id="4" project_id="4" parent_snapshot_id="3" root_project_id="1" root_snapshot_id="1"
+ <snapshots id="4"
+ uuid="u4"
+ project_id="4" parent_snapshot_id="3" root_project_id="1" root_snapshot_id="1"
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]"
description="[null]"
enabled="[true]" language="java" copy_resource_id="[null]" person_id="[null]"/>
- <snapshots purge_status="[null]" id="1" islast="[true]" root_component_uuid="ABCD" project_id="1"/>
- <snapshots purge_status="[null]" id="2" islast="[true]" root_component_uuid="ABCD" project_id="2"/>
- <snapshots purge_status="[null]" id="3" islast="[true]" root_component_uuid="ABCD" project_id="3"/>
- <snapshots purge_status="[null]" id="4" islast="[true]" root_component_uuid="ABCD" project_id="4"/>
+ <snapshots purge_status="[null]"
+ id="1"
+ uuid="u1"
+ islast="[true]" root_component_uuid="ABCD" project_id="1"/>
+ <snapshots purge_status="[null]"
+ id="2"
+ uuid="u2"
+ islast="[true]" root_component_uuid="ABCD" project_id="2"/>
+ <snapshots purge_status="[null]"
+ id="3"
+ uuid="u3"
+ islast="[true]" root_component_uuid="ABCD" project_id="3"/>
+ <snapshots purge_status="[null]"
+ id="4"
+ uuid="u4"
+ islast="[true]" root_component_uuid="ABCD" project_id="4"/>
<!-- The major goal is to test root_project_id -->
description="[null]"
enabled="[true]" language="java" />
- <snapshots purge_status="[null]" id="1" islast="[true]" root_component_uuid="ABCD" component_uuid="ABCD"/>
- <snapshots purge_status="[null]" id="2" islast="[true]" root_component_uuid="ABCD" component_uuid="BCDE"/>
- <snapshots purge_status="[null]" id="3" islast="[true]" root_component_uuid="ABCD" component_uuid="CDEF"/>
- <snapshots purge_status="[null]" id="4" islast="[true]" root_component_uuid="ABCD" component_uuid="DEFG"/>
+ <snapshots purge_status="[null]"
+ id="1"
+ uuid="u1"
+ islast="[true]" root_component_uuid="ABCD" component_uuid="ABCD"/>
+ <snapshots purge_status="[null]"
+ id="2"
+ uuid="u2"
+ islast="[true]" root_component_uuid="ABCD" component_uuid="BCDE"/>
+ <snapshots purge_status="[null]"
+ id="3"
+ uuid="u3"
+ islast="[true]" root_component_uuid="ABCD" component_uuid="CDEF"/>
+ <snapshots purge_status="[null]"
+ id="4"
+ uuid="u4"
+ islast="[true]" root_component_uuid="ABCD" component_uuid="DEFG"/>
</dataset>
description="[null]"
enabled="[true]" language="java" copy_resource_id="[null]" person_id="[null]"/>
- <snapshots purge_status="[null]" id="1" islast="[true]" root_project_id="1" project_id="1" scope="PRJ"
+ <snapshots purge_status="[null]"
+ id="1"
+ uuid="u1"
+ islast="[true]" root_project_id="1" project_id="1" scope="PRJ"
qualifier="TRK"/>
- <snapshots purge_status="[null]" id="2" islast="[true]" root_project_id="1" project_id="2" scope="DIR"
+ <snapshots purge_status="[null]"
+ id="2"
+ uuid="u2"
+ islast="[true]" root_project_id="1" project_id="2" scope="DIR"
qualifier="PAC"/>
- <snapshots purge_status="[null]" id="3" islast="[true]" root_project_id="1" project_id="3" scope="CLA"
+ <snapshots purge_status="[null]"
+ id="3"
+ uuid="u3"
+ islast="[true]" root_project_id="1" project_id="3" scope="CLA"
qualifier="CLA"/>
<!-- RequestContext -->
description="[null]"
enabled="[true]" language="java" />
- <snapshots purge_status="[null]" id="1" islast="[true]" root_component_uuid="ABCD" component_uuid="ABCD" scope="PRJ"
+ <snapshots purge_status="[null]"
+ id="1"
+ uuid="u1"
+ islast="[true]" root_component_uuid="ABCD" component_uuid="ABCD" scope="PRJ"
qualifier="TRK"/>
- <snapshots purge_status="[null]" id="2" islast="[true]" root_component_uuid="ABCD" component_uuid="BCDE" scope="DIR"
+ <snapshots purge_status="[null]"
+ id="2"
+ uuid="u2"
+ islast="[true]" root_component_uuid="ABCD" component_uuid="BCDE" scope="DIR"
qualifier="PAC"/>
- <snapshots purge_status="[null]" id="3" islast="[true]" root_component_uuid="ABCD" component_uuid="CDEF" scope="FIL"
+ <snapshots purge_status="[null]"
+ id="3"
+ islast="[true]"
+ uuid="u3"
+ root_component_uuid="ABCD" component_uuid="CDEF" scope="FIL"
qualifier="CLA"/>
</dataset>
description="[null]"
enabled="[true]" language="java"/>
- <snapshots purge_status="[null]" id="1" islast="[true]" root_component_uuid="ABCD" component_uuid="ABCD" scope="PRJ"
+ <snapshots purge_status="[null]"
+ id="1"
+ uuid="u1"
+ islast="[true]" root_component_uuid="ABCD" component_uuid="ABCD" scope="PRJ"
qualifier="TRK"/>
<!-- the index is on the old name "ST" but not on "AS" -->
description="[null]"
enabled="[true]" language="java" />
- <snapshots purge_status="[null]" id="1" islast="[true]" root_component_uuid="ABCD" component_uuid="ABCD" scope="PRJ"
+ <snapshots purge_status="[null]"
+ id="1"
+ uuid="u1"
+ islast="[true]" root_component_uuid="ABCD" component_uuid="ABCD" scope="PRJ"
qualifier="TRK"/>
<!-- the index is on the old name "ST" but not on "AS" -->
description="[null]"
enabled="[true]" language="java" copy_resource_id="[null]" person_id="[null]"/>
- <snapshots purge_status="[null]" id="1" islast="[true]" root_project_id="1" project_id="1" scope="PRJ"
+ <snapshots purge_status="[null]" id="1"
+ uuid="u1"
+ islast="[true]" root_project_id="1" project_id="1" scope="PRJ"
qualifier="TRK"/>
<resource_index kee="apache struts" position="0" name_size="13" component_uuid="ABCD" root_component_uuid="ABCD" qualifier="TRK"/>
description="[null]"
enabled="[true]" language="java" />
- <snapshots purge_status="[null]" id="1" islast="[true]" root_component_uuid="ABCD" component_uuid="ABCD" scope="PRJ"
+ <snapshots purge_status="[null]"
+ id="1"
+ uuid="u1"
+ islast="[true]" root_component_uuid="ABCD" component_uuid="ABCD" scope="PRJ"
qualifier="TRK"/>
<!-- the index is on the old name "Struts" but not on "Apache Struts -->
<dataset>
<!-- Has last snapshot -->
- <projects id="1" root_uuid="ABCD" 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_component_uuid="[null]" developer_uuid="[null]" path="[null]" authorization_updated_at="[null]" />
- <snapshots id="1" component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
+ <projects id="1"
+ root_uuid="ABCD"
+ 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_component_uuid="[null]"
+ developer_uuid="[null]"
+ path="[null]"
+ authorization_updated_at="[null]" />
+ <snapshots id="1"
+ uuid="u1"
+ component_uuid="ABCD"
+ parent_snapshot_id="[null]"
+ root_component_uuid="ABCD"
+ 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]"
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" component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" 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=""/>
+ <snapshots id="10"
+ uuid="u10"
+ component_uuid="ABCD"
+ parent_snapshot_id="[null]"
+ root_component_uuid="ABCD"
+ 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_uuid="ABCD" kee="org.struts:struts-core" name="Struts Core"
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_component_uuid="[null]" developer_uuid="[null]" authorization_updated_at="[null]" />
- <snapshots id="3" component_uuid="FGHI" parent_snapshot_id="2" root_component_uuid="ABCD" 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."/>
+ <snapshots id="3"
+ uuid="u3"
+ component_uuid="FGHI"
+ parent_snapshot_id="2"
+ root_component_uuid="ABCD"
+ 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>
<dataset>
- <snapshots id="1" component_uuid="uuid_3" parent_snapshot_id="2" root_component_uuid="uuid_1" root_snapshot_id="1"
- status="P" islast="[true]" purge_status="1"
- period1_mode="days1" period1_param="30" period1_date="1500000000001"
- period2_mode="days2" period2_param="31" period2_date="1500000000002"
- period3_mode="days3" period3_param="32" period3_date="1500000000003"
- period4_mode="days4" period4_param="33" period4_date="1500000000004"
- period5_mode="days5" period5_param="34" period5_date="1500000000005"
- depth="1" scope="DIR" qualifier="PAC" created_at="1403042400000" build_date="1500000000006"
- version="2.1-SNAPSHOT" path="1.2."/>
+ <snapshots id="1"
+ uuid="u1"
+ component_uuid="uuid_3"
+ parent_snapshot_id="2"
+ root_component_uuid="uuid_1"
+ root_snapshot_id="1"
+ status="P"
+ islast="[true]"
+ purge_status="1"
+ period1_mode="days1"
+ period1_param="30"
+ period1_date="1500000000001"
+ period2_mode="days2"
+ period2_param="31"
+ period2_date="1500000000002"
+ period3_mode="days3"
+ period3_param="32"
+ period3_date="1500000000003"
+ period4_mode="days4"
+ period4_param="33"
+ period4_date="1500000000004"
+ period5_mode="days5"
+ period5_param="34"
+ period5_date="1500000000005"
+ depth="1"
+ scope="DIR"
+ qualifier="PAC"
+ created_at="1403042400000"
+ build_date="1500000000006"
+ version="2.1-SNAPSHOT"
+ path="1.2."/>
</dataset>
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]"
+ <snapshots id="1"
+ uuid="u1"
+ 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]"
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]"
+ <snapshots id="10"
+ uuid="u10"
+ 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]"
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]" />
- <snapshots id="2" project_id="2" parent_snapshot_id="1" root_project_id="1" root_snapshot_id="1"
+ <snapshots id="2"
+ uuid="u2"
+ project_id="2" parent_snapshot_id="1" root_project_id="1" root_snapshot_id="1"
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]"
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"
+ <snapshots id="3"
+ uuid="u3"
+ project_id="3"
+ parent_snapshot_id="2" root_project_id="1" root_snapshot_id="1"
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]"
name="src/org/struts" root_id="3"
description="[null]"
enabled="[true]" language="[null]" copy_resource_id="[null]" person_id="[null]" path="src/org/struts" authorization_updated_at="[null]" />
- <snapshots id="4" project_id="4" parent_snapshot_id="3" root_project_id="1" root_snapshot_id="1"
+ <snapshots id="4"
+ uuid="u4"
+ project_id="4"
+ parent_snapshot_id="3" root_project_id="1" root_snapshot_id="1"
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]"
description="[null]"
enabled="[true]" language="java" copy_resource_id="[null]" person_id="[null]" path="src/org/struts/RequestContext.java" authorization_updated_at="[null]" />
- <snapshots id="5" project_id="5" parent_snapshot_id="4" root_project_id="1" root_snapshot_id="1"
+ <snapshots id="5"
+ uuid="u5"
+ project_id="5"
+ parent_snapshot_id="4" root_project_id="1" root_snapshot_id="1"
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]"
enabled="[true]" language="java" copy_component_uuid="[null]" developer_uuid="[null]"/>
<!-- version 1.0 -->
- <snapshots id="1000" purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]" period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+ <snapshots id="1000"
+ uuid="u1000"
+ 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]"
component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
status="P" islast="[false]" depth="0"/>
<!-- version 1.1 -->
- <snapshots id="1001" purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]" period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+ <snapshots id="1001"
+ uuid="u1001"
+ 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]"
component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
status="P" islast="[false]" depth="0"/>
<!-- version 1.2-SNAPSHOT -->
- <snapshots id="1002" purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]" period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+ <snapshots id="1002"
+ uuid="u1002"
+ 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]"
component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
status="P" islast="[false]" depth="0"/>
<!-- version 1.2-SNAPSHOT, current analysis -->
- <snapshots id="1003" purge_status="[null]" period1_mode="[null]" period1_param="[null]" period1_date="[null]" period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+ <snapshots id="1003"
+ uuid="u1003"
+ 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]"
component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
enabled="[true]" language="[null]" copy_component_uuid="[null]" developer_uuid="[null]" path="[null]"
authorization_updated_at="[null]"/>
- <snapshots id="1" component_uuid="ABCD" parent_snapshot_id="2" root_component_uuid="ABCD" root_snapshot_id="1"
+ <snapshots id="1"
+ uuid="u1"
+ component_uuid="ABCD"
+ parent_snapshot_id="2" root_component_uuid="ABCD" root_snapshot_id="1"
status="P" islast="[true]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
period5_mode="days5" period5_param="34" period5_date="1317160800000"
depth="1" scope="PRJ" qualifier="PAC" created_at="1228172400001" build_date="1317247200000"
version="2.0-SNAPSHOT" path="1.2."/>
- <snapshots id="2" component_uuid="ABCD" parent_snapshot_id="2" root_component_uuid="ABCD" root_snapshot_id="3"
+ <snapshots id="2"
+ uuid="u2"
+ component_uuid="ABCD"
+ parent_snapshot_id="2" root_component_uuid="ABCD" root_snapshot_id="3"
status="P" islast="[false]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
period5_mode="days5" period5_param="34" period5_date="1317160800000"
depth="1" scope="DIR" qualifier="PAC" created_at="1228172400002" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
- <snapshots id="3" component_uuid="ABCD" parent_snapshot_id="2" root_component_uuid="ABCD" root_snapshot_id="3"
+ <snapshots id="3"
+ uuid="u3"
+ component_uuid="ABCD"
+ parent_snapshot_id="2" root_component_uuid="ABCD" root_snapshot_id="3"
status="P" islast="[false]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
description="[null]" enabled="[true]" language="[null]" copy_component_uuid="[null]" developer_uuid="[null]"
authorization_updated_at="[null]"/>
- <snapshots id="4" component_uuid="EFGH" parent_snapshot_id="2" root_component_uuid="ABCD" root_snapshot_id="3"
+ <snapshots id="4"
+ uuid="u4"
+ component_uuid="EFGH" parent_snapshot_id="2" root_component_uuid="ABCD" root_snapshot_id="3"
status="P" islast="[true]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
depth="1" scope="DIR" qualifier="PAC" created_at="1228172400000" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
<!-- Unprocessed snapshot -->
- <snapshots id="5" component_uuid="EFGH" parent_snapshot_id="2" root_component_uuid="ABCD" root_snapshot_id="3"
+ <snapshots id="5"
+ uuid="u5"
+ component_uuid="EFGH" parent_snapshot_id="2" root_component_uuid="ABCD" root_snapshot_id="3"
status="U" islast="[true]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
description="[null]" enabled="[true]" language="[null]" copy_component_uuid="[null]" developer_uuid="[null]"
authorization_updated_at="[null]"/>
- <snapshots id="6" component_uuid="FGHI" parent_snapshot_id="2" root_component_uuid="ABCD" root_snapshot_id="3"
+ <snapshots id="6"
+ uuid="u6"
+ component_uuid="FGHI" parent_snapshot_id="2" root_component_uuid="ABCD" root_snapshot_id="3"
status="P" islast="[false]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
<dataset>
- <snapshots id="3" component_uuid="uuid_3" parent_snapshot_id="2" root_component_uuid="uuid_1" root_snapshot_id="1"
- status="P" islast="[true]" purge_status="1"
- period1_mode="days1" period1_param="30" period1_date="1316815200000"
- period2_mode="days2" period2_param="31" period2_date="1316901600000"
- period3_mode="days3" period3_param="32" period3_date="1316988000000"
- period4_mode="days4" period4_param="33" period4_date="1317074400000"
- period5_mode="days5" period5_param="34" period5_date="1317160800000"
- depth="1" scope="DIR" qualifier="PAC" created_at="1228172400000" build_date="1317247200000"
- version="2.1-SNAPSHOT" path="1.2."/>
+ <snapshots id="3"
+ uuid="u3"
+ component_uuid="uuid_3"
+ parent_snapshot_id="2"
+ root_component_uuid="uuid_1"
+ root_snapshot_id="1"
+ status="P"
+ islast="[true]"
+ purge_status="1"
+ period1_mode="days1"
+ period1_param="30"
+ period1_date="1316815200000"
+ period2_mode="days2"
+ period2_param="31"
+ period2_date="1316901600000"
+ period3_mode="days3"
+ period3_param="32"
+ period3_date="1316988000000"
+ period4_mode="days4"
+ period4_param="33"
+ period4_date="1317074400000"
+ period5_mode="days5"
+ period5_param="34"
+ period5_date="1317160800000"
+ depth="1"
+ scope="DIR"
+ qualifier="PAC"
+ created_at="1228172400000"
+ build_date="1317247200000"
+ version="2.1-SNAPSHOT"
+ path="1.2."/>
</dataset>
<dataset>
<!-- PROJECT_ID = 1 -->
- <snapshots id="1" component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_1" root_snapshot_id="1"
+ <snapshots id="1"
+ uuid="u1"
+ component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_1" root_snapshot_id="1"
status="P" islast="[true]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
period5_mode="days5" period5_param="34" period5_date="1317160800000"
depth="1" scope="PRJ" qualifier="PAC" created_at="1228172400000" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
- <snapshots id="2" component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_1" root_snapshot_id="3"
+ <snapshots id="2"
+ uuid="u2"
+ component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_1" root_snapshot_id="3"
status="P" islast="[false]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
period5_mode="days5" period5_param="34" period5_date="1317160800000"
depth="1" scope="DIR" qualifier="PAC" created_at="1228172400000" build_date="1317247200000"
version="2.1-SNAPSHOT" path="1.2."/>
- <snapshots id="3" component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_1" root_snapshot_id="3"
+ <snapshots id="3"
+ uuid="u3"
+ component_uuid="uuid_1" parent_snapshot_id="2" root_component_uuid="uuid_1" root_snapshot_id="3"
status="P" islast="[false]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
<!-- PROJECT_ID = 2 -->
- <snapshots id="4" component_uuid="uuid_2" parent_snapshot_id="2" root_component_uuid="uuid_1" root_snapshot_id="3"
+ <snapshots id="4"
+ uuid="u4"
+ component_uuid="uuid_2" parent_snapshot_id="2" root_component_uuid="uuid_1" root_snapshot_id="3"
status="P" islast="[true]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
version="2.1-SNAPSHOT" path="1.2."/>
<!-- PROJECT_ID = 3 - no last snapshot -->
- <snapshots id="5" component_uuid="uuid_3" parent_snapshot_id="2" root_component_uuid="uuid_1" root_snapshot_id="3"
+ <snapshots id="5"
+ uuid="u5"
+ component_uuid="uuid_3"
+ parent_snapshot_id="2" root_component_uuid="uuid_1" root_snapshot_id="3"
status="P" islast="[false]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
version="2.1-SNAPSHOT" path="1.2."/>
<!-- Child of snapshot id=1 -->
- <snapshots id="6" component_uuid="uuid_55" parent_snapshot_id="2" root_component_uuid="uuid_1" root_snapshot_id="1"
+ <snapshots id="6"
+ uuid="u6"
+ component_uuid="uuid_55"
+ parent_snapshot_id="2" root_component_uuid="uuid_1" root_snapshot_id="1"
status="P" islast="[true]" purge_status="1"
period1_mode="days1" period1_param="30" period1_date="1316815200000"
period2_mode="days2" period2_param="31" period2_date="1316901600000"
<dataset>
- <snapshots purge_status="[null]" id="1" status="U" islast="0" project_id="0"/>
- <snapshots purge_status="[null]" id="2" status="U" islast="0" project_id="1"/>
+ <snapshots purge_status="[null]"
+ id="1"
+ uuid="u1"
+ status="U"
+ islast="0"
+ project_id="0"/>
+ <snapshots purge_status="[null]"
+ id="2"
+ uuid="u2"
+ status="U"
+ islast="0"
+ project_id="1"/>
<projects id="1" uuid="1" kee="foo" enabled="1" scope="FIL" qualifier="CLA"/>
<duplications_index id="1" project_snapshot_id="1" snapshot_id="2" hash="bb" index_in_file="0" start_line="1"
<dataset>
- <snapshots purge_status="[null]" id="1" status="U" islast="0" component_uuid="0" root_component_uuid="0"/>
- <snapshots purge_status="[null]" id="2" status="U" islast="0" component_uuid="uuid_1" root_component_uuid="uuid_1"/>
+ <snapshots purge_status="[null]"
+ id="1"
+ uuid="u1"
+ status="U"
+ islast="0"
+ component_uuid="0"
+ root_component_uuid="0"/>
+ <snapshots purge_status="[null]"
+ id="2"
+ uuid="u2"
+ status="U"
+ islast="0"
+ component_uuid="uuid_1"
+ root_component_uuid="uuid_1"/>
<projects id="1" uuid="uuid_1" root_uuid="uuid_root" kee="foo" enabled="1" scope="FIL" qualifier="CLA"/>
</dataset>
<dataset>
- <snapshots id="1" component_uuid="uuid_1" status="P" islast="[false]" purge_status="[null]" root_component_uuid="uuid_1"/>
- <snapshots id="2" component_uuid="uuid_1" status="P" islast="[false]" purge_status="[null]" root_component_uuid="uuid_1"/>
+ <snapshots id="1"
+ uuid="u1"
+ component_uuid="uuid_1" status="P" islast="[false]" purge_status="[null]" root_component_uuid="uuid_1"/>
+ <snapshots id="2"
+ uuid="u2"
+ component_uuid="uuid_1" status="P" islast="[false]" purge_status="[null]" root_component_uuid="uuid_1"/>
<projects id="1" uuid="uuid_1" root_uuid="uuid_root" kee="bar-old" enabled="[true]" scope="FIL" qualifier="CLA" language="java"/>
- <snapshots id="3" component_uuid="uuid_2" status="P" islast="[true]" purge_status="[null]" root_component_uuid="uuid_1"/>
- <snapshots id="4" component_uuid="uuid_2" status="P" islast="[true]" purge_status="[null]" root_component_uuid="uuid_1"/>
+ <snapshots id="3"
+ uuid="u3"
+ component_uuid="uuid_2" status="P" islast="[true]" purge_status="[null]" root_component_uuid="uuid_1"/>
+ <snapshots id="4"
+ uuid="u4"
+ component_uuid="uuid_2" status="P" islast="[true]" purge_status="[null]" root_component_uuid="uuid_1"/>
<projects id="2" uuid="uuid_2" root_uuid="uuid_root" kee="bar-last" enabled="[true]" scope="FIL" qualifier="CLA" language="java"/>
- <snapshots id="5" component_uuid="uuid_3" status="P" islast="[false]" purge_status="[null]" root_component_uuid="uuid_1"/>
- <snapshots id="6" component_uuid="uuid_3" status="P" islast="[false]" purge_status="[null]" root_component_uuid="uuid_1"/>
+ <snapshots id="5"
+ uuid="u5"
+ component_uuid="uuid_3" status="P" islast="[false]" purge_status="[null]" root_component_uuid="uuid_1"/>
+ <snapshots id="6"
+ uuid="u6"
+ component_uuid="uuid_3" status="P" islast="[false]" purge_status="[null]" root_component_uuid="uuid_1"/>
<projects id="3" uuid="uuid_3" root_uuid="uuid_root" kee="foo-old" enabled="[true]" scope="FIL" qualifier="CLA" language="java"/>
- <snapshots id="7" component_uuid="uuid_4" status="P" islast="[true]" purge_status="[null]" root_component_uuid="uuid_1"/>
- <snapshots id="8" component_uuid="uuid_4" status="P" islast="[true]" purge_status="[null]" root_component_uuid="uuid_1"/>
+ <snapshots id="7"
+ uuid="u7"
+ component_uuid="uuid_4" status="P" islast="[true]" purge_status="[null]" root_component_uuid="uuid_1"/>
+ <snapshots id="8"
+ uuid="u8"
+ component_uuid="uuid_4" status="P" islast="[true]" purge_status="[null]" root_component_uuid="uuid_1"/>
<projects id="4" uuid="uuid_4" root_uuid="uuid_root" kee="foo-last" enabled="[true]" scope="FIL" qualifier="CLA" language="java"/>
- <snapshots id="9" component_uuid="uuid_5" status="U" islast="[false]" purge_status="[null]" root_component_uuid="uuid_1"/>
- <snapshots id="10" component_uuid="uuid_5" status="U" islast="[false]" purge_status="[null]" root_component_uuid="uuid_1"/>
+ <snapshots id="9"
+ uuid="u9"
+ component_uuid="uuid_5" status="U" islast="[false]" purge_status="[null]" root_component_uuid="uuid_1"/>
+ <snapshots id="10"
+ uuid="u10"
+ component_uuid="uuid_5" status="U" islast="[false]" purge_status="[null]" root_component_uuid="uuid_1"/>
<projects id="5" uuid="uuid_5" root_uuid="uuid_root" kee="foo" enabled="[true]" scope="FIL" qualifier="CLA" language="java"/>
- <snapshots id="11" component_uuid="uuid_6" purge_status="[null]" status="P" islast="1" root_component_uuid="uuid_1"/>
+ <snapshots id="11"
+ uuid="u11"
+ component_uuid="uuid_6" purge_status="[null]" status="P" islast="1" root_component_uuid="uuid_1"/>
<projects id="6" uuid="uuid_6" root_uuid="uuid_root" kee="baz" enabled="[true]" scope="FIL" qualifier="CLA" language="grvy"/>
<!-- Old snapshot of another project -->
<!-- snapshots -->
- <snapshots id="1000" component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
+ <snapshots id="1000"
+ uuid="u1000"
+ component_uuid="ABCD"
+ parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
scope="PRJ" qualifier="TRK" created_at="1225544280000" build_date="1225544280000" version="[null]" path=""
status="P" islast="[false]" depth="0"/>
- <snapshots id="1001" component_uuid="BCDE" parent_snapshot_id="1000" root_component_uuid="ABCD" root_snapshot_id="1000"
+ <snapshots id="1001"
+ uuid="u1001"
+ component_uuid="BCDE" parent_snapshot_id="1000" root_component_uuid="ABCD" root_snapshot_id="1000"
scope="DIR" qualifier="PAC" created_at="1225544280000" build_date="1225544280000" version="[null]" path="1000."
status="P" islast="[false]" depth="1"/>
- <snapshots id="1002" component_uuid="CDEF" parent_snapshot_id="1001" root_component_uuid="ABCD" root_snapshot_id="1000"
+ <snapshots id="1002"
+ uuid="u1002"
+ component_uuid="CDEF" parent_snapshot_id="1001" root_component_uuid="ABCD" root_snapshot_id="1000"
scope="FIL" qualifier="CLA" created_at="1225544280000" build_date="1225544280000" version="[null]" path="1000.1001."
status="P" islast="[false]" depth="2"/>
enabled="[true]"/>
<!-- snapshots -->
- <snapshots id="1000" component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
+ <snapshots id="1000"
+ uuid="u1000"
+ component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
scope="PRJ" qualifier="TRK" created_at="1225544280000" build_date="1225544280000" version="[null]" path=""
status="P" islast="[false]" depth="0"/>
<projects id="1" kee="org.struts:struts-core:src/org/struts/RequestContext.java" enabled="[true]" uuid="FILE1" root_uuid="ABCD"/>
- <snapshots id="5" component_uuid="ABCD" root_component_uuid="ABCD" islast="[true]" />
+ <snapshots id="5"
+ uuid="u5"
+ component_uuid="ABCD" root_component_uuid="ABCD" islast="[true]" />
<project_measures id="20" snapshot_id="5" metric_id="10" value="[null]" text_value="0123456789012345678901234567890123456789" measure_data="[null]"
variation_value_1="[null]" variation_value_2="[null]" variation_value_3="[null]" variation_value_4="[null]" variation_value_5="[null]"
<projects id="1" kee="org.struts:struts-core:src/org/struts/RequestContext.java" enabled="[true]" uuid="ABCD" root_uuid="ABCD"/>
- <snapshots id="5" component_uuid="ABCD" root_component_uuid="ABCD" islast="[true]" />
+ <snapshots id="5"
+ uuid="u5"
+ component_uuid="ABCD"
+ root_component_uuid="ABCD"
+ islast="[true]" />
<project_measures id="20"
component_uuid="ABCD"
<projects id="1" kee="org.struts:struts-core:src/org/struts/RequestContext.java" enabled="[true]" uuid="uuid_1" root_uuid="uuid_1"/>
<projects id="333" kee="dev:John-Doe" enabled="[true]" uuid="333" root_uuid="333"/>
- <snapshots id="5" component_uuid="uuid_1" islast="[true]" root_component_uuid="uuid_1"/>
+ <snapshots id="5"
+ uuid="u5"
+ component_uuid="uuid_1"
+ islast="[true]" root_component_uuid="uuid_1"/>
<project_measures id="20" snapshot_id="5" metric_id="10" value="[null]" text_value="0123456789012345678901234567890123456789" measure_data="[null]"
variation_value_1="[null]" variation_value_2="[null]" variation_value_3="[null]" variation_value_4="[null]" variation_value_5="[null]"
long_name="[null]" scope="PRJ" qualifier="TRK" kee="project" name="project"
description="[null]" language="java" copy_component_uuid="[null]" developer_uuid="[null]"/>
- <snapshots id="1" component_uuid="uuid_1" parent_snapshot_id="[null]" root_component_uuid="uuid_1" root_snapshot_id="[null]"
+ <snapshots id="1"
+ uuid="u1"
+ component_uuid="uuid_1"
+ parent_snapshot_id="[null]" root_component_uuid="uuid_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]"
<dataset>
<!-- snapshot to keep -->
- <snapshots id="1" parent_snapshot_id="[null]" component_uuid="uuid_1" root_component_uuid="uuid_1" root_snapshot_id="[null]"
+ <snapshots id="1"
+ uuid="u1"
+ parent_snapshot_id="[null]" component_uuid="uuid_1" root_component_uuid="uuid_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]"
<dataset>
<!-- snapshot to keep -->
- <snapshots id="1" parent_snapshot_id="[null]" component_uuid="uuid_1" root_component_uuid="uuid_1" root_snapshot_id="[null]"
+ <snapshots id="1"
+ uuid="u1"
+ parent_snapshot_id="[null]" component_uuid="uuid_1" root_component_uuid="uuid_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]"
<!-- snapshot to remove, id 5 on resource 5-->
- <snapshots id="5" component_uuid="uuid_5" parent_snapshot_id="[null]" root_component_uuid="uuid_5" root_snapshot_id="[null]"
+ <snapshots id="5"
+ uuid="u5"
+ component_uuid="uuid_5" parent_snapshot_id="[null]" root_component_uuid="uuid_5" 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]"
direction="1" hidden="[false]"/>
<snapshots id="1"
+ uuid="u1"
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]"
direction="1" hidden="[false]"/>
<snapshots id="1"
- component_uuid="uuid_1" parent_snapshot_id="[null]" root_component_uuid="uuid_1" root_snapshot_id="[null]"
- status="P" islast="[true]" purge_status="[null]"
+ uuid="u1"
+ component_uuid="uuid_1"
+ parent_snapshot_id="[null]"
+ root_component_uuid="uuid_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]"
-->
<dataset>
<snapshots id="1"
+ uuid="u1"
component_uuid="uuid_1" parent_snapshot_id="[null]" root_component_uuid="uuid_1" root_snapshot_id="[null]"
status="P" islast="[false]" purge_status="1"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<!-- The following is not purged but is kept for DBUnit -->
<snapshots id="2"
+ uuid="u2"
component_uuid="uuid_2" parent_snapshot_id="[null]" root_component_uuid="uuid_2" root_snapshot_id="[null]"
status="P" islast="[false]" purge_status="1"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<dataset>
<snapshots id="1"
+ uuid="u1"
component_uuid="uuid_1" parent_snapshot_id="[null]" root_component_uuid="uuid_1" root_snapshot_id="[null]"
status="P" islast="[false]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<!-- The following is not purged but is kept for DBUnit -->
<snapshots id="2"
- component_uuid="uuid_2" parent_snapshot_id="[null]" root_component_uuid="uuid_2" root_snapshot_id="[null]"
+ uuid="u2"
+ component_uuid="uuid_2"
+ parent_snapshot_id="[null]" root_component_uuid="uuid_2" root_snapshot_id="[null]"
status="P" islast="[false]" purge_status="1"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
period2_mode="[null]" period2_param="[null]" period2_date="[null]"
deprecated_kee="[null]" authorization_updated_at="[null]"/>
<snapshots id="1"
+ uuid="u1"
component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
status="P" islast="[false]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
build_date="1228222680000" version="[null]" path="[null]"/>
<snapshots id="2"
+ uuid="u2"
component_uuid="EFGH" parent_snapshot_id="1" root_component_uuid="ABCD" root_snapshot_id="1"
status="P" islast="[false]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
build_date="1228222680000" version="[null]" path="[null]"/>
<snapshots id="3"
+ uuid="u3"
component_uuid="GHIJ" parent_snapshot_id="2" root_component_uuid="ABCD" root_snapshot_id="1"
status="P" islast="[false]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<!-- isLast is true, don't want to delete associated source lines -->
<snapshots id="4"
+ uuid="u4"
component_uuid="KLMN" parent_snapshot_id="2" root_component_uuid="ABCD" root_snapshot_id="1"
status="P" islast="[true]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
deprecated_kee="[null]" authorization_updated_at="[null]"/>
<snapshots id="1"
+ uuid="u1"
component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
status="P" islast="[false]" purge_status="1"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
build_date="1228222680000" version="[null]" path="[null]"/>
<snapshots id="2"
+ uuid="u2"
component_uuid="EFGH" parent_snapshot_id="1" root_component_uuid="ABCD" root_snapshot_id="1"
status="P" islast="[false]" purge_status="1"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<snapshots id="3"
+ uuid="u3"
component_uuid="GHIJ" parent_snapshot_id="2" root_component_uuid="ABCD" root_snapshot_id="1"
status="P" islast="[false]" purge_status="1"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
deprecated_kee="[null]" authorization_updated_at="[null]"/>
<snapshots id="1"
+ uuid="u1"
component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
status="P" islast="[false]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
version="[null]" path="[null]"/>
<snapshots id="2"
+ uuid="u2"
component_uuid="EFGH" parent_snapshot_id="1" root_component_uuid="ABCD" root_snapshot_id="1"
status="P" islast="[false]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<snapshots id="3"
+ uuid="u3"
component_uuid="GHIJ" parent_snapshot_id="2" root_component_uuid="ABCD" root_snapshot_id="1"
status="P" islast="[false]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<!-- past snapshot with status "processed" and already purged -->
<snapshots id="1"
+ uuid="u1"
component_uuid="projectUUID" parent_snapshot_id="[null]" root_component_uuid="projectUUID" root_snapshot_id="[null]"
status="P" islast="[false]" purge_status="1"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<!-- snapshot with status "processed" and flagged as "last" -> do not purge and do not delete -->
<snapshots id="3"
+ uuid="u3"
component_uuid="projectUUID" parent_snapshot_id="[null]" root_component_uuid="projectUUID" root_snapshot_id="[null]"
status="P" islast="[true]" purge_status="0"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<!-- past snapshot with status "processed" and already purged -->
<snapshots id="1"
+ uuid="u1"
component_uuid="projectUUID" parent_snapshot_id="[null]" root_component_uuid="projectUUID" root_snapshot_id="[null]"
status="P" islast="[false]" purge_status="1"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<!-- snapshot with status "unprocessed" -> to be deleted -->
<snapshots id="2"
+ uuid="u2"
component_uuid="projectUUID" parent_snapshot_id="[null]" root_component_uuid="projectUUID" root_snapshot_id="[null]"
status="U" islast="[false]" purge_status="0"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<!-- snapshot with status "processed" and flagged as "last" -> do not purge and do not delete -->
<snapshots id="3"
+ uuid="u3"
component_uuid="projectUUID" parent_snapshot_id="[null]" root_component_uuid="projectUUID" root_snapshot_id="[null]"
status="P" islast="[true]" purge_status="0"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<!-- do not purge last snapshots -->
<snapshots id="1"
+ uuid="u1"
component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
status="P" islast="[true]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
version="[null]" path="[null]"/>
<snapshots id="2"
+ uuid="u2"
component_uuid="EFGH" parent_snapshot_id="1" root_component_uuid="ABCD" root_snapshot_id="1"
status="P" islast="[true]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<snapshots id="3"
+ uuid="u3"
component_uuid="GHIJ" parent_snapshot_id="2" root_component_uuid="ABCD" root_snapshot_id="1"
status="P" islast="[true]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<!-- snapshots to be purged -->
<snapshots id="4"
+ uuid="u4"
component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
status="P" islast="[false]" purge_status="1"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<!-- do not purge last snapshots -->
<snapshots id="1"
+ uuid="u1"
component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
status="P" islast="[true]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
version="[null]" path="[null]"/>
<snapshots id="2"
+ uuid="u2"
component_uuid="EFGH" parent_snapshot_id="1" root_component_uuid="ABCD" root_snapshot_id="1"
status="P" islast="[true]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<snapshots id="3"
+ uuid="u3"
component_uuid="GHIJ" parent_snapshot_id="2" root_component_uuid="ABCD" root_snapshot_id="1"
status="P" islast="[true]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<!-- snapshots to be purged -->
<snapshots id="4"
+ uuid="u4"
component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
status="P" islast="[false]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
version="[null]" path="[null]"/>
<snapshots id="5"
+ uuid="u5"
component_uuid="EFGH" parent_snapshot_id="4" root_component_uuid="ABCD" root_snapshot_id="4"
status="P" islast="[false]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<snapshots id="6"
+ uuid="u6"
component_uuid="GHIJ" parent_snapshot_id="5" root_component_uuid="ABCD" root_snapshot_id="4"
status="P" islast="[false]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
description="[null]" language="java" copy_component_uuid="[null]" developer_uuid="[null]"
authorization_updated_at="[null]"/>
- <snapshots id="1" component_uuid="A" parent_snapshot_id="[null]" root_component_uuid="A" root_snapshot_id="[null]"
+ <snapshots id="1"
+ uuid="u1"
+ component_uuid="A" parent_snapshot_id="[null]" root_component_uuid="A" 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]"
description="[null]" language="java" copy_component_uuid="[null]" developer_uuid="[null]"
authorization_updated_at="[null]"/>
- <snapshots id="2" component_uuid="B" parent_snapshot_id="1" root_component_uuid="A" root_snapshot_id="1"
+ <snapshots id="2"
+ uuid="u2"
+ component_uuid="B" parent_snapshot_id="1" root_component_uuid="A" 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]"
description="[null]" language="java" copy_component_uuid="[null]" developer_uuid="[null]"
authorization_updated_at="[null]"/>
- <snapshots id="3" component_uuid="C" parent_snapshot_id="1" root_component_uuid="A" root_snapshot_id="1"
+ <snapshots id="3"
+ uuid="u3"
+ component_uuid="C" parent_snapshot_id="1" root_component_uuid="A" root_snapshot_id="1"
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]"
description="[null]" language="java" copy_component_uuid="[null]" developer_uuid="[null]"
authorization_updated_at="[null]"/>
- <snapshots id="4" component_uuid="D" parent_snapshot_id="3" root_component_uuid="A" root_snapshot_id="1"
+ <snapshots id="4"
+ uuid="u4"
+ component_uuid="D" parent_snapshot_id="3" root_component_uuid="A" root_snapshot_id="1"
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]"
<!-- do not delete if islast=true -->
<snapshots id="1"
+ uuid="u1"
component_uuid="P1" parent_snapshot_id="[null]" root_component_uuid="P1" root_snapshot_id="[null]"
status="P" islast="[true]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<!-- delete only resource 1 -->
<snapshots id="2"
+ uuid="u2"
component_uuid="uuid_2" parent_snapshot_id="1" root_component_uuid="P1" root_snapshot_id="1"
status="P" islast="[false]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<!-- do not delete if islast=true -->
<snapshots id="1"
+ uuid="u1"
component_uuid="P1" parent_snapshot_id="[null]" root_component_uuid="P1" root_snapshot_id="[null]"
status="P" islast="[true]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<!-- delete only resource 1 -->
<snapshots id="2"
+ uuid="u2"
component_uuid="uuid_2" parent_snapshot_id="1" root_component_uuid="P1" root_snapshot_id="1"
status="P" islast="[false]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<!-- to be deleted -->
<snapshots id="3"
+ uuid="u3"
component_uuid="P1" parent_snapshot_id="[null]" root_component_uuid="P1" root_snapshot_id="[null]"
status="P" islast="[false]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<!-- snapshot already purged -->
<snapshots id="1"
+ uuid="u1"
component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
status="P" islast="[false]" purge_status="1"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<!-- do not purge snapshot with islast=true-->
<snapshots id="2"
+ uuid="u2"
component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
status="P" islast="[true]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<!-- snapshot to be purged -->
<snapshots id="3"
+ uuid="u3"
component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
status="P" islast="[false]" purge_status="1"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<!-- snapshot already purged -->
<snapshots id="1"
+ uuid="u1"
component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
status="P" islast="[false]" purge_status="1"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<!-- do not purge snapshot with islast=true-->
<snapshots id="2"
+ uuid="u2"
component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
status="P" islast="[true]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<!-- snapshot to be purged -->
<snapshots id="3"
+ uuid="u3"
component_uuid="ABCD" parent_snapshot_id="[null]" root_component_uuid="ABCD" root_snapshot_id="[null]"
status="P" islast="[false]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<!-- last -> select -->
<snapshots id="1"
+ uuid="u1"
component_uuid="P1" parent_snapshot_id="[null]" root_component_uuid="P1" root_snapshot_id="[null]"
status="P" islast="[true]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<!-- not processed -> exclude -->
<snapshots id="2"
+ uuid="u2"
component_uuid="P1" parent_snapshot_id="[null]" root_component_uuid="P1" root_snapshot_id="[null]"
status="U" islast="[false]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<!-- on other resource -> exclude -->
<snapshots id="3"
+ uuid="u3"
component_uuid="uuid_222" parent_snapshot_id="[null]" root_component_uuid="uuid_222" root_snapshot_id="[null]"
status="P" islast="[true]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<!-- without event -> select -->
<snapshots id="4"
+ uuid="u4"
component_uuid="P1" parent_snapshot_id="[null]" root_component_uuid="P1" root_snapshot_id="[null]"
status="P" islast="[false]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
<!-- with event -> select -->
<snapshots id="5"
+ uuid="u5"
component_uuid="P1" parent_snapshot_id="[null]" root_component_uuid="P1" root_snapshot_id="[null]"
status="P" islast="[false]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
authorization_updated_at="[null]"/>
<snapshots id="1"
+ uuid="u1"
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]"
authorization_updated_at="[null]"/>
<snapshots id="1"
+ uuid="u1"
component_uuid="1" parent_snapshot_id="[null]" root_component_uuid="1" root_snapshot_id="[null]"
status="P" islast="[true]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
authorization_updated_at="[null]"/>
<snapshots id="1"
+ uuid="u1"
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]"
authorization_updated_at="[null]"/>
<snapshots id="1"
+ uuid="u1"
component_uuid="P1" parent_snapshot_id="[null]" root_component_uuid="P1" root_snapshot_id="[null]"
status="P" islast="[true]" purge_status="[null]"
period1_mode="[null]" period1_param="[null]" period1_date="[null]"
--- /dev/null
+CREATE TABLE "SNAPSHOTS" (
+ "ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
+ "CREATED_AT" BIGINT,
+ "BUILD_DATE" BIGINT,
+ "PROJECT_ID" INTEGER NOT NULL,
+ "PARENT_SNAPSHOT_ID" INTEGER,
+ "STATUS" VARCHAR(4) NOT NULL DEFAULT 'U',
+ "PURGE_STATUS" INTEGER,
+ "ISLAST" BOOLEAN NOT NULL DEFAULT FALSE,
+ "SCOPE" VARCHAR(3),
+ "QUALIFIER" VARCHAR(10),
+ "ROOT_SNAPSHOT_ID" INTEGER,
+ "VERSION" VARCHAR(500),
+ "PATH" VARCHAR(500),
+ "DEPTH" INTEGER,
+ "ROOT_PROJECT_ID" INTEGER,
+ "PERIOD1_MODE" VARCHAR(100),
+ "PERIOD1_PARAM" VARCHAR(100),
+ "PERIOD1_DATE" BIGINT,
+ "PERIOD2_MODE" VARCHAR(100),
+ "PERIOD2_PARAM" VARCHAR(100),
+ "PERIOD2_DATE" BIGINT,
+ "PERIOD3_MODE" VARCHAR(100),
+ "PERIOD3_PARAM" VARCHAR(100),
+ "PERIOD3_DATE" BIGINT,
+ "PERIOD4_MODE" VARCHAR(100),
+ "PERIOD4_PARAM" VARCHAR(100),
+ "PERIOD4_DATE" BIGINT,
+ "PERIOD5_MODE" VARCHAR(100),
+ "PERIOD5_PARAM" VARCHAR(100),
+ "PERIOD5_DATE" BIGINT
+);
--- /dev/null
+CREATE TABLE "SNAPSHOTS" (
+ "ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
+ "CREATED_AT" BIGINT,
+ "BUILD_DATE" BIGINT,
+ "COMPONENT_UUID" VARCHAR(50) NOT NULL,
+ "PARENT_SNAPSHOT_ID" INTEGER,
+ "STATUS" VARCHAR(4) NOT NULL DEFAULT 'U',
+ "PURGE_STATUS" INTEGER,
+ "ISLAST" BOOLEAN NOT NULL DEFAULT FALSE,
+ "SCOPE" VARCHAR(3),
+ "QUALIFIER" VARCHAR(10),
+ "ROOT_SNAPSHOT_ID" INTEGER,
+ "VERSION" VARCHAR(500),
+ "PATH" VARCHAR(500),
+ "DEPTH" INTEGER,
+ "ROOT_COMPONENT_UUID" VARCHAR(50) NOT NULL,
+ "PERIOD1_MODE" VARCHAR(100),
+ "PERIOD1_PARAM" VARCHAR(100),
+ "PERIOD1_DATE" BIGINT,
+ "PERIOD2_MODE" VARCHAR(100),
+ "PERIOD2_PARAM" VARCHAR(100),
+ "PERIOD2_DATE" BIGINT,
+ "PERIOD3_MODE" VARCHAR(100),
+ "PERIOD3_PARAM" VARCHAR(100),
+ "PERIOD3_DATE" BIGINT,
+ "PERIOD4_MODE" VARCHAR(100),
+ "PERIOD4_PARAM" VARCHAR(100),
+ "PERIOD4_DATE" BIGINT,
+ "PERIOD5_MODE" VARCHAR(100),
+ "PERIOD5_PARAM" VARCHAR(100),
+ "PERIOD5_DATE" BIGINT
+);
+++ /dev/null
-CREATE TABLE "SNAPSHOTS" (
- "ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
- "CREATED_AT" BIGINT,
- "BUILD_DATE" BIGINT,
- "PROJECT_ID" INTEGER NOT NULL,
- "PARENT_SNAPSHOT_ID" INTEGER,
- "STATUS" VARCHAR(4) NOT NULL DEFAULT 'U',
- "PURGE_STATUS" INTEGER,
- "ISLAST" BOOLEAN NOT NULL DEFAULT FALSE,
- "SCOPE" VARCHAR(3),
- "QUALIFIER" VARCHAR(10),
- "ROOT_SNAPSHOT_ID" INTEGER,
- "VERSION" VARCHAR(500),
- "PATH" VARCHAR(500),
- "DEPTH" INTEGER,
- "ROOT_PROJECT_ID" INTEGER,
- "PERIOD1_MODE" VARCHAR(100),
- "PERIOD1_PARAM" VARCHAR(100),
- "PERIOD1_DATE" BIGINT,
- "PERIOD2_MODE" VARCHAR(100),
- "PERIOD2_PARAM" VARCHAR(100),
- "PERIOD2_DATE" BIGINT,
- "PERIOD3_MODE" VARCHAR(100),
- "PERIOD3_PARAM" VARCHAR(100),
- "PERIOD3_DATE" BIGINT,
- "PERIOD4_MODE" VARCHAR(100),
- "PERIOD4_PARAM" VARCHAR(100),
- "PERIOD4_DATE" BIGINT,
- "PERIOD5_MODE" VARCHAR(100),
- "PERIOD5_PARAM" VARCHAR(100),
- "PERIOD5_DATE" BIGINT
-);
--- /dev/null
+CREATE TABLE "SNAPSHOTS" (
+ "ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
+ "CREATED_AT" BIGINT,
+ "BUILD_DATE" BIGINT,
+ "PROJECT_ID" INTEGER NOT NULL,
+ "COMPONENT_UUID" VARCHAR(50),
+ "PARENT_SNAPSHOT_ID" INTEGER,
+ "STATUS" VARCHAR(4) NOT NULL DEFAULT 'U',
+ "PURGE_STATUS" INTEGER,
+ "ISLAST" BOOLEAN NOT NULL DEFAULT FALSE,
+ "SCOPE" VARCHAR(3),
+ "QUALIFIER" VARCHAR(10),
+ "ROOT_SNAPSHOT_ID" INTEGER,
+ "VERSION" VARCHAR(500),
+ "PATH" VARCHAR(500),
+ "DEPTH" INTEGER,
+ "ROOT_PROJECT_ID" INTEGER,
+ "ROOT_COMPONENT_UUID" VARCHAR(50),
+ "PERIOD1_MODE" VARCHAR(100),
+ "PERIOD1_PARAM" VARCHAR(100),
+ "PERIOD1_DATE" BIGINT,
+ "PERIOD2_MODE" VARCHAR(100),
+ "PERIOD2_PARAM" VARCHAR(100),
+ "PERIOD2_DATE" BIGINT,
+ "PERIOD3_MODE" VARCHAR(100),
+ "PERIOD3_PARAM" VARCHAR(100),
+ "PERIOD3_DATE" BIGINT,
+ "PERIOD4_MODE" VARCHAR(100),
+ "PERIOD4_PARAM" VARCHAR(100),
+ "PERIOD4_DATE" BIGINT,
+ "PERIOD5_MODE" VARCHAR(100),
+ "PERIOD5_PARAM" VARCHAR(100),
+ "PERIOD5_DATE" BIGINT
+);
--- /dev/null
+CREATE TABLE "SNAPSHOTS" (
+ "ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
+ // NULLABLE
+ "UUID" VARCHAR(50),
+ "CREATED_AT" BIGINT,
+ "BUILD_DATE" BIGINT,
+ "COMPONENT_UUID" VARCHAR(50) NOT NULL,
+ "PARENT_SNAPSHOT_ID" INTEGER,
+ "STATUS" VARCHAR(4) NOT NULL DEFAULT 'U',
+ "PURGE_STATUS" INTEGER,
+ "ISLAST" BOOLEAN NOT NULL DEFAULT FALSE,
+ "SCOPE" VARCHAR(3),
+ "QUALIFIER" VARCHAR(10),
+ "ROOT_SNAPSHOT_ID" INTEGER,
+ "VERSION" VARCHAR(500),
+ "PATH" VARCHAR(500),
+ "DEPTH" INTEGER,
+ "ROOT_COMPONENT_UUID" VARCHAR(50) NOT NULL,
+ "PERIOD1_MODE" VARCHAR(100),
+ "PERIOD1_PARAM" VARCHAR(100),
+ "PERIOD1_DATE" BIGINT,
+ "PERIOD2_MODE" VARCHAR(100),
+ "PERIOD2_PARAM" VARCHAR(100),
+ "PERIOD2_DATE" BIGINT,
+ "PERIOD3_MODE" VARCHAR(100),
+ "PERIOD3_PARAM" VARCHAR(100),
+ "PERIOD3_DATE" BIGINT,
+ "PERIOD4_MODE" VARCHAR(100),
+ "PERIOD4_PARAM" VARCHAR(100),
+ "PERIOD4_DATE" BIGINT,
+ "PERIOD5_MODE" VARCHAR(100),
+ "PERIOD5_PARAM" VARCHAR(100),
+ "PERIOD5_DATE" BIGINT
+);
+++ /dev/null
-CREATE TABLE "SNAPSHOTS" (
- "ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
- "CREATED_AT" BIGINT,
- "BUILD_DATE" BIGINT,
- "PROJECT_ID" INTEGER NOT NULL,
- "COMPONENT_UUID" VARCHAR(50),
- "PARENT_SNAPSHOT_ID" INTEGER,
- "STATUS" VARCHAR(4) NOT NULL DEFAULT 'U',
- "PURGE_STATUS" INTEGER,
- "ISLAST" BOOLEAN NOT NULL DEFAULT FALSE,
- "SCOPE" VARCHAR(3),
- "QUALIFIER" VARCHAR(10),
- "ROOT_SNAPSHOT_ID" INTEGER,
- "VERSION" VARCHAR(500),
- "PATH" VARCHAR(500),
- "DEPTH" INTEGER,
- "ROOT_PROJECT_ID" INTEGER,
- "ROOT_COMPONENT_UUID" VARCHAR(50),
- "PERIOD1_MODE" VARCHAR(100),
- "PERIOD1_PARAM" VARCHAR(100),
- "PERIOD1_DATE" BIGINT,
- "PERIOD2_MODE" VARCHAR(100),
- "PERIOD2_PARAM" VARCHAR(100),
- "PERIOD2_DATE" BIGINT,
- "PERIOD3_MODE" VARCHAR(100),
- "PERIOD3_PARAM" VARCHAR(100),
- "PERIOD3_DATE" BIGINT,
- "PERIOD4_MODE" VARCHAR(100),
- "PERIOD4_PARAM" VARCHAR(100),
- "PERIOD4_DATE" BIGINT,
- "PERIOD5_MODE" VARCHAR(100),
- "PERIOD5_PARAM" VARCHAR(100),
- "PERIOD5_DATE" BIGINT
-);
--- /dev/null
+CREATE TABLE "SNAPSHOTS" (
+ "ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
+ "CREATED_AT" BIGINT,
+ "BUILD_DATE" BIGINT,
+ "PROJECT_ID" INTEGER NOT NULL,
+ "COMPONENT_UUID" VARCHAR(50),
+ "PARENT_SNAPSHOT_ID" INTEGER,
+ "STATUS" VARCHAR(4) NOT NULL DEFAULT 'U',
+ "PURGE_STATUS" INTEGER,
+ "ISLAST" BOOLEAN NOT NULL DEFAULT FALSE,
+ "SCOPE" VARCHAR(3),
+ "QUALIFIER" VARCHAR(10),
+ "ROOT_SNAPSHOT_ID" INTEGER,
+ "VERSION" VARCHAR(500),
+ "PATH" VARCHAR(500),
+ "DEPTH" INTEGER,
+ "ROOT_PROJECT_ID" INTEGER,
+ "ROOT_COMPONENT_UUID" VARCHAR(50),
+ "PERIOD1_MODE" VARCHAR(100),
+ "PERIOD1_PARAM" VARCHAR(100),
+ "PERIOD1_DATE" BIGINT,
+ "PERIOD2_MODE" VARCHAR(100),
+ "PERIOD2_PARAM" VARCHAR(100),
+ "PERIOD2_DATE" BIGINT,
+ "PERIOD3_MODE" VARCHAR(100),
+ "PERIOD3_PARAM" VARCHAR(100),
+ "PERIOD3_DATE" BIGINT,
+ "PERIOD4_MODE" VARCHAR(100),
+ "PERIOD4_PARAM" VARCHAR(100),
+ "PERIOD4_DATE" BIGINT,
+ "PERIOD5_MODE" VARCHAR(100),
+ "PERIOD5_PARAM" VARCHAR(100),
+ "PERIOD5_DATE" BIGINT
+);
+
+CREATE TABLE "PROJECTS" (
+ "ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
+ "KEE" VARCHAR(400),
+ "ROOT_ID" INTEGER,
+ "UUID" VARCHAR(50),
+ "PROJECT_UUID" VARCHAR(50),
+ "MODULE_UUID" VARCHAR(50),
+ "MODULE_UUID_PATH" VARCHAR(4000),
+ "NAME" VARCHAR(2000),
+ "DESCRIPTION" VARCHAR(2000),
+ "ENABLED" BOOLEAN NOT NULL DEFAULT TRUE,
+ "SCOPE" VARCHAR(3),
+ "QUALIFIER" VARCHAR(10),
+ "DEPRECATED_KEE" VARCHAR(400),
+ "PATH" VARCHAR(2000),
+ "LANGUAGE" VARCHAR(20),
+ "COPY_RESOURCE_ID" INTEGER,
+ "LONG_NAME" VARCHAR(2000),
+ "PERSON_ID" INTEGER,
+ "CREATED_AT" TIMESTAMP,
+ "AUTHORIZATION_UPDATED_AT" BIGINT
+);
--- /dev/null
+CREATE TABLE "SNAPSHOTS" (
+ "ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
+ // NULLABLE
+ "UUID" VARCHAR(50),
+ "CREATED_AT" BIGINT,
+ "BUILD_DATE" BIGINT,
+ "COMPONENT_UUID" VARCHAR(50) NOT NULL,
+ "PARENT_SNAPSHOT_ID" INTEGER,
+ "STATUS" VARCHAR(4) NOT NULL DEFAULT 'U',
+ "PURGE_STATUS" INTEGER,
+ "ISLAST" BOOLEAN NOT NULL DEFAULT FALSE,
+ "SCOPE" VARCHAR(3),
+ "QUALIFIER" VARCHAR(10),
+ "ROOT_SNAPSHOT_ID" INTEGER,
+ "VERSION" VARCHAR(500),
+ "PATH" VARCHAR(500),
+ "DEPTH" INTEGER,
+ "ROOT_COMPONENT_UUID" VARCHAR(50) NOT NULL,
+ "PERIOD1_MODE" VARCHAR(100),
+ "PERIOD1_PARAM" VARCHAR(100),
+ "PERIOD1_DATE" BIGINT,
+ "PERIOD2_MODE" VARCHAR(100),
+ "PERIOD2_PARAM" VARCHAR(100),
+ "PERIOD2_DATE" BIGINT,
+ "PERIOD3_MODE" VARCHAR(100),
+ "PERIOD3_PARAM" VARCHAR(100),
+ "PERIOD3_DATE" BIGINT,
+ "PERIOD4_MODE" VARCHAR(100),
+ "PERIOD4_PARAM" VARCHAR(100),
+ "PERIOD4_DATE" BIGINT,
+ "PERIOD5_MODE" VARCHAR(100),
+ "PERIOD5_PARAM" VARCHAR(100),
+ "PERIOD5_DATE" BIGINT
+);
+++ /dev/null
-CREATE TABLE "SNAPSHOTS" (
- "ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
- "CREATED_AT" BIGINT,
- "BUILD_DATE" BIGINT,
- "PROJECT_ID" INTEGER NOT NULL,
- "COMPONENT_UUID" VARCHAR(50),
- "PARENT_SNAPSHOT_ID" INTEGER,
- "STATUS" VARCHAR(4) NOT NULL DEFAULT 'U',
- "PURGE_STATUS" INTEGER,
- "ISLAST" BOOLEAN NOT NULL DEFAULT FALSE,
- "SCOPE" VARCHAR(3),
- "QUALIFIER" VARCHAR(10),
- "ROOT_SNAPSHOT_ID" INTEGER,
- "VERSION" VARCHAR(500),
- "PATH" VARCHAR(500),
- "DEPTH" INTEGER,
- "ROOT_PROJECT_ID" INTEGER,
- "ROOT_COMPONENT_UUID" VARCHAR(50),
- "PERIOD1_MODE" VARCHAR(100),
- "PERIOD1_PARAM" VARCHAR(100),
- "PERIOD1_DATE" BIGINT,
- "PERIOD2_MODE" VARCHAR(100),
- "PERIOD2_PARAM" VARCHAR(100),
- "PERIOD2_DATE" BIGINT,
- "PERIOD3_MODE" VARCHAR(100),
- "PERIOD3_PARAM" VARCHAR(100),
- "PERIOD3_DATE" BIGINT,
- "PERIOD4_MODE" VARCHAR(100),
- "PERIOD4_PARAM" VARCHAR(100),
- "PERIOD4_DATE" BIGINT,
- "PERIOD5_MODE" VARCHAR(100),
- "PERIOD5_PARAM" VARCHAR(100),
- "PERIOD5_DATE" BIGINT
-);
-
-CREATE TABLE "PROJECTS" (
- "ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
- "KEE" VARCHAR(400),
- "ROOT_ID" INTEGER,
- "UUID" VARCHAR(50),
- "PROJECT_UUID" VARCHAR(50),
- "MODULE_UUID" VARCHAR(50),
- "MODULE_UUID_PATH" VARCHAR(4000),
- "NAME" VARCHAR(2000),
- "DESCRIPTION" VARCHAR(2000),
- "ENABLED" BOOLEAN NOT NULL DEFAULT TRUE,
- "SCOPE" VARCHAR(3),
- "QUALIFIER" VARCHAR(10),
- "DEPRECATED_KEE" VARCHAR(400),
- "PATH" VARCHAR(2000),
- "LANGUAGE" VARCHAR(20),
- "COPY_RESOURCE_ID" INTEGER,
- "LONG_NAME" VARCHAR(2000),
- "PERSON_ID" INTEGER,
- "CREATED_AT" TIMESTAMP,
- "AUTHORIZATION_UPDATED_AT" BIGINT
-);