package com.quiltplayer.external.covers;
import java.io.InputStream;
import org.xml.sax.helpers.DefaultHandler;
import com.quiltplayer.external.covers.discogs.AlbumRelease;
import com.quiltplayer.external.covers.discogs.Artist;
import com.quiltplayer.external.covers.discogs.ArtistRelease;
import com.quiltplayer.external.covers.discogs.Format;
import com.quiltplayer.external.covers.discogs.Image;
import com.quiltplayer.external.covers.discogs.Label;
import com.quiltplayer.external.covers.discogs.Resp;
import com.quiltplayer.external.covers.discogs.Track;
import com.thoughtworks.xstream.XStream;
/**
* Parses XML to object.
*
* @author Vlado Palczynski
*/
public class XStreamXmlParser extends DefaultHandler {
/**
* @param stream
* the stream to set.
* @return Resp
* @throws Exception
* if problems occur.
*/
public final Resp parseArtist(final InputStream stream) throws Exception {
XStream xStream = new XStream();
xStream.alias("resp", Resp.class);
xStream.aliasAttribute(Resp.class, "requests", "requests");
xStream.alias("artist", Artist.class);
xStream.alias("image", Image.class);
xStream.alias("url", String.class);
xStream.alias("name", String.class);
xStream.alias("release", ArtistRelease.class);
xStream.useAttributeFor(ArtistRelease.class, "id");
xStream.useAttributeFor(Image.class, "height");
xStream.useAttributeFor(Image.class, "type");
xStream.useAttributeFor(Image.class, "uri");
xStream.useAttributeFor(Image.class, "uri150");
xStream.useAttributeFor(Image.class, "width");
Resp resp = (Resp) xStream.fromXML(stream);
return resp;
}
/**
* @param stream
* the stream to set.
* @return Resp
* @throws Exception
* if problems occur.
*/
public final Resp parseRelease(final InputStream stream) throws Exception {
XStream xStream = new XStream();
xStream.alias("resp", Resp.class);
xStream.alias("release", AlbumRelease.class);
xStream.alias("image", Image.class);
xStream.alias("artist", String.class);
xStream.alias("label", Label.class);
xStream.alias("format", String.class);
xStream.alias("genre", String.class);
xStream.alias("style", String.class);
xStream.alias("track", Track.class);
xStream.alias("extraartist", Artist.class);
xStream.alias("format", Format.class);
xStream.alias("description", String.class);
xStream.alias("artists", Track.class);
xStream.useAttributeFor(AlbumRelease.class, "id");
xStream.useAttributeFor(Format.class, "name");
xStream.useAttributeFor(Format.class, "qty");
xStream.useAttributeFor(Label.class, "name");
xStream.useAttributeFor(Image.class, "height");
xStream.useAttributeFor(Image.class, "type");
xStream.useAttributeFor(Image.class, "uri");
xStream.useAttributeFor(Image.class, "uri150");
xStream.useAttributeFor(Image.class, "width");
Resp resp = (Resp) xStream.fromXML(stream);
return resp;
}
}