package com.ijoomer.common.classes;
import android.app.Activity;
import android.content.Context;
import android.os.AsyncTask;
import com.ijoomer.caching.IjoomerCaching;
import com.ijoomer.common.classes.IjoomerResponseValidator;
import com.ijoomer.common.configuration.IjoomerApplicationConfiguration;
import com.ijoomer.weservice.IjoomerWebService;
import com.ijoomer.weservice.ProgressListener;
import com.ijoomer.weservice.WebCallListener;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
/**
* This Class Contains All Method Related To IcmsArticleDetailDataProvider.
*
* @author tasol
*
*/
public class IjoomerMenuDataProvider extends IjoomerResponseValidator {
private Context mContext;
private final String SUBMENU = "subMenu";
private final String MENUID = "menuid";
private ArrayList<HashMap<String, String>> data1;
/**
* Constructor
*
* @param context
* represented {@link Context}
*/
public IjoomerMenuDataProvider(Context context) {
super(context);
mContext = context;
}
/***
* This method is used to get article Detail
*
* @param id
* represented article id
*
* @param target
* represented {@link WebCallListener}
*/
public void getSubMenu(final String id, final WebCallListener target) {
new AsyncTask<Void, Void, ArrayList<HashMap<String, String>>>() {
@Override
protected ArrayList<HashMap<String, String>> doInBackground(Void... params) {
IjoomerWebService iw = new IjoomerWebService();
iw.reset();
iw.addWSParam(TASK, SUBMENU);
JSONObject taskData = new JSONObject();
try {
taskData.put(MENUID, id);
} catch (Throwable e) {
}
iw.addWSParam(TASKDATA, taskData);
if (IjoomerApplicationConfiguration.isCachEnable) {
data1 = new ArrayList<HashMap<String, String>>();
try {
data1 = new IjoomerCaching(mContext).getDataFromCache(SUBMENU, "select * from '" + SUBMENU + "' where reqObject='" + iw.getWSParameter() + "'");
if (data1 != null && data1.size() > 0) {
((Activity) mContext).runOnUiThread(new Runnable() {
@Override
public void run() {
target.onProgressUpdate(100);
target.onCallComplete(200, "", data1, null);
}
});
}
} catch (Throwable e) {
e.printStackTrace();
}
}
iw.WSCall(new ProgressListener() {
@Override
public void transferred(long num) {
if (num >= 100) {
target.onProgressUpdate(95);
} else {
target.onProgressUpdate((int) num);
}
}
});
if (validateResponse(iw.getJsonObject())) {
try {
iw.getJsonObject().remove("code");
if (IjoomerApplicationConfiguration.isCachEnable) {
IjoomerCaching caching = new IjoomerCaching(mContext);
caching.setReqObject(iw.getWSParameter().toString());
return caching.cacheData(iw.getJsonObject(), false, SUBMENU);
} else {
return new IjoomerCaching(mContext).parseData(iw.getJsonObject());
}
} catch (Throwable e) {
}
}
return null;
}
@Override
protected void onPostExecute(ArrayList<HashMap<String, String>> result) {
super.onPostExecute(result);
target.onCallComplete(getResponseCode(), getErrorMessage(), result, null);
target.onProgressUpdate(100);
}
}.execute();
}
}