/** @Company 浙 江 鸿 程 计 算 机 系 统 有 限 公 司
* @URLhttp://www.zjhcsoft.com* @Address 杭州滨江区伟业路1号
* @Email [email protected]
* @author jinjr
* @data 2016-1-5 下午2:58:45*/package com.android.hcframe.internalservice.sign;
import android.content.Context;
import android.text.TextUtils;
import com.android.hcframe.CacheManager;
import com.android.hcframe.HcApplication;
import com.android.hcframe.HcLog;
import com.android.hcframe.HcUtil;
import com.android.hcframe.TemporaryCache;
import com.android.hcframe.http.AbstractHttpRequest;
import com.android.hcframe.http.AbstractHttpResponse;
import com.android.hcframe.http.HcHttpRequest;
import com.android.hcframe.http.IHttpResponse;
import com.android.hcframe.http.RequestCategory;
import com.android.hcframe.http.ResponseCategory;
import com.android.hcframe.sql.SettingHelper;
import org.json.JSONObject;
import java.util.Observable;public classSignCache extends Observable implements IHttpResponse, TemporaryCache {private static final String TAG = "SignCache";private final static SignCache CACHE = newSignCache();privateSignCofig mConfig;privateSignCache() {
CacheManager.getInstance().addCache(this);
mConfig= newSignCofig();
}public staticSignCache getInstance() {returnCACHE;
}
@Overridepublic voidclearCache(boolean exit) {if (exit) mConfig = null;else{
clearCache();
}
}private static classSignCofig {/** 纬度*/String mLatitude;/**
* 经度*/String mLongitude;/**
* 标准上班时间*/String mWorkInTime;/**
* 标准下班时间*/String mWorkOutTime;/**
* 当天签到时间*/String mSignInTime;/**
* 当天签出时间*/String mSignOutTime;/**
* 有效距离*/
intmDistance;
}public intgetMaxDistance() {returnmConfig.mDistance;
}public void setMaxDistance(intmaxDistance) {
mConfig.mDistance=maxDistance;
}publicString getLatitude() {returnmConfig.mLatitude;
}public voidsetLatitude(String latitude) {
mConfig.mLatitude=latitude;
}publicString getLongitude() {returnmConfig.mLongitude;
}public voidsetLongitude(String longitude) {
mConfig.mLongitude=longitude;
}publicString getWorkInTime() {returnmConfig.mWorkInTime;
}public voidsetWorkInTime(String workInTime) {
mConfig.mWorkInTime=workInTime;
}publicString getWorkOutTime() {returnmConfig.mWorkOutTime;
}public voidsetWorkOutTime(String workOutTime) {
mConfig.mWorkOutTime=workOutTime;
}publicString getSignInTime() {returnmConfig.mSignInTime;
}public voidsetSignInTime(String signInTime) {
mConfig.mSignInTime=signInTime;
}publicString getSignOutTime() {returnmConfig.mSignOutTime;
}public voidsetSignOutTime(String signOutTime) {
mConfig.mSignOutTime=signOutTime;
}
@Overridepublic voidnotify(Object data, RequestCategory request,
ResponseCategory category) {//TODO Auto-generated method stub
switch(request) {caseSIGNADDR:switch(category) {caseSUCCESS:if (data != null &&data instanceof String) {
parseSignConfig((String) data);
SettingHelper.setSignInfo(HcApplication.getContext(), (String) data);
}break;default:break;
}break;default:break;
}
}
@Overridepublic voidnotifyRequestMd5Url(RequestCategory request, String md5Url) {//TODO Auto-generated method stub
}/**
* 判断签到的一些配置信息是否存在;
* 此方法不是很严谨
* @author jrjin
* @time 2016-1-5 下午3:16:08
* @return*/
publicboolean configExist(Context context) {if(TextUtils.isEmpty(mConfig.mLatitude)) {
String data=SettingHelper.getSignInfo(context);if (!TextUtils.isEmpty(data))parseSignConfig(data);else {//去服务器获取数据
if(HcUtil.isNetWorkAvailable(context)) {
HcHttpRequest.getRequest().sendSignAddrCommand(this);
}//}
}return !TextUtils.isEmpty(mConfig.mLatitude);
}private voidparseSignConfig(String data) {try{
JSONObject body= newJSONObject(data);if (HcUtil.hasValue(body, "latitude")) {
mConfig.mLatitude= body.getString("latitude");
}if (HcUtil.hasValue(body, "longitude")) {
mConfig.mLongitude= body.getString("longitude");
}if (HcUtil.hasValue(body, "signInTime")) {
mConfig.mSignInTime= body.getString("signInTime");
}if (HcUtil.hasValue(body, "signOutTime")) {
mConfig.mSignOutTime= body.getString("signOutTime");
}if (HcUtil.hasValue(body, "workInTime")) {
mConfig.mWorkInTime= body.getString("workInTime");
}if (HcUtil.hasValue(body, "workOutTime")) {
mConfig.mWorkOutTime= body.getString("workOutTime");
}if (HcUtil.hasValue(body, "maxDistance")) {
mConfig.mDistance= body.getInt("maxDistance");
HcLog.D(TAG+ "#parseSignConfig mDistance =" +mConfig.mDistance);
}
}catch(Exception e) {//TODO: handle exception
HcLog.D(TAG + "#parseSignConfig e ="+e);
}
}/**
* 清除缓存
* @author jrjin
* @time 2016-1-28 下午1:45:10*/
public voidclearCache() {
mConfig= newSignCofig();
}
}