XMLFormatter.java
1/*******************************************************************************
2 * Copyright (c) 2009, 2010 Mountainminds GmbH & Co. KG and Contributors
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors:
9 * Brock Janiczak -initial API and implementation
10 *
11 * $Id: $
12 *******************************************************************************/
13package org.jacoco.report.xml;
14
15import java.io.IOException;
16
17import org.jacoco.core.analysis.ICoverageNode;
18import org.jacoco.report.IReportFormatter;
19import org.jacoco.report.IReportVisitor;
20import org.jacoco.report.ISingleReportOutput;
21
22/**
23 * Report formatter that creates a single XML file for a coverage session
24 *
25 * @author Brock Janiczak
26 * @version $Revision: $
27 */
28public class XMLFormatter implements IReportFormatter {
29
30 private static final String PUBID = "-//JACOCO//DTD Report 1.0//EN";
31
32 private static final String SYSTEM = "report.dtd";
33
34 private ISingleReportOutput output;
35
36 private String outputEncoding = "UTF-8";
37
38 public IReportVisitor createReportVisitor(final ICoverageNode session)
39 throws IOException {
40 final XMLElement root = new XMLDocument("report", PUBID, SYSTEM,
41 outputEncoding, true, output.createFile());
42 return new XMLReportNodeHandler(root, session);
43 }
44
45 /**
46 * Sets the report output callback for this report formatter. This is a
47 * mandatory property.
48 *
49 * @param output
50 * report output
51 */
52 public void setReportOutput(final ISingleReportOutput output) {
53 this.output = output;
54 }
55
56 /**
57 * Sets the encoding used for generated XML document. Default is UTF-8.
58 *
59 * @param outputEncoding
60 * XML output encoding
61 */
62 public void setOutputEncoding(final String outputEncoding) {
63 this.outputEncoding = outputEncoding;
64 }
65
66}