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.JSONArray; 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.Artist; import com.ved.musicmapapp.Objects.Playlist; import com.ved.musicmapapp.Objects.Song; 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 GetUserPlaylistsListTask extends AsyncTask<Void, Void, User> { private Context activity; User user; public GetUserPlaylistsListTask(Context activity, User user) { Log.i("check","In GetUserPlaylistsListTask"); this.user = user; this.activity = activity; } @Override protected User 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+ "getUserPlaylists.php"); ArrayList<NameValuePair> nvps = new ArrayList<NameValuePair>(); nvps.add(new BasicNameValuePair("user_id", user.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(); if (jsonObj instanceof JSONObject){ return user; } else if (jsonObj instanceof JSONArray){ ArrayList<Playlist> playlists = Statics.getPlaylistFromJSON(data); user.setPlaylists(playlists); if (Statics.hashUsers != null) { User userTmp = Statics.hashUsers.get(user.getFbid()); if (userTmp != null) { userTmp.setPlaylists(playlists); Statics.hashUsers.put(user.getFbid(), userTmp); return userTmp; } else { return user; } } } } catch (Exception e) { e.printStackTrace(); } } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(User result) { 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 User mUser; public AsynAddToDB(User user) { mUser = user; } @Override protected Void doInBackground(Void... params) { // TODO Auto-generated method stub if (mUser != null) { DBAdapter adapter = new DBAdapter(activity); ArrayList<Playlist> playlists = mUser.getPlaylists(); if(playlists == null) return null; adapter.deleteUserPlaylists(mUser); for (Playlist pl : playlists) { adapter.addUserPlaylist(pl, mUser); } } return null; } } }