mirror of
https://github.com/pierre42100/ComunicAndroid
synced 2024-11-27 07:49:28 +00:00
Not working thread versionned get user infos
This commit is contained in:
parent
53e60228fe
commit
42913de841
@ -1,6 +1,8 @@
|
|||||||
package org.communiquons.android.comunic.client.data.UsersInfo;
|
package org.communiquons.android.comunic.client.data.UsersInfo;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.os.AsyncTask;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import org.communiquons.android.comunic.client.api.APIRequestParameters;
|
import org.communiquons.android.comunic.client.api.APIRequestParameters;
|
||||||
import org.communiquons.android.comunic.client.api.APIRequestTask;
|
import org.communiquons.android.comunic.client.api.APIRequestTask;
|
||||||
@ -9,6 +11,8 @@ import org.communiquons.android.comunic.client.data.DatabaseHelper;
|
|||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
import java.util.concurrent.ExecutionException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class handles informations requests about user informations
|
* This class handles informations requests about user informations
|
||||||
*
|
*
|
||||||
@ -16,7 +20,7 @@ import org.json.JSONObject;
|
|||||||
* Created by pierre on 11/5/17.
|
* Created by pierre on 11/5/17.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class GetUsersInfos {
|
public abstract class GetUsersInfos extends AsyncTask<Void, Void, UserInfo> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* User informations database helper
|
* User informations database helper
|
||||||
@ -28,13 +32,22 @@ public class GetUsersInfos {
|
|||||||
*/
|
*/
|
||||||
private Context context;
|
private Context context;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UserID to retrieve
|
||||||
|
*/
|
||||||
|
private int id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Public constructor
|
* Public constructor
|
||||||
*
|
*
|
||||||
|
* @param id The ID of the user to get the information about
|
||||||
* @param context The context of the application
|
* @param context The context of the application
|
||||||
* @param dbHelper Database helper object
|
* @param dbHelper Database helper object
|
||||||
*/
|
*/
|
||||||
public GetUsersInfos(Context context, DatabaseHelper dbHelper){
|
public GetUsersInfos(int id, Context context, DatabaseHelper dbHelper){
|
||||||
|
|
||||||
|
//Save user ID
|
||||||
|
this.id = id;
|
||||||
|
|
||||||
//Save context
|
//Save context
|
||||||
this.context = context;
|
this.context = context;
|
||||||
@ -45,50 +58,38 @@ public class GetUsersInfos {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This interface must be implemented to perform an API request
|
* Each script must implement specifically what will be done once the request is done
|
||||||
|
*
|
||||||
|
* @param info Informations about the user / null in case of failure
|
||||||
*/
|
*/
|
||||||
public interface getUserInfosCallback{
|
@Override
|
||||||
|
abstract protected void onPostExecute(UserInfo info);
|
||||||
/**
|
|
||||||
* Callback function called when we got informations about user
|
|
||||||
*
|
|
||||||
* @param info Information about the user
|
|
||||||
*/
|
|
||||||
void callback(UserInfo info);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get and return informations about a user
|
* Get and return information about a user
|
||||||
*
|
|
||||||
* @param id The ID of the user to get the informations
|
|
||||||
* @param callback What to do once we got the response
|
|
||||||
*/
|
*/
|
||||||
public void get(int id, getUserInfosCallback callback){
|
@Override
|
||||||
|
protected UserInfo doInBackground(Void... params) {
|
||||||
|
|
||||||
//Check if the ID is positive, error else
|
//Check if the ID is positive, error else
|
||||||
if(id < 1){
|
if(id < 1)
|
||||||
callback.callback(null); //This is an error
|
return null;
|
||||||
}
|
|
||||||
|
|
||||||
//Check if the user is already present in the database or not
|
//Check if the user is already present in the database or not
|
||||||
if(!udbHelper.exists(id))
|
if(!udbHelper.exists(id))
|
||||||
//Perform a request on the server
|
//Perform a request on the server
|
||||||
getOnServer(id, callback);
|
return getOnServer(id);
|
||||||
|
|
||||||
//Else we can retrieve user informations from the local database
|
|
||||||
else
|
else
|
||||||
callback.callback(udbHelper.get(id));
|
//Return the cached values about the user
|
||||||
|
return udbHelper.get(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get and return the informations about a user on the server
|
* Get and return the informations about a user on the server
|
||||||
*
|
*
|
||||||
* @param id The ID of the user to get informations from
|
* @param id The ID of the user to get informations from
|
||||||
* @param callback What to do once the request is done
|
|
||||||
*/
|
*/
|
||||||
private void getOnServer(final int id, final getUserInfosCallback callback){
|
private UserInfo getOnServer(int id){
|
||||||
|
|
||||||
//Perform a request on the API server
|
//Perform a request on the API server
|
||||||
//Setup the request
|
//Setup the request
|
||||||
@ -96,48 +97,58 @@ public class GetUsersInfos {
|
|||||||
requestParameters.addParameter("userID", ""+id);
|
requestParameters.addParameter("userID", ""+id);
|
||||||
|
|
||||||
//Do it.
|
//Do it.
|
||||||
new APIRequestTask(){
|
APIRequestTask req = new APIRequestTask(){
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(APIResponse result) {
|
protected void onPostExecute(APIResponse result) {
|
||||||
|
//Nothing
|
||||||
UserInfo userInfos = null;
|
|
||||||
|
|
||||||
try {
|
|
||||||
if(result != null) {
|
|
||||||
|
|
||||||
//Try to extract user informations
|
|
||||||
JSONObject userObjectContainer = result.getJSONObject();
|
|
||||||
|
|
||||||
if (userObjectContainer != null) {
|
|
||||||
|
|
||||||
//Extract user object
|
|
||||||
JSONObject userObject = userObjectContainer.getJSONObject("" + id);
|
|
||||||
|
|
||||||
//Continue only if we could extract required informations
|
|
||||||
if (userObject != null) {
|
|
||||||
//Parse user informations
|
|
||||||
userInfos = parse_user_json(userObject);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Save user information in the local database in case of success
|
|
||||||
if (userInfos != null)
|
|
||||||
udbHelper.insertOrUpdate(userInfos);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (JSONException e){
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
//Go to the next function
|
|
||||||
callback.callback(userInfos);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}.execute(requestParameters);
|
};
|
||||||
|
req.execute(requestParameters);
|
||||||
|
|
||||||
|
//Get the result and process it when it becomes available
|
||||||
|
try {
|
||||||
|
APIResponse result = req.get();
|
||||||
|
UserInfo userInfos = null;
|
||||||
|
Log.v("GetUsersInfos", "test2 test test");
|
||||||
|
|
||||||
|
try {
|
||||||
|
if(result != null) {
|
||||||
|
|
||||||
|
//Try to extract user informations
|
||||||
|
JSONObject userObjectContainer = result.getJSONObject();
|
||||||
|
|
||||||
|
if (userObjectContainer != null) {
|
||||||
|
|
||||||
|
//Extract user object
|
||||||
|
JSONObject userObject = userObjectContainer.getJSONObject("" + id);
|
||||||
|
|
||||||
|
//Continue only if we could extract required informations
|
||||||
|
if (userObject != null) {
|
||||||
|
//Parse user informations
|
||||||
|
userInfos = parse_user_json(userObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Save user information in the local database in case of success
|
||||||
|
if (userInfos != null)
|
||||||
|
udbHelper.insertOrUpdate(userInfos);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (JSONException e){
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return userInfos;
|
||||||
|
|
||||||
|
} catch (Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
|
|
||||||
|
//Failure
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -5,6 +5,7 @@ import android.app.Fragment;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
|
import android.util.Log;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
@ -58,9 +59,12 @@ public class UserInfosFragment extends Fragment {
|
|||||||
|
|
||||||
//Retrieve user informations in order to display them
|
//Retrieve user informations in order to display them
|
||||||
int user_id = new AccountUtils(mContext).get_current_user_id();
|
int user_id = new AccountUtils(mContext).get_current_user_id();
|
||||||
new GetUsersInfos(mContext, dbHelper).get(user_id, new GetUsersInfos.getUserInfosCallback() {
|
new GetUsersInfos(user_id, mContext, dbHelper){
|
||||||
@Override
|
@Override
|
||||||
public void callback(UserInfo info) {
|
protected void onPostExecute(UserInfo info) {
|
||||||
|
|
||||||
|
if(info != null)
|
||||||
|
return;
|
||||||
|
|
||||||
//Set the name of the user
|
//Set the name of the user
|
||||||
userNameView.setText(info.getFullName());
|
userNameView.setText(info.getFullName());
|
||||||
@ -68,7 +72,7 @@ public class UserInfosFragment extends Fragment {
|
|||||||
//Get and show the user account image
|
//Get and show the user account image
|
||||||
new ImageLoadTask(mContext, info.getAcountImageURL(), imageView).execute();
|
new ImageLoadTask(mContext, info.getAcountImageURL(), imageView).execute();
|
||||||
}
|
}
|
||||||
});
|
}.execute();
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user