




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
盐城师范学院毕业设计盐 城 师 范 学 院毕业设计过程资产产品能力分析与展示系统中后台数据服务设计与实现学生姓名 学 院 信息工程 专 业 计算机科学与技术 班 级 学 号 指导教师 2016 年 05 月20日摘 要随着高新技术的快速发展,国电南京自动化股份有限公司的规模不断扩大,公司研发设备的更新速度也越来越快,单靠人力来记录这些变更的记录已经无法满足于当前公司的规模,对于这些大规模的设备,也无法记录每台设备所装的环境以及对这些环境评判。其次公司高层希望能够掌握每位员工的工作效率和对项目贡献度,由于参与的部门过多,导致参与项目的员工的流动性大大增加,此时对员工进行工作效率和贡献度评判过于困难,因此需要一种标准来衡量每位员工的效率和贡献度。本课题针对国电南京自动化股份有限公司遇到的问题,开发了EVM-SVN系统。该系统分为三个部分,分别解决这些问题。本系统由团队完成,本文主要负责系统后台的实现,主要功能如下:(1) 设计实现了资产配置功能模块,为员工提供可视化界面操作来记录软硬件设备的更新。(2) 设计实现了配置能力管理模块,为提供了可视化界面操作来记录和评判每台设备的环境。(3) 设计实现了SVN日志分析模块,通过对SVN日志的提取和分析,量化每位员工的工作效率,将其展示给公司高层,为高层决策提供一定依据。【关键词】SVN;资产配置;配置能力全套设计加扣 3012250582AbstractWith the rapid development of high technology, the scale of Guodian Nanjing Automation Co., Ltd. continues to expand, update equipment research and development speed faster and faster, rely on manpower to recording these changes has been unable to meet the current size of the company, for these large-scale devices, each device can not record the installed environment and evaluation of these environments. Second, executives hope to be able to master each employees productivity and the contribution of the project, due to excessive sector participation, leading to staff involved in the project greatly increased mobility, this time for staff productivity and contribution to judge too difficult, therefore a need for a standard to measure the efficiency and the contribution of each employee.The topic for the problem encountered Guodian Nanjing Automation Co., Ltd., the development of the EVM-SVN system. The system is divided into three parts, to solve these problems. The system is completed by the team, the paper is mainly responsible for system background, the main features are as follows:(1) design and implement asset allocation function modules, provide a visual interface for the operating staff to record the updated software and hardware equipment.(2) the ability to design and implement the configuration management module provides a visual interface for the operating environment to record and judge each device.(3) design and implement SVN log analysis module, through the SVN log extraction and analysis to quantify the productivity of each employee, which was presented to company executives, provide a basis for high-level decision-making.【Keywords】svn,asset allocation,ability of configuration3目 录1绪论11.1课题的研究背景11.2课题的研究内容及意义11.3课题主要工作11.4本文组织结构22相关技术22.1Subversion22.1.1Subversion 介绍22.1.2Subversion 特性22.1.3Subversion 整体架构32.2Mybatis32.2.1MyBatis介绍32.2.2MyBatis的工作流程42.3XML解析器43系统架构53.1目的53.2总体设计53.2.1整体系统架构53.3功能模块设计63.3.1资产功能模块分析63.3.2配置能力功能模块分析73.3.3SVN功能模块分析73.4数据库设计73.4.1数据库整体模型抽象73.4.2表结构设计83.4.3表说明94详细设计144.1SVN模块整体架构144.2系统运行原理154.3命名空间组织结构154.4系统主要类图164.4.1Revision类164.4.2SvnFile类174.4.3MainService类184.5相关代码实现204.5.1数据逻辑层实现204.5.2数据持久层实现234.6前台界面展示235总结245.1系统存在的不足245.2开发系统时遇到的问题255.3收获25参考文献26致谢2721 绪论1.1 课题的研究背景公司生产一个产品(Product),中间需要经历很多的过程(Process),以及不断的投入资产(Asset),最终才能转化为一个产品。其过程就是Asset-Process-Product。从Asset到Product中间,企业需要了解投入了多少资产,以及这些资产被谁使用和维护,使用者和维护者的效率如何,以及最终投入的资产产生了多少产品,这些是公司最为关心的地方。随着高科技的不断发展,Process过程越来越大,管理难度也随之增加了不少,很难再使用人力的方式去管理,因此需要一个系统来解放人力,维护Process。国电南京自动化股份有限公司遇到上述问题,随着公司规模的不断扩展,公司研发一种产品,投入了大量的资产,而这些资产来自不同部门,导致了资产的多样化,国电南京自动化股份有限公司需要记录这些资产。其次对于公司高层,希望能够掌握员工在产品研发中的效率和贡献度。为了解决国电南京自动化股份有限公司遇到的问题,本系统应运而生。1.2 课题的研究内容及意义本课题的研究按照软件开发的一般步骤,包括需求分析,概要设计,系统总体要求及数据库的实现,详细设计,编程实现,软件测试等步骤,采用Spring,MyBatis进行开发,主要设计实现了资产,配置能力两模块的数据库表以及从SVN Repository获取数据进行数据分析的功能。本系统能够有效的帮助公司领导管理查看软硬件资产当前状态,各个设备的配置完成度以及通过SVN模块,可从不同维度量化每位公司职员的工作效率及其对项目的贡献度,为公司人事领导做决策提供依据,更加有利于公司的发展。1.3 课题主要工作本课题主要研究EVM-SVN系统,该系统提供了资产配置,配置能力和SVN三个模块。资产配置和配置能力给用户提供了可视化的操作,用户通过浏览器即可完成对一系列资产的配置相关工作,解放人力。SVN模块给公司高层提供了多维度的量化员工工作效率的方法,例如从时间维度上,SVN模块可以让公司高层看到每位员工每天的工作效率;从个人维度上,SVN模块可以让公司高层看到某个员工某天,某周或者某个月的工作效率。为公司高层决策提供依据。在全面分析过国电南京自动化股份有限公司对这方面的需求后,本课题基于FineReport,SqlServer设计出了一套高可用的,高扩展性的EVM-SVN系统。1.4 本文组织结构本文组织结构如下:第一章 绪论部分。主要介绍了项目的研究背景,研究内容,研究意义和本文主要研究工作。第二章 相关技术部分。主要介绍了项目研发中主要使用的技术,包括Subversion,MyBatis和XML的相关知识。第三章 系统架构部分。主要分析了项目整体需求,对项目进行功能木块划分,对各个子模块的功能实现和数据库表的建立第四章 详细设计部分。主要介绍了各个模块的实现细节及其相关功能的代码实现。第五章 总结部分。总结了项目从开始到结束过程中遇到的一些问题,如何解决,以及在这段时间中的收获。2 相关技术2.1 Subversion2.1.1 Subversion 介绍Subversion1是一个开源免费的版本控制软件,Subversion的版本库可以通过网络来访问,团队成员可以Checkout一份到本地来,这是可以修改同一文件,而且不必担心出错,如果出错只需要撤销该操作即可,这样就可以促进团队协作能力,提高开发速度。2.1.2 Subversion 特性Subversion的特性有很多,在此只列举一些。1) 原子化提交:对于某次修改,要么全部成功,要不全部失败,防止出现部分被修改的情况;2) 丰富的协议类型:Subversion支持http协议和svn协议,方便用户选择。3) 分支和标签:subversion的分支和标签采用了一种类似硬链接的方式,所以对于各种大小型项目,打分支和标签的速度都会很快。4) 可修改性:Subversion是开源软件,允许用户对其源码修改,方便定制。2.1.3 Subversion 整体架构Subversion的整体架构如下:图2-1 subversion整体架构图从图中来源看出Subversion支持Command Line和GUI,方便用户选择。在底层存储上可以选择不同的文件系统。用户可以将Subversion部署在各个文件系统上。同时Subversion支持Trigger操作。在用户做了特定操作时,就会触发对应的Action,方便用户扩展。2.2 Mybatis2.2.1 MyBatis介绍MyBatis2是一种持久层框架,通过XML和注解将基本数据元素和POJO与SQL绑定到一起,而不是数据库中表。这样MyBatis就允许用户去控制SQL来获取数据库所有的功能(视图,存储过程或者数据库的某种特性)。MyBatis结构图如下:图2-1 MyBatis结构图MyBatis主要分为三层:1) 基础层:主要负责数据库的连接,事务的处理,缓存的处理等等;2) 处理层:主要负责SQL的解析,执行和SQL结果的映射;3) API层:用户用过调用API来完成所需功能。2.2.2 MyBatis的工作流程1) 加载配置文件:配置文件来源可以是XML或者注解,会将SQL语句加载为MappedStatement存储在内存中;2) 触发请求:用户调用API,触发对底层方法的调用,对下层发送处理请求;3) 处理请求:根据SQL的ID查找到MappedStatement,接着会解析MappedStatement,获得SQL以及参数,紧接着就会获取对数据库的连接,执行SQL语句,释放资源,最终将结果全部返回。2.3 XML解析器在当前最流行两种XML解析器,分别是DOM和SAX,下面对这两种技术做了比较,根据两者的优缺点得出最好的技术方案。DOM实现了W3C 的标准,而且有多种编程语言支持这种解析方式,DOM解析简单,容易上手。原理:DOM的处理方式是将整个XML文件作为类似树结构的方式读入内存中以便操作及解析,所以支持应用程序对 XML文件的内容和结构进行修改。缺点:由于DOM在处理开始时需要将整个XML文件读入到内存中去进行分析,所以在解析大量XML文件时会遇到类似于内存泄露以及程序崩溃的风险。适用范围:小型XML文件、全解析或者大部分解析 XML文件、需要修改 XML文件内容。SAX从根本上解决了 DOM 在解析 XML 文档时产生的占用大量资源的问题。原理:SAX是通过类似流解析的技术,通过读去整个 XML 文档树,并通过事件处理器来响应程序员对于 XML 数据解析的需求。优点:SAX不需要读取整个XML文件到内存中,所以能够节省很多的内存资源。缺点:首先SAX的API接口过于复杂,其次由于SAX是类似流解析的方式,因此不支持应用程序对XML文件进行修改。适用范围:大型XML文件解析、只获取XML内容,不对XML内容进行修改。对于EVM-SVN系统来说,首先只获取XML的内容,并不对XML文件内容进行修改,其次第一次生成Repository历史记录XML文件的可能较大,占用内存过多,因此基于这两点我们选择SAX作为我们的XML解析器。3 系统架构3.1 目的系统描述首先会介绍EVM的整体架构,以及本论文研究的EVM-SVN系统所处于EVM系统中的位置。接着会详细分拆EVM-SVN系统,介绍其所有的功能模块以及数据库表的对应实现。3.2 总体设计3.2.1 整体系统架构整个EVM系统包含三个子系统,分别是EVM-Human(人力资源管理系统),EVM-KPI(员工绩效考核系统),EVM-SVN(版本管理系统)。总体结构图如3-1所示:图3-1 EVM系统总体结构图EVM-KPI模块的可视化部分是基于FineReport,用户在前台输入参数,传递到后台调用相关计算公式,生成的结果再传输到前台展示。清晰明了。EVM-Human模块的可视化部分同样是基于FineReport,该子系统包含了员工信息填报和基本情况分析。信息填报包括基本信息的填报和权限控制,不同的员工具有不同的权限级别。本论文研究的是EVM的第三部分EVM-SVN。该子系统主要包括了资产功能模块,配置能力功能模块,SVN功能模块。这三个模块将在下节做详细分析。3.3 功能模块设计3.3.1 资产功能模块分析对于资产功能模块,整体上又可以拆分为三个子模块:设备变更记录,固定资产配置,软件资产配置。设备变更记录需要对于每台设备都有一个资产编号,对每台设备的更改均要记录其修改的时间,修改的原因,操作人编号,设备所在位置,变更金额,修改设备的数量以及修改摘要。固定资产配置需要对于固定资产,均要记录资产编号,所属业务单位的编号,设备型号,对应IP,设备的物理地址,应用说明,部署说明,恢复演练方式,灾备方式,设备的维护人,操作系统的版本号,设备购买的日期,使用的年限以及修改人的编号。软件资产配置需要对于软件资产,均要记录资产编号,所属业务单位的编号,软件名称,对应IP,物理地址,应用说明,部署说明,软件的维护人,软件的版本号,软件购买的日期,使用的年限,技术协议或者购买合同,修改时间,修改次数以及修改人的编号。3.3.2 配置能力功能模块分析对于配置能力模块,需要记录业务单位名称,硬件环境得分,软件环境得分,网络环境得分,配置环境维护得分,编译平台,开发工具的名称,编译环境适应度,权限等级,配置日志执行完成度,项目资料纳入配置库完成度,项目资料纳入配置库效率,项目资料纳入配置库条力度,配置库备份以及数据库异地备份信息。3.3.3 SVN功能模块分析对于SVN模块,需要记录每个文件的所有历史记录,代码的行数,修改人,时间以及对应的操作;需要记录每位员工的提交记录,所修改的文件,所提交的代码行数以及对应的修改时间;需要记录每次版本的所拥有的所有文件,所有的提交者,该次版本的总代码行数,以及上一版本所拥有的代码行数;还需要记录每个仓库所有的历史文件及其变更记录。3.4 数据库设计3.4.1 数据库整体模型抽象在数据库3整体模型中,最底层的是svn日志,这是非结构化的原始数据,通过分析非结构化原始数据,将有用的信息存储到上一层数据库表层,这些表来保存这些结构化数据,通过对这些表建立有用的视图层,来给前台查询。层次清晰,易于理解。如下图所示:图3-2 数据库整体模型抽象图3.4.2 表结构设计1) 资产功能模块根据上节中资产功能模块分析得到,资产功能模块需要三张表,设备变更记录表(svn_changerecord),固定资产配置表(svn-fixedassets),软件资产配置表(svn_softwareassets)。下面是三张表的设计图:图3-3 资产模块表设计图2) 配置能力功能模块根据上节中配置能力功能模块分析得到,配置能力功能模块需要一张表,配置能力表(svn-configuration)。下面是这张表的设计图:图3-4 配置能力模块表设计图3) SVN功能模块根据上节中SVN功能模块分析得到,SVN功能模块需要六张表,作者表(svn-author),子公司表(svn-company-ip),文件表(文件表),仓库表(svn-repo),版本文件表(svn-rev-files),版本表(svn-revision)。下面是这六张表的设计图:图3-5 SVN模块设计图3.4.3 表说明根据上面所有表的设计图,得出以下表结构:表3-1 数据库表列表名称代码表空间描述文件信息svn-filesvn-file记录某次文件的版本号,文件名,操作等等repository信息svn-reposvn-repo记录repository信息作者信息svn-authorsvn-author记录某次提交的作者版本信息svn-revisionsvn-revision记录版本信息文件版本信息svn-rev-filessvn-rev-files记录某次版本所拥有的文件信息资产信息svn-fixedassetssvn-fixedassets记录设备资产信息子公司IP信息svn-company-ipsvn-company-ip记录子公司对应的IP地址设备修改信息svn-changerecordsvn-changerecord记录设备更改时间及资产编号等等信息设备配置信息svn-configurationsvn-configuration记录设备配置时间等等信息软件资产信息svn-softwareassetssvn-softwareassets记录软件资产信息表3-2 svn-changerecord字段说明表名称代码数据类型是否主键是否非空缺省值描述变更记录idchangeIdint否否0变更记录id变更日期timeDATETIME是是null变更记录时间变更原因reasonVARCHAR(255)否否null变更原因业务单位unitcodeVARCHAR(255)否否null业务单位编号职位positionVARCHAR(255)否否null职位数量amountint否否null变更数量变更金额moneyfloat否否0.0变更金额摘要summaryVARCHAR(255)否否null变更摘要备注remarkVARCHAR(255)否否null变更备注资产编号assetnumberVARCHAR(255)否否null资产编号日期dateVARCHAR(10)否否null变更时间表3-3 svn-fixedassets字段说明表名称代码数据类型是否主键是否非空缺省值描述资产编号assetnumberVARCHAR(255)是是0资产唯一编号unitcodeVARCHAR(255)否否null型号modelVARCHAR(255)否否null资产型号ipIPVARCHAR(255)否否nullip地址mac地址macVARCHAR(255)否否nullmac地址说明specificationVARCHAR(255)否否null说明应用部署deploymentVARCHAR(255)否否null应用部署恢复演练restorerehearsalVARCHAR(255)否否null恢复演练灾备方式disasterrecoveryVARCHAR(255)否否null灾备方式维护人maintainerVARCHAR(255)否否null维护人操作系统osversionVARCHAR(255)否否null操作系统版本号购买时间buytimeDATETIME否否null购买设备的时间使用年限useageint否否0设备使用年限表3-4 svn-softwareassets字段说明表名称代码数据类型是否主键是否非空缺省值描述唯一编号idint是是0唯一编号资产编号swassetidVARCHAR(255)是是null资产编号业务单位unitcodeVARCHAR(255)否否null业务单位编号名称nameVARCHAR(255)否否null名称mac地址macVARCHAR(255)否否nullmac地址应用说明specificationVARCHAR(255)否否null应用说明应用部署deploymentVARCHAR(255)否否null应用部署维护人maintainerVARCHAR(255)否否null维护人版本versionVARCHAR(255)否否null版本号购买时间buytimeVARCHAR(255)否否null购买时间文件名filenameVARCHAR(255)否否null文件名软件价格softwarepricrVARCHAR(255)否否null软件价格表3-5 svn-configuration字段说明表名称代码数据类型是否主键是否非空缺省值描述业务单位编号unitcodeVARCHAR(255)是是0业务单位编号配置环境维护confEnvntBuildfloat否否0.0配置环境维护得分编译环境适应度compEnvntConValfloat否否0.0编译环境适应度权限等级confPersonAuthorityfloat否否0.0权限等级日志等级confLogexefloat否否0.0日志等级纳入配置库完整度intorepositoryfloat否否0.0纳入配置库完整度配置库备份repositoryBackupfloat否否0.0配置库备份数据库异地备份dbremoteBackupfloat否否0.0数据库异地备份时间timeVARCHAR(255)是是null时间表3-6 svn-file字段说明表名称代码数据类型是否主键是否非空缺省值描述版本号revisionIdint是是0文件拥有一个版本号文件名filenameVARCHAR (255)是是null文件名称操作actionVARCHAR (1)是是null文件对应的操作repository idrepoIdint是是0文件所属的repository是否是文件isFileint否否0文件or文件夹文件类型typeVARCHAR (255)否否null文件的类型代码行codeLineint否否0文件包含代码行数添加的代码行addedLineint否否0文件该次添加的代码行数删除的代码行deletedLineint否否0文件该次删除的代码行数上次代码行数lastCodeLineint否否0文件上次版本号拥有的代码行数表3-7 svn-rev-files字段说明表名称代码数据类型是否主键是否非空缺省值描述repository idrepoIdint是是0repository 唯一编号版本号revisionIdint是是0对应的版本号文件名filenameVARCHAR(255)是是null文件名文件版本file_revint是是0文件对应的版本文件类型file_typeVARCHAR(255)否否null文件类型repository 名称repo_nameVARCHAR(255)否否nullrepository名称表3-8 svn-revision字段说明表名称代码数据类型是否主键是否非空缺省值描述版本号revisionIdint是是0版本号提交信息msgVARCHAR(1024)否否null提交信息时间dateDATETIME否否null提交时间作者idauthorIdint否否0作者id号总代码行totalLinesint否否0总代码行repository idrepoIdint是是0repository id编号4 详细设计4.1 SVN模块整体架构详细设计部分将主要说明EVM-SVN的实现的流程和实现的方式。资产模块和配置能力模块只需要设计表结构,无需其他实现,所以在这部分不做详细解释。整个SVN模块基于国内报表软件FineReport开发而成。对于FineReport只需定义数据集,就能在前台展示。不用随着需求变化,去修改源码。下面是系统基于FineReport的整体架构图:图4-1 SVN模块整体架构图4.2 系统运行原理本系统使用Java 多线程45进行编码。主线程主要负责监视配置文件是否发生改变。当配置文件发生改变时,主线程从新读取配置文件中的repository,重新读取读取完配置文件,将和内存中的repository进行对比,如果有repository已经不在刚刚读取的repository中时,主线程根据repository名称获取对应的子线程并发出kill指令,将其杀掉。如果有新的repository,主线程将根据其名称创建一个同名的子线程负责对该repository进行监视。监视的过程:首先将新进来的repository的Log到出到本地,之后将由另外的线程读取并解析该日志6,解析完之后将得到数据存入到SQL Sserver中。之后系统并不会对该repository的每一步操作都会进行一次计算,而是每过一段时间(时间可自定义)系统才会去进行计算。计算过程和上面大致一样,先进行log导出工作,导出的文件以一定的格式命名而且不删除,以备中间计算错误,可以直接读取日志,无需重新进行导出日志的工作。4.3 命名空间组织结构系统命名空间组织结构图如下:表4-1 命名空间组织结构图类名说明SvnUtil工具类LookaheadReader文件处理工具类MainService主要逻辑类SvnLogParaseHandlerXML解析类SvnException异常类com.sac.evm.svn.entity实体类所在的包4.4 系统主要类图4.4.1 Revision类Revision类代表svn一次提交的所有信息图4-2 Reision类图Attributes属性:表4-2 Revision属性表Attributes属性Visibility可见性Name 属性名称Type 类型Brief descriptions 说明(对属性的简短描述)privaterevisionint版本号privatecommentString提交信息privatedateDate时间privatefilesListSvnFile集合privatetotalCodeLinelong总代码行privateauthorIdint作者编号privatethisRevFilesListSvnFile集合原理解析:Repository是用于封装svn中一次提交的所有的信息的实体类。可以通过get() 或者set()方法获取或设置对象中的数据4.4.2 SvnFile类SvnFile类代表svn中对文件进行所有操作的信息图4-3 SvnFile类图Attributes属性:表4-3 SvnFile属性表Attributes属性Visibility可见性Name 属性名称Type 类型Brief descriptions 说明(对属性的简短描述)privateactionAction操作privateaddedLinesint增加的代码行privatedeletedLinesint删除的代码行privatefileNameString文件名privateisFileboolean是否是文件privaterepoIdint所属的repository编号privaterevisionint版本号privatetotalLineint该次提交的所有代码行privatelastCodeLinesint上次版本所有的代码行privaterepoNameStringrepository名称privatetypeString类型原理解析:SvnFile是用于封装svn中对文件进行操作的实体类。可以通过get() 或者set()方法获取或设置对象中的数据4.4.3 MainService类MainService主要负责对svn记录进行解析及运算获取svn相关信息。图4-4 MainService类图 Attributes属性:表4-4 MainService属性表Attributes属性Visibility可见性Name 属性名称Type 类型Brief descriptions 说明(对属性的简短描述)privateLOGGERLogger日志privateauthorDaoIAuthorDao数据操作privatefileDaoISvnFileDao数据操作privaterevisionDaoIRevisionDao数据操作privaterepositoryDaoIRepositoryDao数据操作privatechannelFileChannel文件通道privatelockFileLock文件锁privateurlStringurl路径privatepathString路径privatexmlPathStringxml输出路径privateauthorPathstring作者文件路径原理解析:MainService主要负责读取xml文件进行数据解析,并对解析出的数据进行计算,并将计算出来的结果传递到下一层。4.5 相关代码实现4.5.1 数据逻辑层实现数据逻辑层采用的Java多线程编程7,其中涉及两个线程类:Main和SvnInfo。Main线程类9主要负责动态的增加和删除Repository。在程序的运行过程,用户可能需要增加Repository或者删除无用的Repository。程序在一直运行,不能终止,一旦终止肯定会影响其他Repository的运行,这种情况下就需要做到动态的增加和删除Repository。采用的实现原理是,采用个线程定时去监控一个配置文件,如果配置文件发生改变,则重新加载该配置文件,比较两者之间的差异,判断出是增加还是删除,不同的操作触发不同的动作。下面是主要的实现代码:表4-5 查找增加的Repositoryprivate String findAdded(String pre, String cur) List curs = null;if (cur = null | cur.equals() return null;curs = Arrays.asList(cur.split(,);for (String tmp : curs) if (!pres.contains(tmp) added.add(tmp);return (String) added.toArray();表4-6 增加对应的操作private void starts(String checkoutPaths) for (String tmp : checkoutPaths) SvnInfo svnInfo = new SvnInfo(tmp);threads.put(tmp, svnInfo);svnInfo.start();表4-7 Main方法主要功能public void run() String checkoutPath = ;while (true) if (isFirstTime) checkoutPath = getProperties();String checkoutPaths = checkoutPath.split(,);starts(checkoutPaths);isFirstTime = false; else long changedSize = new File(propertyPath).length();if (changedSize != propertySize) String changedPath = getProperties();String added = findAdded(checkoutPath, changedPath);if (added != null)starts(added);if (checkoutPath != null) String deled = findDel(checkoutPath, changedPath);if (deled != null)kills(deled);propertySize = changedSize;checkoutPath = changedPath;Thread.sleep(SvnLogConstant.WAITTIME);SvnInfo主要的功能是生成相应的配置文件(writeToFile)和计算代码行数(calculateCodeLine)生成配置文件的主要逻辑:首先向SVN服务器发送svn log -v xml,此时会将svn的日志输出到控制台上,程序再从控制台读取输出内容,最后将读取到的内容输出到文件中。其对应的实现方法如下表:表4-8 生成配置文件LookaheadReader lookaheadReader = new LookaheadReader(logReader);OutputStreamWriter out =null;out = new OutputStreamWriter(new FileOutputStream(xmlPath),UTF-8);while (lookaheadReader.hasNextLine() String current = lookaheadReader.nextLine();out.write(current+n);计算代码行数的主要逻辑:首先向服务器发送svn diff请求,此时以加号开头的为增加的代码行,以减号开头的为删除的行,将两者分别进行统计病返回给上层调用者。其对应的实现方法如下表:表4-9 计算代码行数private long pareseCommandOut(long totalnumber, SvnFile svnFile, int kindex,String command) throws IOException Reader reader = SvnUtil.exectueCommand(command, null);LookaheadReader din = new LookaheadReader(reader);while (din.hasNextLine() String current = din.nextLine();if (current.contains(SvnLogConstant.BINARY) return totalnumber;if (current.indexOf(+) = 0) if (current.length() 2) if (current.charAt(1) = + & current.charAt(2) = +) else svnFile.setAddedLines();totalnumber+; else if (current.indexOf(-) = 0) if (current.length() 2) if (current.charAt(1) = - & current.charAt(2) = -) else svnFile.setDeletedLines();return totalnumber;4.5.2 数据持久层实现数据持久层采用的的MyBatis框架,在相关技术中已经介
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 园艺主题酒店创新创业项目商业计划书
- 农产品期货交易咨询创新创业项目商业计划书
- 动物皮毛艺术品制作创新创业项目商业计划书
- 农产鲜品乐创新创业项目商业计划书
- 现场急救知识培训包扎课件
- 2025年教育行业数字化教材开发与多语言支持策略研究
- 2025年新能源汽车废旧电池回收利用产业链技术创新与产业竞争力研究报告
- 2025年城市轨道交通智慧运维系统在智慧城市建设中的关键作用报告
- 河南省三门峡市陕州区2022-2023学年大象版五年级上学期科学期中考试试题(含答案)
- 2026届云南省永德县第一中学化学高一第一学期期末学业质量监测模拟试题含解析
- 动物防疫检疫试题(附答案)
- 沙石码头经营方案(3篇)
- 2025年粉笔辅警考试题库
- 2025个人房屋租赁合同范本下载
- 水声传感器技术研究与应用
- 能源环保管理办法
- 锂电行业仓储管理办法
- 2025年新修订治安管理处罚法课件
- caac理论考试题库及答案
- 《校园安全指导》职业院校安全教育全套教学课件
- 电气安全基础知识安全培训
评论
0/150
提交评论