Package it.unipd.netmus.client.applet

Source Code of it.unipd.netmus.client.applet.TranslateDTOXML

package it.unipd.netmus.client.applet;

import it.unipd.netmus.shared.SongDTO;

import java.util.ArrayList;
import java.util.List;

import com.google.gwt.xml.client.Document;
import com.google.gwt.xml.client.Element;
import com.google.gwt.xml.client.XMLParser;
import com.google.gwt.xml.client.impl.DOMParseException;

/**
* Nome: TranslateDTOXML.java
* Autore: VT.G
* Licenza: GNU GPL v3
* Data Creazione: 19 Febbraio 2011
*/
public class TranslateDTOXML {

    private final static String ROOT_NAME = "Library";
    private final static String SONG_NAME = "Song";
    private final static String ALBUMTITLE_NAME = "AlbumTitle";
    private final static String AUTHORCOMPOSER_NAME = "AuthorComposer";
    private final static String LEADARTIST_NAME = "LeadArtist";
    private final static String SONGGENRE_NAME = "SongGenre";
    private final static String SONGTITLE_NAME = "SongTitle";
    private final static String TRACKNUMBER_NAME = "TrackNumber";
    private final static String YEAR_NAME = "Year";

    private final static String FILE_NAME = "File";

    private Document document;
    private Element root;
    private int parsed;

    public TranslateDTOXML() {
    };

    /**
     * @deprecated
     * @param brano
     */
    @Deprecated
    public void DTOtoXML(SongDTO brano) {

        // create the new song node
        Element song = document.createElement(SONG_NAME);
        // append the filename
        Element fileName = document.createElement(FILE_NAME);
        fileName.appendChild(document.createCDATASection(brano.getFile()));
        song.appendChild(fileName);
        // fill the new node with data.
        Element albumTitle = document.createElement(ALBUMTITLE_NAME);
        albumTitle.appendChild(document.createCDATASection(brano.getAlbum()));
        song.appendChild(albumTitle);

        Element authorComposer = document.createElement(AUTHORCOMPOSER_NAME);
        authorComposer.appendChild(document.createCDATASection(brano
                .getComposer()));
        song.appendChild(authorComposer);

        Element leadArtist = document.createElement(LEADARTIST_NAME);
        leadArtist.appendChild(document.createTextNode(brano.getArtist()));
        leadArtist.appendChild(document.createCDATASection(brano.getArtist()));
        song.appendChild(leadArtist);

        Element songGenre = document.createElement(SONGGENRE_NAME);
        songGenre.appendChild(document.createCDATASection(brano.getGenre()));
        song.appendChild(songGenre);

        Element songTitle = document.createElement(SONGTITLE_NAME);
        songTitle.appendChild(document.createCDATASection(brano.getTitle()));
        song.appendChild(songTitle);

        Element trackNumber = document.createElement(TRACKNUMBER_NAME);
        trackNumber.appendChild(document.createCDATASection(brano
                .getTrackNumber()));
        song.appendChild(trackNumber);

        Element year = document.createElement(YEAR_NAME);
        year.appendChild(document.createCDATASection(brano.getYear()));
        song.appendChild(year);

        // add the new node to the tree
        root.appendChild(song);
    };

    /**
     * @deprecated
     * @return
     */
    @Deprecated
    public String generateXML() {
        return document.toString();
    }

    public int getParsed() {
        return parsed;
    }

    public boolean otherChild() {
        return root.hasChildNodes();
    }

    /**
     * @deprecated
     */
    @Deprecated
    public void reset() {
        document = XMLParser.createDocument();
        root = document.createElement(ROOT_NAME);
        document.appendChild(root);
    }

    /**
     * Fa il parsing del documento XML, e per ogni nodo di tipo Song, utilizza
     * generateDTO per creare il relativo SongDTO, e se lo salva su una lista.
     *
     * @param xml
     * @return
     */
    public List<SongDTO> XMLToDTO(String xml) {

        List<SongDTO> list = null;
        try {
            // create the DOM tree
            if (!xml.equals("")) {
                document = XMLParser.parse(xml);
                root = (Element) document.getFirstChild();
                parsed = 0;
            }
            // create the list
            list = new ArrayList<SongDTO>();
            // start parsing
            while (root.hasChildNodes()) {
                // for every child, parse it and add it to the list
                list.add(generateDTO((Element) root.getFirstChild()));
                root.removeChild(root.getFirstChild());
                parsed++;

                if (list.size() == 30)
                    return list;
            }

        } catch (DOMParseException e) {
        }
        return list;
    }

    /**
     * Crea un nuovo SongDTO, e seguendo le proprietà indicate nel nodo di tipo
     * Song, imposta opportunamente i suoi attributi.
     *
     * @param node
     * @return
     */
    private SongDTO generateDTO(Element node) {
        SongDTO song = new SongDTO();
        while (node.hasChildNodes()) {
            Element child = (Element) node.getFirstChild();
            String name = child.getNodeName();
            // System.out.println(child.getFirstChild().getNodeValue());
            // if (name.equals(FILE_NAME))
            // song.setFile(clearFileName(child.getFirstChild().getNodeValue()));
            if (name.equals(FILE_NAME))
                song.setFile(child.getFirstChild().getNodeValue());
            else if (name.equals(ALBUMTITLE_NAME))
                song.setAlbum(child.getFirstChild().getNodeValue());
            else if (name.equals(AUTHORCOMPOSER_NAME))
                song.setComposer(child.getFirstChild().getNodeValue());
            else if (name.equals(LEADARTIST_NAME))
                song.setArtist(child.getFirstChild().getNodeValue());
            else if (name.equals(SONGGENRE_NAME))
                song.setGenre(child.getFirstChild().getNodeValue());
            else if (name.equals(SONGTITLE_NAME))
                song.setTitle(child.getFirstChild().getNodeValue());
            else if (name.equals(TRACKNUMBER_NAME))
                song.setTrackNumber(child.getFirstChild().getNodeValue());
            else if (name.equals(YEAR_NAME))
                song.setYear(child.getFirstChild().getNodeValue());
            node.removeChild(child);
        }
        return song;
    }
}
TOP

Related Classes of it.unipd.netmus.client.applet.TranslateDTOXML

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.