package com.ved.musicmapapp.providers;
import java.util.ArrayList;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.util.Log;
import com.ved.musicmapapp.Objects.Playlist;
import com.ved.musicmapapp.Objects.PlaylistArSong;
import com.ved.musicmapapp.Objects.PlaylistArtist;
import com.ved.musicmapapp.Objects.User;
import com.ved.musicmapapp.adapters.DBAdapter;
import com.ved.musicmapapp.utils.Statics;
/** Get all artist info of an user */
public class GetUserSongsFromPlaylistsListTask extends AsyncTask<Void, Void, Playlist> {
private Activity activity;
String playlistId;
User user;
Playlist _playlist;
private ProgressDialog dialog;
public GetUserSongsFromPlaylistsListTask(Activity activity, User user, Playlist selectedPlaylist) {
Log.i("check","In GetUsersSongsFromPlaylistsTask");
this.user = user;
this.activity = activity;
_playlist = selectedPlaylist;
this.dialog = new ProgressDialog(activity);
this.dialog.setMessage("Loading...");
this.dialog.setCancelable(false);
}
@Override
protected Playlist doInBackground(Void... params) {
try {
if (Statics.isNetworkConnected(activity)) {
HttpParams httpParameters = new BasicHttpParams();
int timeoutConnection = 20000;
HttpConnectionParams.setConnectionTimeout(httpParameters,timeoutConnection);
int timeoutSocket = 20000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
HttpClient httpclient = new DefaultHttpClient(httpParameters);
HttpPost httppost = new HttpPost(Statics.WS_PATH+ "getUserPlaylistTracks.php");
ArrayList<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("playlist_id", _playlist.getID()+""));
httppost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
HttpResponse response = httpclient.execute(httppost);
String data = EntityUtils.toString(response.getEntity(),"UTF-8");
try {
// Object jsonObj = new JSONTokener(data).nextValue();
JSONObject jsonObj = new JSONObject(data);
if (jsonObj.has("message")){
return null;
}
else
{
ArrayList<PlaylistArtist> artists = Statics.getPlaylistArtistFromJSON(new JSONObject(data)
, user.getID(), _playlist.getID());
_playlist.setArtists(artists);
}
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
}
return _playlist;
}
@Override
protected void onPostExecute(Playlist result) {
if (dialog != null && dialog.isShowing()) {
dialog.dismiss();
}
new AsynAddToDB(result).execute();
super.onPostExecute(result);
}
@Override
protected void onPreExecute() {
super.onPreExecute();
dialog.show();
}
public void onSuccess(User result) {
}
public class AsynAddToDB extends AsyncTask<Void, Void, Void> {
private Playlist playlistR;
public AsynAddToDB(Playlist playList) {
playlistR = playList;
}
@Override
protected Void doInBackground(Void... params) {
if (playlistR != null) {
DBAdapter adapter = new DBAdapter(activity);
adapter.addUserPlaylist(playlistR, user);
adapter.removeAllArtistAndSongOfPlaylist(playlistR);
ArrayList<PlaylistArSong> songs = new ArrayList<PlaylistArSong>();
if(playlistR.getArtists() != null) {
for (PlaylistArtist artist : playlistR.getArtists()) {
adapter.addPlaylistArtist(artist, user);
songs.addAll(artist.getSongs());
}
adapter.AddPLArtSongArrs(songs);
playlistR.setNumberOfTracks(songs.size());
}
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
}
}
}