Repository URL to install this package:
package com.vipera.motifconnector;
import android.content.Context;
import android.util.Log;
import com.vipera.de.motifconnector.DEServerDelegate;
import com.vipera.de.motifconnector.DEServerRequest;
import com.vipera.de.motifconnector.DEServerResultFailure;
import com.vipera.de.motifconnector.DEServerResultSuccess;
import com.vipera.de.motifconnector.IDEServerManager;
import com.vipera.de.motifconnector.config.DEConnectorProvider;
import com.vipera.de.utility.preferences.ConfigPreferences;
import org.apache.cordova.CordovaInterface;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPreferences;
import org.apache.cordova.CordovaWebView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
/**
* Motif connector plugin class
*/
public class MotifConnector extends CordovaPlugin {
private IDEServerManager serverManager;
@Override
public void initialize(CordovaInterface cordova, CordovaWebView webView) {
super.initialize(cordova, webView);
ConfigPreferences configPreferences=new ConfigPreferences(preferences.getAll());
DEConnectorProvider.initialize(cordova.getActivity().getApplicationContext(),configPreferences);
serverManager=DEConnectorProvider.getSharedInstance();
}
@Override
public boolean execute(String action, JSONArray args, final CallbackContext callbackContext) throws JSONException {
if (action.equals("serverRequest")) {
final JSONObject request = args.getJSONObject(0);
cordova.getThreadPool().execute(new Runnable() {
@Override
public void run() {
serverRequest(request, callbackContext);
}
});
return true;
}
return false;
}
private void serverRequest(JSONObject message, final CallbackContext callbackContext) {
if (message != null && message.length()>0) {
DEServerRequest request=serverManager.buildServerRequest(message);
this.serverManager.Request(request, new DEServerDelegate() {
@Override
public void HandleSuccessResult(DEServerResultSuccess deServerResultSuccess, DEServerRequest deServerRequest) {
callbackContext.success(deServerResultSuccess.asJSONObject());
}
@Override
public void onBeforeRetry(DEServerResultFailure deServerResultFailure, DEServerRequest deServerRequest, int tryCount, int retryDelay) {
//NOP
}
@Override
public void HandleErrorResult(DEServerResultFailure deServerResultFailure, DEServerRequest deServerRequest) {
JSONObject fail=createFailResponse(deServerResultFailure);
callbackContext.error(fail);
}
});
} else {
callbackContext.error("Expected one non-empty JSONObject");
}
}
private JSONObject createFailResponse(DEServerResultFailure deServerResultFailure) {
JSONObject response=new JSONObject();
try {
response.put("ERROR_CODE",deServerResultFailure.getErrorCode());
response.put("ERROR_MESSAGE",deServerResultFailure.getFailureDescription());
} catch (JSONException e) {
Log.e(MotifConnector.class.getName(),"JSON_EXCEPTION",e);
return createGenericError();
}
return response;
}
private JSONObject createGenericError() {
JSONObject response=new JSONObject();
try {
response.put("ERROR_CODE","GENERIC_ERROR");
response.put("ERROR_CODE","GENERIC_ERROR");
} catch (JSONException e) {
e.printStackTrace();
}
return response;
}
}