~ubuntu-branches/ubuntu/oneiric/tuxguitar/oneiric

« back to all changes in this revision

Viewing changes to src/org/herac/tuxguitar/gui/editors/chord/xml/ChordWriter.java

  • Committer: Bazaar Package Importer
  • Author(s): Philippe Coval
  • Date: 2008-06-19 00:30:30 UTC
  • mto: (5.1.2 sid)
  • mto: This revision was merged to the branch mainline in revision 3.
  • Revision ID: james.westby@ubuntu.com-20080619003030-h719szrhsngou7c6
Tags: upstream-1.0
ImportĀ upstreamĀ versionĀ 1.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
package org.herac.tuxguitar.gui.editors.chord.xml;
2
 
 
3
 
import java.io.File;
4
 
import java.io.FileNotFoundException;
5
 
import java.io.FileOutputStream;
6
 
import java.util.Iterator;
7
 
import java.util.List;
8
 
 
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;
22
 
 
23
 
import org.herac.tuxguitar.song.models.Chord;
24
 
import org.w3c.dom.Attr;
25
 
import org.w3c.dom.Document;
26
 
import org.w3c.dom.Node;
27
 
 
28
 
public class ChordWriter {
29
 
        
30
 
        private static final String CHORD_LIST_TAG = "chords";
31
 
        private static final String CHORD_TAG = "chord";
32
 
        private static final String CHORD_NAME_ATTRIBUTE = "name";
33
 
        private static final String CHORD_STRINGS_ATTRIBUTE = "strings";
34
 
        private static final String STRING_TAG = "string";
35
 
        private static final String STRING_NUMBER_ATTRIBUTE = "number";
36
 
        private static final String STRING_FRET_ATTRIBUTE = "fret";
37
 
        
38
 
    public static void setChords(List chords,String fileName) {         
39
 
        File file = new File(fileName);
40
 
        
41
 
        Document doc = createDocument();
42
 
        setChords(chords,doc);
43
 
        saveDocument(doc,file);        
44
 
    }
45
 
    
46
 
    
47
 
    public static Document createDocument() {
48
 
        Document document = null;
49
 
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
50
 
        try {
51
 
            DocumentBuilder builder = factory.newDocumentBuilder();
52
 
            document = builder.newDocument();
53
 
        }catch (ParserConfigurationException pce) {
54
 
            pce.printStackTrace();
55
 
        } 
56
 
        return document;
57
 
    }        
58
 
    
59
 
 
60
 
    
61
 
    public static void saveDocument(Document document,File file) {
62
 
        try {
63
 
            FileOutputStream fs = new FileOutputStream(file);
64
 
 
65
 
            // Write it out again
66
 
            TransformerFactory xformFactory = TransformerFactory.newInstance();
67
 
            Transformer idTransform = xformFactory.newTransformer();
68
 
            Source input = new DOMSource(document);            
69
 
            Result output = new StreamResult(fs);
70
 
            idTransform.setOutputProperty(OutputKeys.INDENT, "yes");
71
 
            idTransform.transform(input, output);
72
 
 
73
 
        } catch (FactoryConfigurationError e) {
74
 
            e.printStackTrace();
75
 
        } catch (TransformerConfigurationException e) {
76
 
            e.printStackTrace();
77
 
        } catch (TransformerException e) {
78
 
            e.printStackTrace();
79
 
        } catch (FileNotFoundException e) {
80
 
            e.printStackTrace();
81
 
        }
82
 
 
83
 
    }
84
 
 
85
 
    /**
86
 
     * Write chords to xml file
87
 
     */
88
 
    private static void setChords(List chords,Document document){    
89
 
        //chords tag
90
 
        Node chordsNode = document.createElement(CHORD_LIST_TAG);
91
 
 
92
 
        Iterator it = chords.iterator();
93
 
        while(it.hasNext()){
94
 
                Chord chord = (Chord)it.next();
95
 
                
96
 
                //chord tag
97
 
                Node chordNode = document.createElement(CHORD_TAG);
98
 
                chordsNode.appendChild(chordNode);    
99
 
        
100
 
                //name attribute
101
 
                Attr nameAttr = document.createAttribute(CHORD_NAME_ATTRIBUTE);         
102
 
                nameAttr.setNodeValue( chord.getName());        
103
 
                chordNode.getAttributes().setNamedItem(nameAttr);               
104
 
 
105
 
                //strings attribute             
106
 
                Attr stringsAttr = document.createAttribute(CHORD_STRINGS_ATTRIBUTE);           
107
 
                stringsAttr.setNodeValue(Integer.toString(chord.getStrings().length));          
108
 
                chordNode.getAttributes().setNamedItem(stringsAttr);                            
109
 
                
110
 
                for(int i = 0;i < chord.getStrings().length; i++){
111
 
                        //string tag                            
112
 
                        Node stringNode = document.createElement(STRING_TAG);
113
 
                        chordNode.appendChild(stringNode);
114
 
 
115
 
                        //number attribute
116
 
                        Attr numberAttr = document.createAttribute(STRING_NUMBER_ATTRIBUTE);            
117
 
                        numberAttr.setNodeValue(Integer.toString(i));           
118
 
                        stringNode.getAttributes().setNamedItem(numberAttr);
119
 
                        
120
 
                        //fret attribute
121
 
                        Attr fretAttr = document.createAttribute(STRING_FRET_ATTRIBUTE);        
122
 
                        fretAttr.setNodeValue(Integer.toString(chord.getFretValue(i)));         
123
 
                        stringNode.getAttributes().setNamedItem(fretAttr);                      
124
 
                }
125
 
        }
126
 
        
127
 
        document.appendChild(chordsNode);    
128
 
    }
129
 
    
130
 
}