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 org.json.JSONTokener; import android.content.Context; 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.User; import com.ved.musicmapapp.adapters.DBAdapter; import com.ved.musicmapapp.utils.Statics; /** Get all artist info of an user */ public class AddAllPendingSongToUserPlaylistsTask extends AsyncTask<Void, Void, String> { private Context context; User user; public AddAllPendingSongToUserPlaylistsTask(Context context, User user) { Log.i("check","In AddAllPendingSongToUserPlaylistsTask"); this.user = user; this.context = context; } @Override protected String doInBackground(Void... params) { try { if (Statics.isNetworkConnected(context)) { 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+ "addTrackToPlaylist.php"); ArrayList<Playlist> playlists = user.getPlaylists(); DBAdapter dbAdapter = new DBAdapter(context); for(Playlist pl : playlists) { if(pl.getID() != -1) { //already synched with server //Getting all songs related to playlist ArrayList<PlaylistArSong> pendingSongs = dbAdapter.getPlaylistSongs(user, pl.getID()); for(PlaylistArSong song : pendingSongs) { if(song.getIsSynch() == -1) { // not synched with server ArrayList<NameValuePair> nvps = new ArrayList<NameValuePair>(); nvps.add(new BasicNameValuePair("user_id", user.getID()+"")); nvps.add(new BasicNameValuePair("playlist_id", pl.getID()+"")); nvps.add(new BasicNameValuePair("song_id", song.getID()+"")); httppost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); HttpResponse response = httpclient.execute(httppost); String data = EntityUtils.toString(response.getEntity(),"UTF-8"); Object jsonObj = new JSONTokener(data).nextValue(); JSONObject json = new JSONObject(data); String message = json.getString("message"); if(message.contains("Track successfully added")) { song.setIsSynch(1); dbAdapter.updatePlaylistSong(song); pl.setNumberOfTracks(pl.getNumberOfTracks()+1); } } } } } return "success"; } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String result) { super.onPostExecute(result); } @Override protected void onPreExecute() { super.onPreExecute(); } public void onSuccess(User result) { } }