package com.photoshare.service;
import java.util.concurrent.Executor;
import android.os.Bundle;
import com.photoshare.common.AbstractRequestListener;
import com.photoshare.exception.NetworkError;
import com.photoshare.exception.NetworkException;
import com.photoshare.service.users.UserEditInfoRequestParam;
import com.photoshare.service.users.UserGetInfoRequestParam;
import com.photoshare.service.users.UserGetInfoResponseBean;
import com.photoshare.service.users.UserGetOtherInfoRequestParam;
import com.photoshare.service.users.UserPrivacyRequestParam;
import com.photoshare.service.users.UserPrivacyResponseBean;
import com.photoshare.utils.User;
import com.photoshare.utils.Utils;
import com.renren.api.connect.android.exception.RenrenException;
public class UserInfoHelper {
/**
* User对象
*/
private User user;
public UserInfoHelper(User user) {
this.user = user;
}
/**
* 同步调用getUsersInfo接口<br>
*
* @param param
* 请求对象
* @return 返回服务器响应的UserInfoBean
* @throws RenrenException
*/
public UserGetInfoResponseBean getUsersInfo(UserGetInfoRequestParam param)
throws NetworkException, Throwable {
Bundle parameters = param.getParams();
UserGetInfoResponseBean usersBean = null;
try {
String response = user.request(param.getAction(), parameters);
if (response != null) {
Utils.checkResponse(response);
} else {
Utils.logger("null response");
throw new NetworkException(
NetworkError.ERROR_CODE_UNKNOWN_ERROR, "null response",
"null response");
}
usersBean = new UserGetInfoResponseBean(response);
} catch (RuntimeException re) {
Utils.logger("runtime exception " + re.getMessage());
throw new Throwable(re);
}
return usersBean;
}
/**
* 异步调用获取用户信息接口<br>
*
* @param pool
* 线程池
* @param param
* 请求对象
* @param listener
* 回调
*/
public void asyncGetUsersInfo(Executor pool,
final UserGetInfoRequestParam param,
final AbstractRequestListener<UserGetInfoResponseBean> listener) {
pool.execute(new Runnable() {
public void run() {
try {
UserGetInfoResponseBean usersBean = getUsersInfo(param);
if (listener != null) {
listener.onComplete(usersBean);
}
} catch (NetworkException e) {
Utils.logger("network exception " + e.getMessage());
if (listener != null) {
listener.onNetworkError(new NetworkError(e.getMessage()));
}
} catch (Throwable e) {
Utils.logger("on fault " + e.getMessage());
if (listener != null) {
listener.onFault(e);
}
}
}
});
}
/**
* 同步调用getUsersInfo接口<br>
*
* @param param
* 请求对象
* @return 返回服务器响应的UserInfoBean
* @throws RenrenException
*/
public UserPrivacyResponseBean setPrivacy(UserPrivacyRequestParam param)
throws NetworkException, Throwable {
Bundle parameters = param.getParams();
UserPrivacyResponseBean usersBean = null;
try {
String response = user.request(param.getAction(), parameters);
if (response != null) {
Utils.checkResponse(response);
} else {
Utils.logger("null response");
throw new NetworkException(
NetworkError.ERROR_CODE_UNKNOWN_ERROR, "null response",
"null response");
}
usersBean = new UserPrivacyResponseBean(response);
} catch (RuntimeException re) {
Utils.logger("runtime exception " + re.getMessage());
throw new Throwable(re);
}
return usersBean;
}
/**
* 异步调用获取用户信息接口<br>
*
* @param pool
* 线程池
* @param param
* 请求对象
* @param listener
* 回调
*/
public void asyncSetPrivacy(Executor pool,
final UserPrivacyRequestParam param,
final AbstractRequestListener<UserPrivacyResponseBean> listener) {
pool.execute(new Runnable() {
public void run() {
try {
UserPrivacyResponseBean usersBean = setPrivacy(param);
if (listener != null) {
listener.onComplete(usersBean);
}
} catch (NetworkException e) {
Utils.logger("network exception " + e.getMessage());
if (listener != null) {
listener.onNetworkError(new NetworkError(e.getMessage()));
}
} catch (Throwable e) {
Utils.logger("on fault " + e.getMessage());
if (listener != null) {
listener.onFault(e);
}
}
}
});
}
/**
* 同步调用getUsersInfo接口<br>
*
* @param param
* 请求对象
* @return 返回服务器响应的UserInfoBean
* @throws RenrenException
*/
public UserGetInfoResponseBean getOthersInfo(
UserGetOtherInfoRequestParam param) throws NetworkException,
Throwable {
Bundle parameters = param.getParams();
UserGetInfoResponseBean usersBean = null;
try {
String response = user.request(param.getAction(), parameters);
if (response != null) {
Utils.checkResponse(response);
} else {
Utils.logger("null response");
throw new NetworkException(
NetworkError.ERROR_CODE_UNKNOWN_ERROR, "null response",
"null response");
}
usersBean = new UserGetInfoResponseBean(response);
} catch (RuntimeException re) {
Utils.logger("runtime exception " + re.getMessage());
throw new Throwable(re);
}
return usersBean;
}
/**
* 异步调用获取用户信息接口<br>
*
* @param pool
* 线程池
* @param param
* 请求对象
* @param listener
* 回调
*/
public void asyncGetOthersInfo(Executor pool,
final UserGetOtherInfoRequestParam param,
final AbstractRequestListener<UserGetInfoResponseBean> listener) {
pool.execute(new Runnable() {
public void run() {
try {
UserGetInfoResponseBean usersBean = getOthersInfo(param);
if (listener != null) {
listener.onComplete(usersBean);
}
} catch (NetworkException e) {
Utils.logger("network exception " + e.getMessage());
if (listener != null) {
listener.onNetworkError(new NetworkError(e.getMessage()));
}
} catch (Throwable e) {
Utils.logger("on fault " + e.getMessage());
if (listener != null) {
listener.onFault(e);
}
}
}
});
}
public UserGetInfoResponseBean SubmitUsersInfo(
UserEditInfoRequestParam param) throws NetworkException, Throwable {
Bundle parameters = param.getParams();
UserGetInfoResponseBean usersBean = null;
try {
String response = user.request(param.getAction(), parameters);
if (response != null) {
Utils.checkResponse(response);
} else {
Utils.logger("null response");
throw new NetworkException(
NetworkError.ERROR_CODE_UNKNOWN_ERROR, "null response",
"null response");
}
usersBean = new UserGetInfoResponseBean(response);
} catch (RuntimeException re) {
Utils.logger("runtime exception " + re.getMessage());
throw new Throwable(re);
}
return usersBean;
}
/**
* 异步调用获取用户信息接口<br>
*
* @param pool
* 线程池
* @param param
* 请求对象
* @param listener
* 回调
*/
public void asyncEditUsersInfo(Executor pool,
final UserEditInfoRequestParam param,
final AbstractRequestListener<UserGetInfoResponseBean> listener) {
pool.execute(new Runnable() {
public void run() {
try {
UserGetInfoResponseBean usersBean = SubmitUsersInfo(param);
if (listener != null) {
listener.onComplete(usersBean);
}
} catch (NetworkException e) {
Utils.logger("network exception " + e.getMessage());
if (listener != null) {
listener.onNetworkError(new NetworkError(e.getMessage()));
}
} catch (Throwable e) {
Utils.logger("on fault " + e.getMessage());
if (listener != null) {
listener.onFault(e);
}
}
}
});
}
}