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 AddSongToUserPlaylistTask extends AsyncTask<Void, Void, String> { private Context context; User user; Playlist _playlist; int successfullyAdded = 0; int alreadyExists = 0; public AddSongToUserPlaylistTask(Context context, User user, Playlist pl) { Log.i("check","In AddSongToUserPlaylistTask"); this.user = user; this.context = context; this._playlist = pl; } @Override protected String doInBackground(Void... params) { String message =""; 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"); DBAdapter dbAdapter = new DBAdapter(context); if(_playlist.getID() != -1) { //already synched with server //Getting all songs related to playlist ArrayList<PlaylistArSong> pendingSongs = dbAdapter.getPlaylistSongs(user, _playlist.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", _playlist.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); message = json.getString("message"); if(message.contains("Track successfully added")) { song.setIsSynch(1); song.setUserId(user.getID()); dbAdapter.updatePlaylistSong(song); successfullyAdded++; }else { alreadyExists++; } } } } } } catch (Exception e) { e.printStackTrace(); } StringBuilder resultMessage = new StringBuilder(); if(successfullyAdded > 0) { resultMessage.append(successfullyAdded+" Tracks added successfully"); } if(alreadyExists > 0) { resultMessage.append(", "+alreadyExists+" Tracks already exists in playlist"); } return resultMessage.toString(); } @Override protected void onPostExecute(String result) { super.onPostExecute(result); } @Override protected void onPreExecute() { super.onPreExecute(); } public void onSuccess(User result) { } }