public boolean isMissingModifications() { if (isEmpty()) { return true; } for (MaterialRevision materialRevision : this) { if (materialRevision.getModifications().isEmpty()) { return true; } } return false; }
private void insertDependencyMaterialRevisions(final DependencyMaterial dependencyMaterial, Modifications list) { if (list.isEmpty()) { insertRevisionsForAllParentStageInstances(dependencyMaterial); } else { insertRevisionsForParentStagesAfter(dependencyMaterial, list); } }
public String getUsername() { return isEmpty() ? "Unknown" : first().getUserDisplayName(); }
public String getRevision() { return isEmpty() ? "Unknown" : first().getRevision(); }
public void insertLatestOrNewModifications(Material material, MaterialInstance materialInstance, File folder, Modifications list) { List<Modification> newChanges = list.isEmpty() ? materialChecker.findLatestModification(folder, material, subprocessExecutionContext) : materialService.modificationsSince(material, folder, list.latestRevision(material), subprocessExecutionContext); if (newChanges.isEmpty()) { LOGGER.debug("[Material Update] Did not find any new modifications for material '{}' with flyweight '{}' using working directory '{}'", material, material.getFingerprint(), folder.getAbsolutePath()); } else { LOGGER.info("[Material Update] Found '{}' modifications for material '{}' with flyweight '{}' using working directory '{}'", newChanges.size(), material, material.getFingerprint(), folder.getAbsolutePath()); materialRepository.saveModifications(materialInstance, newChanges); } }
public static Revision oldestRevision(Modifications modifications) { if (modifications.isEmpty()) { throw new RuntimeException("Cannot find oldest revision."); } else { return new StringRevision(modifications.get(modifications.size()-1).getRevision()); } }
@Override public Revision oldestRevision(Modifications modifications) { if (modifications.isEmpty()) { return new NullRevision(); } Modification modification = modifications.get(0); return new PackageMaterialRevision(modification.getRevision(), modification.getModifiedTime()); }
@Override public Revision oldestRevision(Modifications modifications) { if (modifications.isEmpty()) { return new NullRevision(); } Modification modification = modifications.get(modifications.size() - 1); return new PluggableSCMMaterialRevision(modification.getRevision(), modification.getModifiedTime()); }
private List<MaterialRevision> createFinalRevisionsForScmChildren(PipelineTimelineEntry latestRootNodeInstance, List<RootFanInNode> scmChildren, List<DependencyFanInNode> depChildren) { Set<FaninScmMaterial> scmMaterialsFromDepChildren = scmMaterialsOfDepChildren(depChildren); List<MaterialRevision> finalRevisions = new ArrayList<>(); for (RootFanInNode child : scmChildren) { child.setScmRevision(scmMaterialsFromDepChildren); MaterialConfig materialConfig = child.materialConfig; Material material = materialConfigConverter.toMaterial(materialConfig); MaterialRevision revision = new MaterialRevision(material); if (latestRootNodeInstance != null) { PipelineInstanceModel pipeline = pipelineDao.findPipelineHistoryByNameAndCounter(latestRootNodeInstance.getPipelineName(), latestRootNodeInstance.getCounter()); for (MaterialRevision materialRevision : pipeline.getCurrentRevisions()) { if (materialRevision.getMaterial().getFingerprint().equals(child.materialConfig.getFingerprint())) { List<Modification> modificationsSince = materialRepository.findModificationsSinceAndUptil(material, materialRevision, child.scmRevision); revision.addModifications(modificationsSince); break; } } } if (revision.getModifications().isEmpty() && child.scmRevision == null) { MaterialRevisions latestRevisions = materialRepository.findLatestRevisions(new MaterialConfigs(materialConfig)); finalRevisions.addAll(latestRevisions.getRevisions()); continue; } if (revision.getModifications().isEmpty()) { revision = new MaterialRevision(material, materialRepository.findModificationWithRevision(material, child.scmRevision.revision)); } finalRevisions.add(revision); } return finalRevisions; }
Modification findLatestModification(final MaterialInstance expandedInstance) { Modifications modifications = cachedModifications(expandedInstance); if (modifications != null && !modifications.isEmpty()) { return modifications.get(0); } String cacheKey = latestMaterialModificationsKey(expandedInstance); synchronized (cacheKey) { Modification modification = (Modification) getHibernateTemplate().execute((HibernateCallback) session -> { Query query = session.createQuery("FROM Modification WHERE materialId = ? ORDER BY id DESC"); query.setMaxResults(1); query.setLong(0, expandedInstance.getId()); return query.uniqueResult(); }); goCache.put(cacheKey, new Modifications(modification)); return modification; } }
@Test public void shouldReturnModificationsForAGivenMaterial() { MaterialRevisions oneMaterialRevision = new MaterialRevisions(new MaterialRevision(material, yesterdayMod)); assertThat(oneMaterialRevision.getModifications(material), is(new Modifications(yesterdayMod))); MaterialRevisions emptyMaterialRevision = new MaterialRevisions(); assertThat(emptyMaterialRevision.getModifications(material).isEmpty(), is(true)); MaterialRevisions differentMaterialRevision = new MaterialRevisions(new MaterialRevision(MaterialsMother.hgMaterial(), yesterdayMod)); assertThat(differentMaterialRevision.getModifications(material).isEmpty(), is(true)); }
public void updateChangedRevisions(CaseInsensitiveString pipelineName, BuildCause buildCause) { for (MaterialRevision materialRevision : buildCause.getMaterialRevisions()) { Long latestModificationRunByPipeline = materialRepository.latestModificationRunByPipeline(pipelineName, materialRevision.getMaterial()); Modifications revised = new Modifications(); for (Modification modification : materialRevision.getModifications()) { if(modification.getId() > latestModificationRunByPipeline) revised.add(modification); } if(!revised.isEmpty()) { materialRevision.replaceModifications(revised); materialRevision.markAsChanged(); } else{ materialRevision.markAsNotChanged(); } } } }