基于 android 数据备份恢复的一种实现Word下载.docx

上传人:b****6 文档编号:20677867 上传时间:2023-01-25 格式:DOCX 页数:20 大小:343.28KB
下载 相关 举报
基于 android 数据备份恢复的一种实现Word下载.docx_第1页
第1页 / 共20页
基于 android 数据备份恢复的一种实现Word下载.docx_第2页
第2页 / 共20页
基于 android 数据备份恢复的一种实现Word下载.docx_第3页
第3页 / 共20页
基于 android 数据备份恢复的一种实现Word下载.docx_第4页
第4页 / 共20页
基于 android 数据备份恢复的一种实现Word下载.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

基于 android 数据备份恢复的一种实现Word下载.docx

《基于 android 数据备份恢复的一种实现Word下载.docx》由会员分享,可在线阅读,更多相关《基于 android 数据备份恢复的一种实现Word下载.docx(20页珍藏版)》请在冰豆网上搜索。

基于 android 数据备份恢复的一种实现Word下载.docx

执行备份或恢复操作),通过FileInputStream和FileOutputStream对数据库文件进行read/write。

如果是本地备份则将自身的数据库文件写到SDCard;

如果是本地恢复将SDCard中对应的文件写到Contacts应用对应的路径下,用以覆盖原始数据库文件。

用Environment.getExternalStorageDirectory()方法获取SD卡的路径,卡存储空间大小及已占用空间获取方法:

/*获取存储卡路径*/

FilesdcardDir=Environment.getExternalStorageDirectory();

/*StatFs看文件系统空间使用情况*/

StatFsstatFs=newStatFs(sdcardDir.getPath());

/*Block的size*/

LongblockSize=statFs.getBlockSize();

/*总Block数量*/

LongtotalBlocks=statFs.getBlockCount();

/*已使用的Block数量*/

LongavailableBlocks=statFs.getAvailableBlocks();

序列图如下所示:

图4.本地备份恢复序列图

本地备份恢复客户端的实现:

如下图给出了BackupRestoreActivity和ContactsReceiver的类图,以及他们工作机制中涉及到的类的结构。

图5.本地备份恢复类图

∙Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦.

∙此处的IntentFilter起动态注册action,使之用于接收同action的广播消息IntentFilter

commandFilter=newIntentFilter();

commandFilter.addAction("

signal"

);

registerReceiver(BroadcastReceiver,commandFilter);

BroadcastReceiver用来接收和响应广播消息

∙Handler主要接受子线程发送的数据,并用此数据配合主线程更新UI.

∙ContactsReceiver调用Thread开启一个线程,用以接收由BackupRestoreActivity发出的备份/恢复信号。

∙NetToolHandler(用于网络备份恢复)定义了一些用来和服务器进行交互的方法;

IHttpResponse是在NetToolHandler中定义的一个内部接口,主要用来回调NetToolHandler中返回的信息,根据返回的信息进行下一步操作。

用户选择本地备份或者本地恢复,ContactsReceiver则收到广播消息后,根据信号判断操作的类别是备份还是恢复,然后启动一个线程,在线程中调用Handler,通过Handler去处理读写数据。

网络备份恢复

服务器端设计与实现

网络备份通过WiFi或者GPRS在手机端与服务器进行连接,服务器提供相应的接口,用于上传或下载文件。

服务器端用例分析

1)备份数据上传:

响应客户端的backup功能。

文件通过HTTP请求提交到服务器,服务器接收文件并保存,序列图表示如下:

图6.网络备份恢复上传序列图

说明:

如果Servlet检查到输入参数不合法,会中断服务并通知客户端。

接口定义:

URL:

https:

//<

server>

:

<

port>

/upload?

uuid=<

上传文件的uuid>

&

name=<

真实文件名>

md5=8b1a9fbf5e111296a827abf8c47804d7&

offset=<

偏移量>

desc=<

文件描述信息>

size=<

文件大小>

deviceid=<

终端的id>

,HTTP正文为上传的内容

表1.备份数据上传参数表

提交项

关键字

作用

格式

uuid

方便上载失败后断点续传,客户端生成

文件名

name

上传文件名

MD5校验码

md5

用于对上载文件作完整性校验。

16进制格式,共32位长

偏移量

offset

断点续传的偏移量。

长整数,最小为0,最大为文件字节数。

文件描述信息

desc

除用户名外的文件描述。

不能大于256个字符,否则抛出400错误

文件大小

size

用于断点续传功能建立文件时使用。

长整数

设备id

deviceid

用于一个用户多个设备进行网络备份恢复的依据

必须使用POST方式提交,且只允许上传一个文件

offset:

客户端应从offset(包含offset)开始上传文件。

offset=0时,忽略offset参数。

如果是续传文件,应先用uploadquery接口查询文件已上传部分的大小,以获取offset的值

表2.备份数据上传返回值

成功

HTTP头

HTTPBody

200

失败(包含公共错误)

HTTP头错误码

HTTPBody(Xml格式的错误消息)

Code

Message

400

MSG-1001

文件上传失败

2)备份数据下载:

响应客户端的网络恢复功能。

根据文件名将用户请求的文件传递给客户端。

序列图表示如下:

图7.网络备份恢复下载序列图

流程描述如下:

∙客户端向服务器发送requestDownload请求,请求中包含文件的uuid和断点续传的起始点。

∙Servlet调用downloadSavedFile接口,传递文件uuid和range参数。

∙数据库存取返回自range开始的字节流,字节流返回给前面的servlet。

/fileDownload?

uuid=<

文件标识>

range=<

&

参数含义同备份数据上传;

客户端应从range(包含range)开始下载,range=0时,忽略range参数。

表3.备份数据下载返回值:

200/201

要下载的文件流,新下载返回的是200否则返回201

失败

MSG-1002

无法下载

3)新建手机备份存储空间:

当客户端第一次访问备份服务器时,系统会返回找不到个人网络备份存储空间错误,客户端软件提示用户是否新建备份空间,用户确认建立个人网络备份空间,系统才会为其建立存储空间。

服务器会用deviceid为标识为对应的手机的分配固定大小的空间。

服务器端使用adapter模式来连接多种不同文件存储媒体。

图8.网络备份恢复创建存储空间序列图

  

/createspace?

参数含义同备份数据上传。

表4.创建存储空间返回值:

MSG-1003

备份空间已建立

MSG-1004

新建备份空间失败

4)查询已上传部分的大小:

当文件上传中断时,可以查询已上传部分的大小,然后断点续传余下部分。

图9.网络备份恢复查询已上传部分序列图

/uploadquery?

表5.查询文件已上传部分返回值:

正整数(文件已上传部分的大小)

MSG-1005

文件已上传完成

服务器端的实现:

 1)包文件设计如下所示:

图10.网络备份恢复包文件设计图

  

∙com.bakrestore.server.dao下面主要存放DAO接口,DAO主要用来解偶业务方法和数据源,即在业务核心方法和具体数据源之间再增加一层,用来连接业务方法和数据源。

∙com.bakrestore.server.model主要存放一些持久化类

∙com.bakrestore.server.service主要存放业务逻辑类

∙com.bakrestore.server.web主要用来存放接口类,用来响应手机终端。

在spring的配置文件:

applicationContext.xml中,该文件中定义了Spring要管理的所有的Beans,用Beans的形式来管理所有的对象以及他们之间的赋值依赖的。

在此配置文件中主要定义了dao,model,service下面的类。

示例代码如下:

清单1.spring的配置文件

<

beanid="

sqlMapClient"

class="

org.springframework.orm.ibatis.SqlMapClientFactoryBean"

>

propertyname="

configLocation"

value="

classpath:

com/bakrestore/server/dao/ibatis/sql/sql-map-config.xml"

/>

dataSource"

ref="

lobHandler"

/bean>

userSpaceDAO"

com.bakrestore.server.dao.ibatis.UserSpaceDAOImpl"

/>

userFileDAO"

com.bakrestore.server.dao.ibatis.UserFileDAOImpl"

adddbdao"

com.bakrestore.server.dao.ibatis.AddDbDAOImpl"

addDbService"

com.bakrestore.server.service.impl.AddDbServiceImpl"

fileContentService"

fileService"

com.bakrestore.server.service.impl.FileServiceImpl"

spaceService"

com.bakrestore.server.service.impl.SpaceServiceImpl"

spaceMaxSize"

${UserSpaceMaxSize}"

在SpringDispatcher-servlet.xml配置一个视图解析器,其次将手机端的请求与相应的进行映射.以便程序在执行过程中可以依据映射找到所需Controller,相应的Controller与applicationContext.xml所定义的beans进行交互。

清单2.配置一个视图解析器

createspace"

name="

/createspace"

parent="

pim"

com.bakrestore.server.web.CreateSpaceController"

download"

/download"

com.bakrestore.server.web.DownloadController"

>

uploadquery"

/uploadquery"

com.bakrestore.server.web.UploadQueryController"

upload"

/upload"

com.bakrestore.server.web.UploadController"

sizeMax"

${UploadFileSizeMax}"

uploadFileTempFolder"

${UploadFileTempFolder}"

2)持久化类设计如下所示:

在com.bakrestore.server.model文件夹中包含FileNode,FolderNode,UserFile,DatabaseFileContent,FileSystemFileContent,UserFileContent,UserSpace的一些类,他们的作用是:

∙DatabaseFileContent:

用数据库存储文件内容的文件内容实体类

∙FileSystemFileContent:

用文件系统的保存文件内容实体类

∙FileNode:

文件结点,与FolderNode一起构成了文件目录树

∙FolderNode:

目录节点

∙UserFile:

用户文件或文件夹实体类

∙UserFileContent:

用户文件内容实体类,抽象类

∙UserSpace:

用户备份空间实体类

类图以及他们工作机制如下所示:

图11.网络备份恢复持久化类设计图

3)应用类:

应用类主要用来响应手机发出的HTTP请求信号,在com.bakrestore.server.web文件夹主要包含CreateSpaceController,DownloadController,ErrorCode,BaseController,RequestParamater,UploadController,UploadQueryController等一些控制器,他们的作用分别是:

∙CreateSpaceController:

创建用户空间

∙DownloadController:

用以文件下载

∙ErrorCode:

错误消息封装类

∙BaseController:

备份恢复系统中Controller的公共类,定义了通用的变量和方法

∙RequestParamater:

参数解析类

∙UploadController:

文件上传服务类

∙UploadQueryController:

查询已上传文件部分的大小

以下是他们之间的工作机制:

图12.网络备份恢复应用类设计图

4)DAO类

  在dao文件夹包含PbsDataAccessException,UserFileContentDAO,UserFileDAO,

UserSpaceDAO四个interface,他们的作用分别是:

∙PbsDataAccessException:

数据库操作异常,所有对数据库的操作都要抛出此异常

∙UserFileContentDAO:

对文件内容存取的DAO接口

∙UserFileDAO:

对文件信息存取的DAO接口

∙UserSpaceDAO:

对备份空间信息存取的DAO接口

 以下是他们之间的工作机制:

图13.网络备份恢复DAO类设计图

5)业务逻辑类

在service文件夹包含FileContentService,FileService,SpaceService三个interface,他们的作用分别是:

∙FileContentService:

对文件内容进行操作的接口

∙FileService:

对文件进行操作维护的接口

∙SpaceService:

对手机备份空间进行维护的接口

图14.网络备份恢复业务逻辑类设计图

6)数据库层设计

数据库层设计及相互关系表示如下:

图15.数据库关系图

表6.用户存储空间表UserSpace

字段名

类型

描述

备注

id

Integer

存储空间ID

主键,系统生成

userID

用户ID

FK(逻辑外键)

deviceID

Varchar(16)

FK

rootPath

Varchar(256)

根文件夹

仅当文件存储在文件系统时有效

spaceType

Char

(1)

0-设备备份空间,1-普通备份空间

maxSize

最大空间大小

usedSize

已使用空间大小

directionStruct

LONGTEXT

目录结构xml

directionStructMD5

Char(32)

目录结构xml的MD5验证码

createSystemTime

DateTime

创建时间

系统生成

表7.用户上传的文件表UserFile

Varchar(32)

文件ID

userSpaceID

FK,用户存储空间表的主键

fileName

Varchar(128)

modifySystemTime

修改时间

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 财务管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1