|
|
@@ -22,12 +22,10 @@ import java.text.SimpleDateFormat; |
|
|
|
import javax.xml.parsers.DocumentBuilder; |
|
|
|
|
|
|
|
import org.apache.tools.ant.util.DOMElementWriter; |
|
|
|
import org.apache.tools.ant.util.JAXPUtils; |
|
|
|
import org.apache.tools.ant.util.DOMUtils; |
|
|
|
|
|
|
|
import org.w3c.dom.CDATASection; |
|
|
|
import org.w3c.dom.Document; |
|
|
|
import org.w3c.dom.Element; |
|
|
|
import org.w3c.dom.Text; |
|
|
|
|
|
|
|
/** |
|
|
|
* Class used to generate an XML changelog. |
|
|
@@ -51,7 +49,7 @@ public class SvnChangeLogWriter { |
|
|
|
public void printChangeLog(final PrintWriter output, |
|
|
|
final SvnEntry[] entries) throws IOException { |
|
|
|
output.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); |
|
|
|
Document doc = JAXPUtils.getDocumentBuilder().newDocument(); |
|
|
|
Document doc = DOMUtils.newDocument(); |
|
|
|
Element root = doc.createElement("changelog"); |
|
|
|
DOM_WRITER.openElement(root, output, 0, "\t"); |
|
|
|
output.println(); |
|
|
@@ -77,53 +75,22 @@ public class SvnChangeLogWriter { |
|
|
|
Document doc = element.getOwnerDocument(); |
|
|
|
|
|
|
|
Element ent = doc.createElement("entry"); |
|
|
|
appendTextElement(ent, "date", OUTPUT_DATE.format(entry.getDate())); |
|
|
|
appendTextElement(ent, "time", OUTPUT_TIME.format(entry.getDate())); |
|
|
|
appendCDATAElement(ent, "author", entry.getAuthor()); |
|
|
|
appendTextElement(ent, "revision", entry.getRevision()); |
|
|
|
DOMUtils.appendTextElement(ent, "date", |
|
|
|
OUTPUT_DATE.format(entry.getDate())); |
|
|
|
DOMUtils.appendTextElement(ent, "time", |
|
|
|
OUTPUT_TIME.format(entry.getDate())); |
|
|
|
DOMUtils.appendCDATAElement(ent, "author", entry.getAuthor()); |
|
|
|
DOMUtils.appendTextElement(ent, "revision", entry.getRevision()); |
|
|
|
|
|
|
|
SvnEntry.Path[] paths = entry.getPaths(); |
|
|
|
for (int i = 0; i < paths.length; i++) { |
|
|
|
Element path = doc.createElement("path"); |
|
|
|
ent.appendChild(path); |
|
|
|
appendCDATAElement(path, "name", paths[i].getName()); |
|
|
|
appendTextElement(path, "action", paths[i].getActionDescription()); |
|
|
|
Element path = DOMUtils.createChildElement(ent, "path"); |
|
|
|
DOMUtils.appendCDATAElement(path, "name", paths[i].getName()); |
|
|
|
DOMUtils.appendTextElement(path, "action", |
|
|
|
paths[i].getActionDescription()); |
|
|
|
} |
|
|
|
appendCDATAElement(ent, "message", entry.getMessage()); |
|
|
|
DOMUtils.appendCDATAElement(ent, "message", entry.getMessage()); |
|
|
|
DOM_WRITER.write(ent, output, 1, "\t"); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Creates a named element with nested text as child of the given element. |
|
|
|
* |
|
|
|
* @param parent the parent element |
|
|
|
* @param name name of the child element |
|
|
|
* @param content the content of the nested text |
|
|
|
*/ |
|
|
|
private static void appendTextElement(Element parent, String name, |
|
|
|
String content) { |
|
|
|
Document doc = parent.getOwnerDocument(); |
|
|
|
Element e = doc.createElement(name); |
|
|
|
parent.appendChild(e); |
|
|
|
Text t = doc.createTextNode(content); |
|
|
|
e.appendChild(t); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Creates a named element with a nested CDATA section as child of |
|
|
|
* the given element. |
|
|
|
* |
|
|
|
* @param parent the parent element |
|
|
|
* @param name name of the child element |
|
|
|
* @param content the content of the nested text |
|
|
|
*/ |
|
|
|
private static void appendCDATAElement(Element parent, String name, |
|
|
|
String content) { |
|
|
|
Document doc = parent.getOwnerDocument(); |
|
|
|
Element e = doc.createElement(name); |
|
|
|
parent.appendChild(e); |
|
|
|
CDATASection c = doc.createCDATASection(content); |
|
|
|
e.appendChild(c); |
|
|
|
} |
|
|
|
} |
|
|
|
|