public MaterialInstance getMaterialInstance() { return toRevision.getMaterialInstance(); }
private PipelineMaterialRevision(String name, String folder, long pipelineId, Modification from, Modification to, boolean changed, Long actualFromModificationId) { this(); this.pipelineId = pipelineId; this.fromRevision = from; this.toRevision = to; this.name = name; this.folder = folder; this.changed = changed; this.actualFromRevisionId = actualFromModificationId; this.materialId = to.getMaterialInstance().getId(); }
public Material getMaterial() { return toRevision.getMaterialInstance().toOldMaterial(name, folder, null); }
Map<Material, Modifications> groupModsByMaterial(Collection<Modification> modifications) { Map<Material, Modifications> grouped = new LinkedHashMap<>(); for (Modification modification : modifications) { Material material = modification.getMaterialInstance().toOldMaterial(null, null, null); Modifications mods = mapContainsMaterialWithFingerprint(grouped, material.getFingerprint()); if (mods == null) { mods = new Modifications(); grouped.put(material, mods); } mods.add(modification); } return grouped; }
private List<String> pmrModificationsKey(Modification modification, List<PipelineMaterialRevision> pmrs) { final long id = modification.getId(); final MaterialInstance materialInstance = modification.getMaterialInstance(); Collection<PipelineMaterialRevision> matchedPmrs = CollectionUtils.select(pmrs, pmr -> { long from = pmr.getFromModification().getId(); long to = pmr.getToModification().getId(); MaterialInstance pmi = findMaterialInstance(pmr.getMaterial()); return from <= id && id <= to && materialInstance.equals(pmi); }); List<String> keys = new ArrayList<>(matchedPmrs.size()); for (PipelineMaterialRevision matchedPmr : matchedPmrs) { keys.add(pmrModificationsKey(matchedPmr)); } return keys; }
private void loadPMRByPipelineIds(List<Long> pipelineIds) { List<PipelineMaterialRevision> pmrs = (List<PipelineMaterialRevision>) getHibernateTemplate().findByCriteria(buildPMRDetachedQuery(pipelineIds)); sortPersistentObjectsById(pmrs, true); final Set<PipelineMaterialRevision> uniquePmrs = new HashSet<>(); for (PipelineMaterialRevision pmr : pmrs) { String cacheKey = pipelinePmrsKey(pmr.getPipelineId()); List<PipelineMaterialRevision> pmrsForId = (List<PipelineMaterialRevision>) goCache.get(cacheKey); if (pmrsForId == null) { pmrsForId = new ArrayList<>(); goCache.put(cacheKey, pmrsForId); } pmrsForId.add(pmr); putMaterialInstanceIntoCache(pmr.getToModification().getMaterialInstance()); uniquePmrs.add(pmr); } loadModificationsIntoCache(uniquePmrs); }
public void savePipelineMaterialRevision(Pipeline pipeline, long pipelineId, MaterialRevision materialRevision) { Modification from = materialRevision.getOldestModification(); Modification to = materialRevision.getLatestModification(); Long actualFromModificationId = getLastBuiltModificationId(pipeline, to.getMaterialInstance(), from); if (!from.hasId() || !to.hasId()) { throw bomb("You cannot save a PipelineMaterialRevision unless the modifications have already been saved."); } PipelineMaterialRevision revision = new PipelineMaterialRevision(pipelineId, materialRevision, actualFromModificationId); save(revision, pipeline.getName()); }