From d0592bbd37718b29788420e3f0e0be4a5502fcc7 Mon Sep 17 00:00:00 2001 From: liyun Date: Fri, 19 Jul 2013 15:56:09 +0800 Subject: [PATCH] check event online status before send --- sdk/android_sdk/SDK/project.properties | 12 -- .../com/wbtech/ums/common/UmsConstants.java | 31 +++-- .../ums/controller/EventController.java | 110 ++++++++++++------ .../src/com/wbtech/ums/dao/JSONParser.java | 7 +- .../src/com/wbtech/ums/objects/MyMessage.java | 8 ++ 5 files changed, 103 insertions(+), 65 deletions(-) delete mode 100644 sdk/android_sdk/SDK/project.properties diff --git a/sdk/android_sdk/SDK/project.properties b/sdk/android_sdk/SDK/project.properties deleted file mode 100644 index 337e8f37..00000000 --- a/sdk/android_sdk/SDK/project.properties +++ /dev/null @@ -1,12 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system use, -# "ant.properties", and override values to adapt the script to your -# project structure. - -# Project target. -target=android-7 -android.library=true diff --git a/sdk/android_sdk/SDK/src/com/wbtech/ums/common/UmsConstants.java b/sdk/android_sdk/SDK/src/com/wbtech/ums/common/UmsConstants.java index 0f189650..fd83cdaf 100644 --- a/sdk/android_sdk/SDK/src/com/wbtech/ums/common/UmsConstants.java +++ b/sdk/android_sdk/SDK/src/com/wbtech/ums/common/UmsConstants.java @@ -12,17 +12,24 @@ * @filesource */ package com.wbtech.ums.common; + public class UmsConstants { - public static boolean DebugMode=true; - public static long kContinueSessionMillis = 30000L; - public static final Object saveOnlineConfigMutex = new Object(); - public static final String eventUrl="/ums/postEvent"; - public static final String errorUrl = "/ums/postErrorLog"; - public static final String clientDataUrl = "/ums/postClientData"; - public static final String updataUrl = "/ums/getApplicationUpdate"; - public static final String activityUrl = "/ums/postActivityLog"; - public static final String onlineConfigUrl ="/ums/getOnlineConfiguration"; - public static final String uploadUrl = "/ums/uploadLog"; - public static String preUrl=""; + public static boolean DebugMode = true; + public static long kContinueSessionMillis = 30000L; + public static final Object saveOnlineConfigMutex = new Object(); + public static final String eventUrl = "/ums/postEvent"; + public static final String errorUrl = "/ums/postErrorLog"; + public static final String clientDataUrl = "/ums/postClientData"; + public static final String updataUrl = "/ums/getApplicationUpdate"; + public static final String activityUrl = "/ums/postActivityLog"; + public static final String onlineConfigUrl = "/ums/getOnlineConfiguration"; + public static final String uploadUrl = "/ums/uploadLog"; + public static String preUrl = ""; + + public static final int FLAG_EVENT_NOT_REGISTER = -5; + + public static final String PREFERENCE_CONFIG = "ums_config"; + public static final String EVENT_ONLINE_PREFIX = "event_online_"; + public static final String EVENT_ONLINE_UPDATEDATE = "event_online_updatedate"; + public static final String TAG = "UmsAgent"; } - \ No newline at end of file diff --git a/sdk/android_sdk/SDK/src/com/wbtech/ums/controller/EventController.java b/sdk/android_sdk/SDK/src/com/wbtech/ums/controller/EventController.java index 13753652..a20f1f94 100644 --- a/sdk/android_sdk/SDK/src/com/wbtech/ums/controller/EventController.java +++ b/sdk/android_sdk/SDK/src/com/wbtech/ums/controller/EventController.java @@ -1,7 +1,12 @@ - package com.wbtech.ums.controller; +import java.util.Date; + +import org.json.JSONObject; + import android.content.Context; +import android.content.SharedPreferences; +import android.content.SharedPreferences.Editor; import android.os.Handler; import com.wbtech.ums.common.AssembJSONObj; @@ -12,42 +17,71 @@ import com.wbtech.ums.objects.MyMessage; import com.wbtech.ums.objects.PostObjEvent; -import org.json.JSONObject; - public class EventController { - static final String EVENTURL = UmsConstants.preUrl + UmsConstants.eventUrl; - public static boolean postEventInfo(Handler handler, Context context, PostObjEvent event) { - try { - if (!event.verification()) - { - CommonUtil.printLog("UMSAgent", "Illegal value of acc in postEventInfo"); - return false; - } - - JSONObject localJSONObject = AssembJSONObj.getEventJOSNobj( event); - - if (1 == CommonUtil.getReportPolicyMode(context) - && CommonUtil.isNetworkAvailable(context)) { - try { - String reslut = NetworkUitlity.Post(EVENTURL, localJSONObject.toString()); - MyMessage info = JSONParser.parse(reslut); - if (!info.isFlag()) { - CommonUtil.saveInfoToFile(handler, "eventInfo", localJSONObject, context); - return false; - } - } catch (Exception e) { - CommonUtil.printLog("UmsAgent", "fail to post eventContent"); - } - } else { - - CommonUtil.saveInfoToFile(handler, "eventInfo", localJSONObject, context); - return false; - } - } catch (Exception e) { - CommonUtil.printLog("UMSAgent", "Exception occurred in postEventInfo()"); - e.printStackTrace(); - return false; - } - return true; - } + static final String EVENTURL = UmsConstants.preUrl + UmsConstants.eventUrl; + + public static boolean postEventInfo(Handler handler, Context context, PostObjEvent event) { + try { + if (!event.verification()) { + CommonUtil.printLog("UMSAgent", "Illegal value of acc in postEventInfo"); + return false; + } + + JSONObject localJSONObject = AssembJSONObj.getEventJOSNobj(event); + if (!checkEventOnline(context, event.getEvent_id())) { + return false; + } + + if (1 == CommonUtil.getReportPolicyMode(context) && CommonUtil.isNetworkAvailable(context)) { + try { + String reslut = NetworkUitlity.Post(EVENTURL, localJSONObject.toString()); + MyMessage info = JSONParser.parse(reslut); + if (!info.isFlag()) { + if (info.getFlagCode() == UmsConstants.FLAG_EVENT_NOT_REGISTER) { + // event not register, cache status for check + SharedPreferences umsConfig = context.getSharedPreferences(UmsConstants.PREFERENCE_CONFIG, + Context.MODE_PRIVATE); + Editor editor = umsConfig.edit(); + editor.putBoolean(UmsConstants.EVENT_ONLINE_PREFIX + event.getEvent_id(), false); + editor.putLong(UmsConstants.EVENT_ONLINE_UPDATEDATE, new Date().getTime()); + editor.commit(); + } else { + CommonUtil.saveInfoToFile(handler, "eventInfo", localJSONObject, context); + } + return false; + } + } catch (Exception e) { + CommonUtil.printLog("UmsAgent", "fail to post eventContent"); + } + } else { + + CommonUtil.saveInfoToFile(handler, "eventInfo", localJSONObject, context); + return false; + } + } catch (Exception e) { + CommonUtil.printLog("UMSAgent", "Exception occurred in postEventInfo()"); + e.printStackTrace(); + return false; + } + return true; + } + + /** + * check the event online status + * */ + private static boolean checkEventOnline(Context context, String event_id) { + SharedPreferences config = context.getSharedPreferences(UmsConstants.PREFERENCE_CONFIG, Context.MODE_PRIVATE); + boolean onlineStatus = config.getBoolean(UmsConstants.EVENT_ONLINE_PREFIX + event_id, true); + if (onlineStatus) { + return true; + } + // check the last update date, if more than 1 day, send event again and + // the status will be saved after event send + long lastUpdateDate = config.getLong(UmsConstants.EVENT_ONLINE_UPDATEDATE, 0); + long now = new Date().getTime(); + if (now - lastUpdateDate > 86400000) { + return true; + } + return false; + } } diff --git a/sdk/android_sdk/SDK/src/com/wbtech/ums/dao/JSONParser.java b/sdk/android_sdk/SDK/src/com/wbtech/ums/dao/JSONParser.java index a5333b70..670f8604 100644 --- a/sdk/android_sdk/SDK/src/com/wbtech/ums/dao/JSONParser.java +++ b/sdk/android_sdk/SDK/src/com/wbtech/ums/dao/JSONParser.java @@ -1,11 +1,11 @@ package com.wbtech.ums.dao; -import com.wbtech.ums.common.CommonUtil; -import com.wbtech.ums.objects.MyMessage; - import org.json.JSONException; import org.json.JSONObject; +import com.wbtech.ums.common.CommonUtil; +import com.wbtech.ums.objects.MyMessage; + public class JSONParser { public static MyMessage parse(String str) { @@ -23,6 +23,7 @@ public static MyMessage parse(String str) { message.setFlag(false); } message.setMsg(jsonObject.getString("msg")); + message.setFlagCode(Integer.parseInt(flag)); } catch (JSONException e1) { CommonUtil.printLog("JSONParser", e1.toString()); } catch (NumberFormatException e2) { diff --git a/sdk/android_sdk/SDK/src/com/wbtech/ums/objects/MyMessage.java b/sdk/android_sdk/SDK/src/com/wbtech/ums/objects/MyMessage.java index 41d348ca..0b2b805c 100644 --- a/sdk/android_sdk/SDK/src/com/wbtech/ums/objects/MyMessage.java +++ b/sdk/android_sdk/SDK/src/com/wbtech/ums/objects/MyMessage.java @@ -16,6 +16,14 @@ public class MyMessage { private boolean flag; private String msg; + private int flagCode; + + public int getFlagCode() { + return flagCode; + } + public void setFlagCode(int flagCode) { + this.flagCode = flagCode; + } public boolean isFlag() { return flag; }