package com.rapidftr.services;
import com.rapidftr.net.RequestCallBack;
import com.sun.me.web.request.Response;
public class RequestCallBackImpl implements RequestCallBack {
private ScreenCallBack screenCallback;
private ServiceCallback serviceCallback;
private ControllerCallback controllerCallback;
public RequestCallBackImpl() {
}
public void onConnectionProblem() {
if (ifScreenCallbackExists()) {
screenCallback.onConnectionProblem();
}
}
public void onAuthenticationFailure() {
if (ifScreenCallbackExists()) {
screenCallback.onAuthenticationFailure();
}
}
public void onRequestSuccess(Object context, Response result) {
if (ifServiceCallbackExists()) {
serviceCallback.onRequestSuccess(context, result);
}
}
public void onProcessSuccess() {
if (ifScreenCallbackExists()) {
screenCallback.onProcessSuccess();
}
if (ifControllerCallbackExists()) {
controllerCallback.onProcessComplete(true);
}
}
public void onProcessFail(String failureMessage) {
if (ifScreenCallbackExists()) {
screenCallback.onProcessFail(failureMessage);
}
if (ifControllerCallbackExists()) {
controllerCallback.onProcessComplete(false);
}
}
public void setScreenCallback(ScreenCallBack screenCallback) {
this.screenCallback = screenCallback;
}
public void setServiceCallback(ServiceCallback serviceCallback) {
this.serviceCallback = serviceCallback;
}
public void setControllerCallback(ControllerCallback controllerCallback) {
this.controllerCallback = controllerCallback;
}
private boolean ifScreenCallbackExists() {
return screenCallback != null;
}
private boolean ifServiceCallbackExists() {
return serviceCallback != null;
}
private boolean ifControllerCallbackExists() {
return controllerCallback != null;
}
public void updateProgressMessage(String msg) {
if (ifScreenCallbackExists()) {
screenCallback.setProgressMessage(msg);
}
}
public void onRequestFailure(Object context, Exception exception) {
if (ifScreenCallbackExists()) {
serviceCallback.onRequestFailure(context,exception);
}
}
public void updateRequestProgress(int finished, int totalRequests) {
if (ifScreenCallbackExists()) {
screenCallback.updateProgress((int) (((double) finished) / totalRequests * 100));
}
}
public void onProcessStart() {
if (ifControllerCallbackExists()) {
controllerCallback.beforeProcessStart();
}
}
}