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