@Override public List<Revision> revisions() { ArrayList<Revision> revisions = new ArrayList<>(this.revisions); for(MaterialRevision revision : materialRevisions) { for(Modification modification : revision.getModifications()) { revisions.add(new SCMRevision(modification)); } } revisions.sort(Comparator.comparing(o -> ((SCMRevision) o))); return revisions; }
private boolean sameModifications(Modifications thatModifications) { Modifications modifications = this.materialRevision.getModifications(); return modifications != null ? modifications.equals(thatModifications) : thatModifications == null; } }
private List<MaterialRevision> deduplicateMaterialRevisionsForCommonMaterials(List<MaterialRevision> materialRevisions) { List<Modification> modificationsWithDuplicates = new ArrayList<>(); for (MaterialRevision revision : materialRevisions) { for (Modification modification : revision.getModifications()) { if (! modificationsWithDuplicates.contains(modification)) {//change this with a better data-structure so lookup is not O(n) modificationsWithDuplicates.add(modification); } } } return deduplicateRevisionsForMaterial(modificationsWithDuplicates); }
public Modifications getModifications(Material material) { for (MaterialRevision revision : revisions) { if (revision.getMaterial().equals(material)) { return revision.getModifications(); } } return new Modifications(); }
@Override public int hashCode() { int result; result = (materialRevision.getMaterial() != null ? materialRevision.getMaterial().getFingerprint().hashCode() : 0); result = 31 * result + (materialRevision.getModifications() != null ? materialRevision.getModifications().hashCode() : 0); return result; }
public boolean containsMyCheckin(Matcher matcher) { for (MaterialRevision materialRevision : this) { for (Modification modification : materialRevision.getModifications()) { String fullComment = String.format("%s %s", modification.getUserName(), Optional.ofNullable(modification.getComment()).orElse("")); if (matcher.matches(fullComment)) { return true; } } } return false; }
public boolean isMissingModifications() { if (isEmpty()) { return true; } for (MaterialRevision materialRevision : this) { if (materialRevision.getModifications().isEmpty()) { return true; } } return false; }
@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; MaterialRevisionWrapper that = (MaterialRevisionWrapper) o; if(this.materialRevision == that.materialRevision) return true; return sameMaterial(that.materialRevision.getMaterial()) && sameModifications(that.materialRevision.getModifications()); }
public MaterialInstance saveMaterialRevision(MaterialRevision materialRevision) { LOGGER.info("Saving revision {}", materialRevision); MaterialInstance materialInstance = findOrCreateFrom(materialRevision.getMaterial()); saveModifications(materialInstance, materialRevision.getModifications()); return materialInstance; }
private Collection<MaterialRevision> getMaterialsFromCurrentPipeline(List<MaterialRevision> finalRevisionsForScmChildren, MaterialRevisions actualRevisions) { List<MaterialRevision> updatedRevisions = new ArrayList<>(); for (MaterialRevision revisionsForScmChild : finalRevisionsForScmChildren) { MaterialRevision originalRevision = actualRevisions.findRevisionUsingMaterialFingerprintFor(revisionsForScmChild.getMaterial()); updatedRevisions.add(new MaterialRevision(originalRevision.getMaterial(), revisionsForScmChild.isChanged(), revisionsForScmChild.getModifications())); } return updatedRevisions; } }
private void addToBreakers(Set<String> breakers, MaterialRevision materialRevision) { for (Modification modification : materialRevision.getModifications()) { Author authorInfo = Author.getAuthorInfo(materialRevision.getMaterial().getType(), modification); if (authorInfo != null) { breakers.add(authorInfo.getName()); } } } }
public boolean shouldIgnore(MaterialRevision revision) { Material material = revision.getMaterial(); for (MaterialConfig materialConfig : node.materialConfigs()) { if (material.hasSameFingerprint(materialConfig)) { return revision.getModifications().shouldBeIgnoredByFilterIn(materialConfig); } } throw new RuntimeException("Material not found: " + material);//IMP: because, config can change between BCPS call and build cause production - shilpa/jj } }
private void populateXml(Element materials, MaterialRevision materialRevision, XmlWriterContext writerContext) { MaterialXmlViewModel.viewModelFor(materialRevision.getMaterial()).populateXml(materials, materialRevision.getModifications(), writerContext); }
private ArrayList<StageNotificationDTO.MaterialRevisionDTO> createBuildCause(BuildCause buildCause) { ArrayList<StageNotificationDTO.MaterialRevisionDTO> revisions = new ArrayList<>(); for (MaterialRevision currentRevision : buildCause.getMaterialRevisions()) { Map<String, Object> attributes = currentRevision.getMaterial().getAttributes(false); ArrayList<StageNotificationDTO.ModificationDTO> modifications = new ArrayList<>(); for (Modification modification : currentRevision.getModifications()) { modifications.add(new StageNotificationDTO.ModificationDTO(modification.getRevision(), modification.getModifiedTime(), modification.getAdditionalDataMap())); } revisions.add(new StageNotificationDTO.MaterialRevisionDTO(attributes, currentRevision.isChanged(), modifications)); } return revisions; } }
private ArrayList<StageNotificationDTO.MaterialRevisionDTO> createBuildCause(BuildCause buildCause) { ArrayList<StageNotificationDTO.MaterialRevisionDTO> revisions = new ArrayList<>(); for (MaterialRevision currentRevision : buildCause.getMaterialRevisions()) { Map<String, Object> attributes = currentRevision.getMaterial().getAttributes(false); ArrayList<StageNotificationDTO.ModificationDTO> modifications = new ArrayList<>(); for (Modification modification : currentRevision.getModifications()) { modifications.add(new StageNotificationDTO.ModificationDTO(modification.getRevision(), modification.getModifiedTime(), modification.getAdditionalDataMap())); } revisions.add(new StageNotificationDTO.MaterialRevisionDTO(attributes, currentRevision.isChanged(), modifications)); } return revisions; } }
private ArrayList<StageNotificationDTO.MaterialRevisionDTO> createBuildCause(BuildCause buildCause) { ArrayList<StageNotificationDTO.MaterialRevisionDTO> revisions = new ArrayList<>(); for (MaterialRevision currentRevision : buildCause.getMaterialRevisions()) { Map<String, Object> attributes = currentRevision.getMaterial().getAttributes(false); ArrayList<StageNotificationDTO.ModificationDTO> modifications = new ArrayList<>(); for (Modification modification : currentRevision.getModifications()) { modifications.add(new StageNotificationDTO.ModificationDTO(modification.getRevision(), DateUtil.dateToString(modification.getModifiedTime()), modification.getAdditionalDataMap())); } revisions.add(new StageNotificationDTO.MaterialRevisionDTO(attributes, currentRevision.isChanged(), modifications)); } return revisions; } }
private void assertRevisions(BuildAssignment buildAssignment, MaterialRevision expectedRevision) { MaterialRevision actualRevision = buildAssignment.materialRevisions().findRevisionFor(expectedRevision.getMaterial()); assertThat(actualRevision.getMaterial(), is(expectedRevision.getMaterial())); assertThat(actualRevision.getModifications().size(), is(expectedRevision.getModifications().size())); for (int i = 0; i < actualRevision.getModifications().size(); i++) { final Modification actualModification = actualRevision.getModifications().get(i); final Modification expectedModification = expectedRevision.getModifications().get(i); assertThat(actualModification.getRevision(), is(expectedModification.getRevision())); assertThat(actualModification.getModifiedFiles().isEmpty(), is(true)); } }
@Test public void shouldReturnOnlyLatestModificationIfNoNewChangesAvailable() throws Exception { Modification modificationForRevisionTip = new Modification("Unknown", "Unknown", null, new Date(), REVISION_2.getRevision()); Modification olderModification = new Modification("Unknown", "Unknown", null, new Date(), REVISION_0.getRevision()); MaterialRevision revision = new MaterialRevision(hgMaterial, modificationForRevisionTip, olderModification); MaterialRevision unchangedRevision = findNewRevision(revision, hgMaterial, workingFolder, new TestSubprocessExecutionContext()); assertThat(unchangedRevision.getModifications().size(), is(1)); assertThat(unchangedRevision.getModifications().get(0), is(modificationForRevisionTip)); }
public MaterialRevision findNewRevision(MaterialRevision materialRevision, HgMaterial material, File workingFolder, final SubprocessExecutionContext execCtx) { List<Modification> newModifications = material.modificationsSince(workingFolder, materialRevision.getRevision(), execCtx); return materialRevision.latestChanges(material, materialRevision.getModifications(), newModifications); } }
private MaterialRevisions restoreOriginalMaterialConfigAndMaterialOrderUsingFingerprint(MaterialRevisions actualRevisions, MaterialRevisions computedRevisions) { MaterialRevisions orderedComputedRevisions = new MaterialRevisions(); for (MaterialRevision actualRevision : actualRevisions) { MaterialRevision revisionForMaterial = computedRevisions.findRevisionUsingMaterialFingerprintFor(actualRevision.getMaterial()); MaterialRevision materialRevisionWithRestoredMaterialConfig = new MaterialRevision(actualRevision.getMaterial(), revisionForMaterial.isChanged(), revisionForMaterial.getModifications()); orderedComputedRevisions.addRevision(materialRevisionWithRestoredMaterialConfig); } return orderedComputedRevisions; }