New file |
| | |
| | | package com.hdl.linkpm.sdk.workbench.databackup.controller; |
| | | |
| | | |
| | | |
| | | import android.os.Environment; |
| | | |
| | | import com.google.gson.JsonObject; |
| | | import com.hdl.hdlhttp.HxHttp; |
| | | import com.hdl.hdlhttp.callback.HxException; |
| | | import com.hdl.linkpm.sdk.HDLLinkPMSdk; |
| | | import com.hdl.linkpm.sdk.core.api.HDLCloudUserApi; |
| | | import com.hdl.linkpm.sdk.core.bean.PageInfoListBean; |
| | | import com.hdl.linkpm.sdk.core.callback.IDefaultCallBack; |
| | | import com.hdl.linkpm.sdk.core.callback.IResponseCallBack; |
| | | import com.hdl.linkpm.sdk.core.exception.HDLException; |
| | | import com.hdl.linkpm.sdk.core.response.HDLResponse; |
| | | import com.hdl.linkpm.sdk.utils.HDLExceptionSubmitUtils; |
| | | import com.hdl.linkpm.sdk.utils.HDLFileUtils; |
| | | import com.hdl.linkpm.sdk.utils.HDLGsonUtils; |
| | | import com.hdl.linkpm.sdk.workbench.databackup.bean.BackupListBean; |
| | | import com.hdl.linkpm.sdk.workbench.databackup.bean.GatewayBackupBean; |
| | | |
| | | import java.io.File; |
| | | import java.util.List; |
| | | |
| | | import io.reactivex.rxjava3.disposables.Disposable; |
| | | import io.reactivex.rxjava3.subscribers.DisposableSubscriber; |
| | | import okhttp3.ResponseBody; |
| | | |
| | | /** |
| | | * Created by hxb on 2022/2/23. |
| | | */ |
| | | public class DataBackupController { |
| | | /** |
| | | * instance |
| | | */ |
| | | private volatile static DataBackupController instance; |
| | | |
| | | /** |
| | | * getInstance |
| | | * |
| | | * @return DataBackupController |
| | | */ |
| | | public static synchronized DataBackupController getInstance() { |
| | | if (instance == null) { |
| | | synchronized (DataBackupController.class) { |
| | | if (instance == null) { |
| | | instance = new DataBackupController(); |
| | | } |
| | | } |
| | | } |
| | | return instance; |
| | | } |
| | | |
| | | /** |
| | | * 上传备份数据 |
| | | * |
| | | * @param homeId 住宅ID |
| | | * @param data 上传的数据内容 |
| | | * @param callBack |
| | | * @return |
| | | */ |
| | | public Disposable dataBackupUpload(String homeId, byte[] data, IDefaultCallBack callBack) { |
| | | String requestUrl = HDLLinkPMSdk.getUserRegionUrl() + HDLCloudUserApi.POST_BACKUP_UPLOAD + "?houseId=" + homeId; |
| | | String path = HDLLinkPMSdk.getContext().getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS).getPath() + "/Temp/"; |
| | | String fileName = System.currentTimeMillis() + ""; |
| | | HDLFileUtils.byteToFile(data, path, fileName); |
| | | File file = new File(path + fileName); |
| | | |
| | | return HxHttp.builder() |
| | | .file(file, "file") |
| | | .url(requestUrl) |
| | | .build() |
| | | .upload() |
| | | .subscribeWith(new HDLResponse<String>() { |
| | | @Override |
| | | public void onResponse(String code) { |
| | | HDLFileUtils.deleteFile(file); |
| | | if (callBack != null) { |
| | | callBack.onSuccess(); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | HDLFileUtils.deleteFile(file); |
| | | HDLExceptionSubmitUtils.submit(requestUrl, homeId, e); |
| | | if (callBack != null) { |
| | | callBack.onFailure(e); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 删除备份数据 |
| | | * |
| | | * @param homeId 住宅ID |
| | | * @param callBack |
| | | * @return |
| | | */ |
| | | public Disposable databackDel(String homeId, IDefaultCallBack callBack) { |
| | | String requestUrl = HDLLinkPMSdk.getUserRegionUrl() + HDLCloudUserApi.POST_BACKUP_DEL; |
| | | JsonObject json = new JsonObject(); |
| | | json.add("houseIds", HDLGsonUtils.toJsonArray(new String[]{homeId})); |
| | | return HxHttp.builder() |
| | | .raw(json.toString()) |
| | | .url(requestUrl) |
| | | .build() |
| | | .post() |
| | | .subscribeWith(new HDLResponse<String>() { |
| | | @Override |
| | | public void onResponse(String url) { |
| | | if (null != callBack) { |
| | | callBack.onSuccess(); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | HDLExceptionSubmitUtils.submit(requestUrl, json, e); |
| | | if (callBack != null) { |
| | | callBack.onFailure(e); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 获取数据最新下载路径 |
| | | * |
| | | * @param homeId 住宅ID |
| | | * @param callBack |
| | | * @return |
| | | */ |
| | | public Disposable databackDownload(String homeId,String path, IDefaultCallBack callBack) { |
| | | String requestUrl = HDLLinkPMSdk.getUserRegionUrl() + HDLCloudUserApi.POST_BACKUP_DOWNLOAD_URL; |
| | | JsonObject json = new JsonObject(); |
| | | json.addProperty("houseId", homeId); |
| | | return HxHttp.builder() |
| | | .raw(json.toString()) |
| | | .url(requestUrl) |
| | | .build() |
| | | .post() |
| | | .subscribeWith(new HDLResponse<String>() { |
| | | @Override |
| | | public void onResponse(String url) { |
| | | HxHttp.builder() |
| | | .url(url) |
| | | .build() |
| | | .download() |
| | | .subscribe(new DisposableSubscriber<ResponseBody>() { |
| | | @Override |
| | | public void onNext(ResponseBody responseBody) { |
| | | if (HDLFileUtils.writeFile(path, responseBody.byteStream())) { |
| | | if (null != callBack) { |
| | | callBack.onSuccess(); |
| | | } |
| | | } else { |
| | | if (callBack != null) { |
| | | callBack.onFailure(new HDLException(HxException.ErrorCode.UNKNOWN, "Download Fail")); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void onError(Throwable t) { |
| | | if (callBack != null) { |
| | | callBack.onFailure(new HDLException(HxException.ErrorCode.UNKNOWN, t.getMessage())); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void onComplete() { |
| | | |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | HDLExceptionSubmitUtils.submit(requestUrl, json, e); |
| | | if (callBack != null) { |
| | | callBack.onFailure(e); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 获取备份列表 |
| | | * |
| | | * @param userId 用户ID |
| | | * @param pageNo 开始索引 |
| | | * @param pageSize 页面大小 |
| | | * @param callBack |
| | | * @return |
| | | */ |
| | | public Disposable databackList(String userId,int pageNo, int pageSize, IResponseCallBack<PageInfoListBean<BackupListBean>> callBack) { |
| | | String requestUrl = HDLLinkPMSdk.getUserRegionUrl() + HDLCloudUserApi.POST_BACKUP_LIST; |
| | | JsonObject json = new JsonObject(); |
| | | json.addProperty("pageNo", pageNo); |
| | | json.addProperty("pageSize", pageSize); |
| | | json.addProperty("debugUserId", userId); |
| | | return HxHttp.builder() |
| | | .raw(json.toString()) |
| | | .url(requestUrl) |
| | | .build() |
| | | .post() |
| | | .subscribeWith(new HDLResponse<PageInfoListBean<BackupListBean>>() { |
| | | @Override |
| | | public void onResponse(PageInfoListBean<BackupListBean> response) { |
| | | if (callBack != null) { |
| | | callBack.onSuccess(response); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | HDLExceptionSubmitUtils.submit(requestUrl, json, e); |
| | | if (callBack != null) { |
| | | callBack.onFailure(e); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取网关最新的三份备份数据 |
| | | * |
| | | * @param homeId 住宅Id |
| | | * @param gatewayId 云端上网关gatewayId |
| | | * @param callBack |
| | | * @return |
| | | */ |
| | | public Disposable getGatewayBackupDataList(String homeId, String gatewayId, IResponseCallBack<List<GatewayBackupBean>> callBack) { |
| | | String requestUrl = HDLLinkPMSdk.getUserRegionUrl() + HDLCloudUserApi.POST_GATEWAY_BACKUP_LIST; |
| | | JsonObject json = new JsonObject(); |
| | | json.addProperty("spaceCode", homeId); |
| | | json.addProperty("gatewayId", gatewayId); |
| | | return HxHttp.builder() |
| | | .raw(json.toString()) |
| | | .url(requestUrl) |
| | | .build() |
| | | .post() |
| | | .subscribeWith(new HDLResponse<List<GatewayBackupBean>>() { |
| | | @Override |
| | | public void onResponse(List<GatewayBackupBean> response) { |
| | | if (callBack != null) { |
| | | callBack.onSuccess(response); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | HDLExceptionSubmitUtils.submit(requestUrl, json, e); |
| | | if (callBack != null) { |
| | | callBack.onFailure(e); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | /** |
| | | * 获取调试完成的备份文件回复 |
| | | * |
| | | * @param homeId 住宅Id |
| | | * @param gatewayId 云端上网关gatewayId |
| | | * @param callBack |
| | | * @return |
| | | */ |
| | | public Disposable getDebugGatewayBackupDataList(String homeId, String gatewayId, IResponseCallBack<GatewayBackupBean> callBack) { |
| | | String requestUrl = HDLLinkPMSdk.getUserRegionUrl() + HDLCloudUserApi.POST_GATEWAY_BACKUP_DEBUGCOMPLETEBACKUPFILE; |
| | | JsonObject json = new JsonObject(); |
| | | json.addProperty("spaceCode", homeId); |
| | | json.addProperty("gatewayId", gatewayId); |
| | | return HxHttp.builder() |
| | | .raw(json.toString()) |
| | | .url(requestUrl) |
| | | .build() |
| | | .post() |
| | | .subscribeWith(new HDLResponse<GatewayBackupBean>() { |
| | | @Override |
| | | public void onResponse(GatewayBackupBean response) { |
| | | if (callBack != null) { |
| | | callBack.onSuccess(response); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | HDLExceptionSubmitUtils.submit(requestUrl, json, e); |
| | | if (callBack != null) { |
| | | callBack.onFailure(e); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | /** |
| | | * 调试宝选择网关恢复的备份文件 |
| | | * |
| | | * @param homeId 住宅Id |
| | | * @param gatewayId 云端上网关gatewayId |
| | | * @param recordId 备份记录id |
| | | * @param callBack 回调 |
| | | * @return Disposable |
| | | */ |
| | | public Disposable getGatewayBackupRecover(String homeId, String gatewayId,long recordId, IResponseCallBack callBack) { |
| | | String requestUrl = HDLLinkPMSdk.getUserRegionUrl() + HDLCloudUserApi.POST_GATEWAY_BACKUP_RECOVER; |
| | | JsonObject json = new JsonObject(); |
| | | json.addProperty("spaceCode", homeId); |
| | | json.addProperty("gatewayId", gatewayId); |
| | | json.addProperty("recordId", recordId); |
| | | return HxHttp.builder() |
| | | .raw(json.toString()) |
| | | .url(requestUrl) |
| | | .build() |
| | | .post() |
| | | .subscribeWith(new HDLResponse<String>() { |
| | | @Override |
| | | public void onResponse(String response) { |
| | | if (callBack != null) { |
| | | callBack.onSuccess(response); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | HDLExceptionSubmitUtils.submit(requestUrl, json, e); |
| | | if (callBack != null) { |
| | | callBack.onFailure(e); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 网关替换 |
| | | * |
| | | * @param homeId 住宅Id |
| | | * @param gatewayId 云端上网关gatewayId |
| | | * @param newMac newMac 新网关mac |
| | | * @param callBack 回调 |
| | | * @return Disposable |
| | | */ |
| | | public Disposable getGatewayReplace(String homeId, String gatewayId,String newMac, IResponseCallBack callBack) { |
| | | String requestUrl = HDLLinkPMSdk.getUserRegionUrl() + HDLCloudUserApi.POST_GATEWAY_REPLACE; |
| | | JsonObject json = new JsonObject(); |
| | | json.addProperty("homeId", homeId); |
| | | json.addProperty("gatewayId", gatewayId);//旧网关id |
| | | json.addProperty("newMac", newMac);//newMac 新网关mac |
| | | return HxHttp.builder() |
| | | .raw(json.toString()) |
| | | .url(requestUrl) |
| | | .build() |
| | | .post() |
| | | .subscribeWith(new HDLResponse<String>() { |
| | | @Override |
| | | public void onResponse(String response) { |
| | | if (callBack != null) { |
| | | callBack.onSuccess(response); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | HDLExceptionSubmitUtils.submit(requestUrl, json, e); |
| | | if (callBack != null) { |
| | | callBack.onFailure(e); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | } |