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.content.Context; import android.os.AsyncTask; import android.util.Log; import com.ved.musicmapapp.Objects.Playlist; 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 AddUserPlaylistsListTask extends AsyncTask<Void, Void, User> { private Context context; User user; public AddUserPlaylistsListTask(Context activity, User user) { Log.i("check","In AddUserPlaylistsListTask"); this.user = user; this.context = activity; } @Override protected User 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+ "addPlayList.php"); DBAdapter adapter = new DBAdapter(context); ArrayList<Playlist> locallySaved = adapter.getUserPlaylists(user); if(locallySaved == null){ return null; } for(Playlist pl: locallySaved) { if(pl.getID() == -1) { //Its not posted yet ArrayList<NameValuePair> nvps = new ArrayList<NameValuePair>(); nvps.add(new BasicNameValuePair("user_id", user.getID()+"")); nvps.add(new BasicNameValuePair("playlist_name", pl.getPlaylistName())); httppost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); HttpResponse response = httpclient.execute(httppost); String data = EntityUtils.toString(response.getEntity(),"UTF-8"); JSONObject json = new JSONObject(data); String message = json.getString("message"); if(message.contains("Playlist successfully added")){ JSONObject play = json.getJSONObject("Playlist"); Playlist responsePl = new Playlist(); responsePl.setID(Integer.parseInt(play.getString("id"))); responsePl.setUserId(play.getString("user_id")); responsePl.setPlaylistName(play.getString("playlist_name")); responsePl.setDateAdded(Long.parseLong(play.getString("date_added"))); responsePl.setLastUpdated(0L); responsePl.setArtistAvatar(""); responsePl.setNumberOfTracks(0); responsePl.setDB_id(pl.getDB_id()); adapter.updatePlaylistById(pl.getDB_id(), responsePl); updatePlaylistInModel(responsePl); locallySaved.remove(pl); locallySaved.add(responsePl); } } } user.setPlaylists(locallySaved); if (Statics.hashUsers != null) { User userTmp = Statics.hashUsers.get(user.getFbid()); if (userTmp != null) { userTmp.setPlaylists(locallySaved); Statics.hashUsers.put(user.getFbid(), userTmp); return userTmp; } else { return user; } } return user; } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(User result) { super.onPostExecute(result); } @Override protected void onPreExecute() { super.onPreExecute(); } public void updatePlaylistInModel(Playlist responsePl) { ArrayList<Playlist> playlists = this.user.getPlaylists(); for(Playlist pl: playlists) { if(pl.getPlaylistName().equals(responsePl.getPlaylistName()) ) { pl.setID(responsePl.getID()); pl.setUserId(responsePl.getUserId()); pl.setPlaylistName(responsePl.getPlaylistName()); pl.setDateAdded(responsePl.getDateAdded()); pl.setLastUpdated(responsePl.getLastUpdated()); pl.setArtistAvatar(responsePl.getArtistAvatar()); pl.setNumberOfTracks(responsePl.getNumberOfTracks()); pl.setDB_id(responsePl.getDB_id()); } } } }