JSON Parsing
- Add JSON Album parsing - Add JSON Album's tracks parsing Convert project to Maven project to add org.json from repos - Update abstract classes to fit XML/JSON parsing - Add JSON Album parsing JUnit - Add JSON Album's tracks parsing JUnit
This commit is contained in:
parent
c35879a65f
commit
c6c7005be8
@ -25,4 +25,11 @@
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.json</groupId>
|
||||
<artifactId>json</artifactId>
|
||||
<version>20180813</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
@ -0,0 +1,64 @@
|
||||
package fr.ensim.json;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import fr.ensim.xml.deezer.AbstractSearchAlbum;
|
||||
import fr.ensim.xml.deezer.data.Album;
|
||||
import fr.ensim.xml.deezer.data.Artist;
|
||||
|
||||
public class JSONSearchAlbum extends AbstractSearchAlbum {
|
||||
private static final Logger LOG = Logger.getLogger(JSONSearchAlbum.class);
|
||||
|
||||
public List<Album> readAlbums(InputStream in) throws Exception
|
||||
{
|
||||
LOG.debug(">>readAlbums");
|
||||
|
||||
List<Album> listAlbums = new ArrayList<Album>();
|
||||
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
|
||||
|
||||
String file = "";
|
||||
String line;
|
||||
|
||||
while((line = reader.readLine()) != null)
|
||||
{
|
||||
file += line;
|
||||
}
|
||||
|
||||
JSONObject jsonObject = new JSONObject(file);
|
||||
JSONArray dataArray = jsonObject.getJSONArray("data");
|
||||
|
||||
for(int i = 0; i < dataArray.length(); i++)
|
||||
{
|
||||
JSONObject albumObject = dataArray.getJSONObject(i);
|
||||
JSONObject artistObject = albumObject.getJSONObject("artist");
|
||||
|
||||
Album album = new Album();
|
||||
|
||||
album.setId(String.valueOf(albumObject.getInt("id")));
|
||||
album.setTitle(albumObject.getString("title"));
|
||||
album.setCover(albumObject.getString("cover"));
|
||||
|
||||
Artist artist = new Artist();
|
||||
|
||||
artist.setId(String.valueOf(artistObject.getInt("id")));
|
||||
artist.setName(artistObject.getString("name"));
|
||||
artist.setLink(artistObject.getString("link"));
|
||||
artist.setPicture(artistObject.getString("picture"));
|
||||
|
||||
album.setArtist(artist);
|
||||
|
||||
listAlbums.add(album);
|
||||
}
|
||||
|
||||
LOG.debug("<<readAlbums");
|
||||
return listAlbums;
|
||||
}
|
||||
}
|
@ -0,0 +1,91 @@
|
||||
package fr.ensim.json;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
import org.w3c.dom.Document;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
import fr.ensim.xml.deezer.data.Track;
|
||||
|
||||
public class JSONSearchAlbumTracks {
|
||||
private static Logger LOG = Logger.getLogger(JSONSearchAlbumTracks.class);
|
||||
|
||||
public static List<Track> find(String id) throws IOException, ParserConfigurationException, SAXException {
|
||||
LOG.debug(">>albums");
|
||||
|
||||
// Constitution de l'URL
|
||||
StringBuilder sUrl = new StringBuilder();
|
||||
sUrl.append("http://api.deezer.com/2.0/album/");
|
||||
sUrl.append(id);
|
||||
|
||||
URL url = new URL(sUrl.toString());
|
||||
|
||||
LOG.debug(url);
|
||||
|
||||
HttpURLConnection cnx = (HttpURLConnection) url.openConnection();
|
||||
cnx.setConnectTimeout(5000);
|
||||
cnx.setReadTimeout(5000);
|
||||
cnx.setRequestMethod("GET");
|
||||
cnx.setDoInput(true);
|
||||
cnx.addRequestProperty("Accept-Language", "en;q=0.6,en-us;q=0.4,sv;q=0.2");
|
||||
|
||||
try {
|
||||
if (cnx.getResponseCode() == HttpURLConnection.HTTP_OK) {
|
||||
return find(cnx.getInputStream());
|
||||
}
|
||||
} finally {
|
||||
cnx.disconnect();
|
||||
}
|
||||
|
||||
LOG.debug("<<albums");
|
||||
return null;
|
||||
}
|
||||
|
||||
protected static List<Track> find(InputStream in) throws SAXException, ParserConfigurationException, IOException {
|
||||
LOG.debug(">>find");
|
||||
|
||||
ArrayList<Track> listTracks = new ArrayList<Track>();
|
||||
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
|
||||
|
||||
String file = "";
|
||||
String line;
|
||||
|
||||
while((line = reader.readLine()) != null)
|
||||
{
|
||||
file += line;
|
||||
}
|
||||
|
||||
JSONObject jsonObject = new JSONObject(file);
|
||||
JSONObject tracksDataObject = jsonObject.getJSONObject("tracks");
|
||||
JSONArray dataArray = tracksDataObject.getJSONArray("data");
|
||||
|
||||
for(int i = 0; i < dataArray.length(); i++)
|
||||
{
|
||||
JSONObject trackObject = dataArray.getJSONObject(i);
|
||||
Track track = new Track();
|
||||
|
||||
track.setPreview(trackObject.getString("preview"));
|
||||
track.setTitle(trackObject.getString("title"));
|
||||
|
||||
listTracks.add(track);
|
||||
}
|
||||
|
||||
LOG.debug(">>find");
|
||||
return listTracks;
|
||||
}
|
||||
}
|
@ -29,7 +29,7 @@ public abstract class AbstractSearchAlbum {
|
||||
* @throws ParserConfigurationException
|
||||
* @throws SAXException
|
||||
*/
|
||||
public List<Album> find(String author) throws IOException,
|
||||
public List<Album> find(String author, boolean isXML) throws IOException,
|
||||
ParserConfigurationException,
|
||||
SAXException {
|
||||
LOG.debug(">>find author="+author);
|
||||
@ -38,7 +38,7 @@ public abstract class AbstractSearchAlbum {
|
||||
StringBuilder sUrl = new StringBuilder();
|
||||
sUrl.append("http://api.deezer.com/2.0/search/album?q=");
|
||||
sUrl.append(author);
|
||||
sUrl.append("&output=xml");
|
||||
if(isXML) sUrl.append("&output=xml");
|
||||
|
||||
URL url = new URL(sUrl.toString());
|
||||
LOG.debug(url);
|
||||
|
@ -24,14 +24,14 @@ public abstract class AbstractSearchAlbumTracks {
|
||||
* @return la liste des chansons.
|
||||
* @throws Exception
|
||||
*/
|
||||
public List<Track> find(String id) throws Exception {
|
||||
public List<Track> find(String id, boolean isXML) throws Exception {
|
||||
log.debug(">>find");
|
||||
|
||||
// Constitution de l'URL
|
||||
StringBuilder sUrl = new StringBuilder();
|
||||
sUrl.append("http://api.deezer.com/2.0/album/");
|
||||
sUrl.append(id);
|
||||
sUrl.append("?output=xml");
|
||||
if(isXML) sUrl.append("&output=xml");
|
||||
|
||||
URL url = new URL(sUrl.toString());
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user