1
package org.herac.tuxguitar.gui.editors.chord.xml;
4
import java.io.FileNotFoundException;
5
import java.io.FileOutputStream;
6
import java.util.Iterator;
9
import javax.xml.parsers.DocumentBuilder;
10
import javax.xml.parsers.DocumentBuilderFactory;
11
import javax.xml.parsers.FactoryConfigurationError;
12
import javax.xml.parsers.ParserConfigurationException;
13
import javax.xml.transform.OutputKeys;
14
import javax.xml.transform.Result;
15
import javax.xml.transform.Source;
16
import javax.xml.transform.Transformer;
17
import javax.xml.transform.TransformerConfigurationException;
18
import javax.xml.transform.TransformerException;
19
import javax.xml.transform.TransformerFactory;
20
import javax.xml.transform.dom.DOMSource;
21
import javax.xml.transform.stream.StreamResult;
23
import org.herac.tuxguitar.song.models.TGChord;
24
import org.w3c.dom.Attr;
25
import org.w3c.dom.Document;
26
import org.w3c.dom.Node;
28
public class ChordXMLWriter {
30
public static void setChords(List chords,String fileName) {
31
File file = new File(fileName);
33
Document doc = createDocument();
34
setChords(chords,doc);
35
saveDocument(doc,file);
38
public static Document createDocument() {
39
Document document = null;
40
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
42
DocumentBuilder builder = factory.newDocumentBuilder();
43
document = builder.newDocument();
44
}catch (ParserConfigurationException pce) {
45
pce.printStackTrace();
50
public static void saveDocument(Document document,File file) {
52
FileOutputStream fs = new FileOutputStream(file);
55
TransformerFactory xformFactory = TransformerFactory.newInstance();
56
Transformer idTransform = xformFactory.newTransformer();
57
Source input = new DOMSource(document);
58
Result output = new StreamResult(fs);
59
idTransform.setOutputProperty(OutputKeys.INDENT, "yes");
60
idTransform.transform(input, output);
61
} catch (FactoryConfigurationError e) {
63
} catch (TransformerConfigurationException e) {
65
} catch (TransformerException e) {
67
} catch (FileNotFoundException e) {
73
* Write chords to xml file
75
private static void setChords(List chords,Document document){
77
Node chordsNode = document.createElement(ChordXML.CHORD_LIST_TAG);
79
Iterator it = chords.iterator();
81
TGChord chord = (TGChord)it.next();
84
Node chordNode = document.createElement(ChordXML.CHORD_TAG);
85
chordsNode.appendChild(chordNode);
88
Attr nameAttr = document.createAttribute(ChordXML.CHORD_NAME_ATTRIBUTE);
89
nameAttr.setNodeValue( chord.getName());
90
chordNode.getAttributes().setNamedItem(nameAttr);
93
Attr stringsAttr = document.createAttribute(ChordXML.CHORD_STRINGS_ATTRIBUTE);
94
stringsAttr.setNodeValue(Integer.toString(chord.getStrings().length));
95
chordNode.getAttributes().setNamedItem(stringsAttr);
97
//first fret attribute
98
Attr firstFretAttr = document.createAttribute(ChordXML.CHORD_FIRST_FRET_ATTRIBUTE);
99
firstFretAttr.setNodeValue(Integer.toString(chord.getFirstFret()));
100
chordNode.getAttributes().setNamedItem(firstFretAttr);
102
for(int i = 0;i < chord.getStrings().length; i++){
104
Node stringNode = document.createElement(ChordXML.STRING_TAG);
105
chordNode.appendChild(stringNode);
108
Attr numberAttr = document.createAttribute(ChordXML.STRING_NUMBER_ATTRIBUTE);
109
numberAttr.setNodeValue(Integer.toString(i));
110
stringNode.getAttributes().setNamedItem(numberAttr);
113
Attr fretAttr = document.createAttribute(ChordXML.STRING_FRET_ATTRIBUTE);
114
fretAttr.setNodeValue(Integer.toString(chord.getFretValue(i)));
115
stringNode.getAttributes().setNamedItem(fretAttr);
119
document.appendChild(chordsNode);