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); } } }