/** * Escape the id of the given rule in a way such that it can be used as file * name. * * @param rule * The rule. * @return The escaped name. */ public static String escapeRuleId(Rule rule) { return rule != null ? rule.getId().replaceAll("\\:", "_") : null; }
@Override public void setResult(Result<? extends ExecutableRule> result) throws ReportException { Rule rule = result.getRule(); Set<String> selectedReports = result.getRule().getReport().getSelectedTypes(); if ((selectedReports != null && selectedReports.contains(GRAPHML)) || (rule instanceof Concept && rule.getId().matches(conceptPattern))) { SubGraph subGraph = subGraphFactory.createSubGraph(result); try { String fileName = ReportHelper.escapeRuleId(rule); if (!fileName.endsWith(FILEEXTENSION_GRAPHML)) { fileName = fileName + FILEEXTENSION_GRAPHML; } File file = new File(reportDirectory, fileName); xmlGraphMLWriter.write(result, subGraph, file); reportContext.addReport("GraphML", result.getRule(), ReportContext.ReportType.LINK, file.toURI().toURL()); } catch (IOException | XMLStreamException e) { throw new ReportException("Cannot write custom report.", e); } } } }