public Map<CaseInsensitiveString, CanDeleteResult> canDeletePipelines() { CruiseConfig cruiseConfig = goConfigService.getCurrentConfig(); Map<CaseInsensitiveString, CanDeleteResult> nameToCanDeleteIt = new HashMap<>(); Hashtable<CaseInsensitiveString, Node> hashtable = cruiseConfig.getDependencyTable(); List<CaseInsensitiveString> pipelineNames = cruiseConfig.getAllPipelineNames(); for (CaseInsensitiveString pipelineName : pipelineNames) { ConfigOrigin origin = pipelineConfigOrigin(cruiseConfig, pipelineName); if (origin != null && !origin.isLocal()) { nameToCanDeleteIt.put(pipelineName, new CanDeleteResult(false, "Cannot delete pipeline '" + pipelineName + "' defined in configuration repository '" + origin.displayName() + "'.")); } else { CaseInsensitiveString envName = environmentUsedIn(cruiseConfig, pipelineName); if (envName != null) { nameToCanDeleteIt.put(pipelineName, new CanDeleteResult(false, "Cannot delete pipeline '" + pipelineName + "' as it is present in environment '" + envName + "'.")); } else { CaseInsensitiveString downStream = downstreamOf(hashtable, pipelineName); if (downStream != null) { nameToCanDeleteIt.put(pipelineName, new CanDeleteResult(false, "Cannot delete pipeline '" + pipelineName + "' as pipeline '" + downStream + "' depends on it.")); } else { nameToCanDeleteIt.put(pipelineName, new CanDeleteResult(true, "Delete this pipeline.")); } } } } return nameToCanDeleteIt; }