public static HealthStateScope forMaterialConfig(MaterialConfig materialConfig) { return new HealthStateScope(ScopeType.MATERIAL, materialConfig.getSqlCriteria().toString()); }
private Set<MaterialConfig> getUniqueMaterialConfigs(boolean ignoreManualPipelines) { Set<MaterialConfig> materialConfigs = new HashSet<>(); Set<Map> uniqueMaterials = new HashSet<>(); for (PipelineConfig pipelineConfig : pipelinesFromAllGroups()) { for (MaterialConfig materialConfig : pipelineConfig.materialConfigs()) { if (!uniqueMaterials.contains(materialConfig.getSqlCriteria())) { if (ignoreManualPipelines && !materialConfig.isAutoUpdate() && materialConfig instanceof ScmMaterialConfig) { continue; } materialConfigs.add(materialConfig); uniqueMaterials.add(materialConfig.getSqlCriteria()); } } } return materialConfigs; }
private Set<MaterialConfig> getUniqueMaterials(boolean ignoreManualPipelines, boolean ignoreConfigRepos) { Set<MaterialConfig> materialConfigs = new HashSet<>(); Set<Map> uniqueMaterials = new HashSet<>(); for (PipelineConfig pipelineConfig : pipelinesFromAllGroups()) { for (MaterialConfig materialConfig : pipelineConfig.materialConfigs()) { if (!uniqueMaterials.contains(materialConfig.getSqlCriteria())) { boolean shouldSkipPolling = !materialConfig.isAutoUpdate(); boolean scmOrPackageMaterial = !(materialConfig instanceof DependencyMaterialConfig); if (ignoreManualPipelines && scmOrPackageMaterial && shouldSkipPolling) { continue; } materialConfigs.add(materialConfig); uniqueMaterials.add(materialConfig.getSqlCriteria()); } } } if (!ignoreConfigRepos) { for (ConfigRepoConfig configRepo : this.configRepos) { MaterialConfig materialConfig = configRepo.getMaterialConfig(); if (!uniqueMaterials.contains(materialConfig.getSqlCriteria())) { materialConfigs.add(materialConfig); uniqueMaterials.add(materialConfig.getSqlCriteria()); } } } return materialConfigs; }
public MaterialInstance findMaterialInstance(MaterialConfig materialConfig) { String cacheKey = materialKey(materialConfig.getFingerprint()); MaterialInstance materialInstance = (MaterialInstance) goCache.get(cacheKey); if (materialInstance == null) { synchronized (cacheKey) { materialInstance = (MaterialInstance) goCache.get(cacheKey); if (materialInstance == null) { DetachedCriteria hibernateCriteria = DetachedCriteria.forClass(materialConfigConverter.getInstanceType(materialConfig)); for (Map.Entry<String, Object> property : materialConfig.getSqlCriteria().entrySet()) { if (!property.getKey().equals(AbstractMaterial.SQL_CRITERIA_TYPE)) { //type is polymorphic mapping discriminator if (property.getValue() == null) { hibernateCriteria.add(isNull(property.getKey())); } else { hibernateCriteria.add(eq(property.getKey(), property.getValue())); } } } materialInstance = (MaterialInstance) firstResult(hibernateCriteria); if (materialInstance != null) { goCache.put(cacheKey, materialInstance); } } } } return materialInstance;//TODO: clone me, caller may mutate }