MibAnalyser
介绍
MibAnalyser可以解析MIB文件,并转化为对应的实体,持久化到本地。MibAnalyser分为三个模块:解析模块、持久化模块、工具库模块。
解析模块
解析模块用于解析MIB文件的语法,并最终生成实体列表。
管理模块
由于对MIB文件解析时需要依赖到其他的MIB文件,该子模块用于读取其他MIB的节点数据。
该模块的接口是IMIBManager,系统实现类是MIBManager。
节点解析模块
节点解析模块会解析MIB文件的语法,把里面的节点提取出来并转化为对应的实体类型。当前生成的节点类型并不完整,需要通过节点连接模块加功后才能生成完整的节点信息。
该模块的接口是IMIBSyntaxAnalyzer,系统实现类MIBSyntaxAnalyzer。
节点连接模块
对半完成的节点列表进行关联操作,生成完整节点的节点列表。
该模块的接口是INodeLinker,系统实现类是NodeLinker。
持久化模块
持久化模块是mib文件与底层数据直接访问的模块,用于存储和读取OID节点。
数据访问组件
数据访问组件由多个数据访问接口构成,主要职责是与底层数据存储进行交互,读取持久化的数据并生成对应的实体。
本系统的数据访问模块主要包括两个接口:IMIBModuleDao, IMIBNodeDao。这两个接口定义了解析模块所需要用到的访问数据的方法。
IMIBModuleDao:判断指定MIB库是否存在。
IMIBNodeDao:根据指定MIB库获取其定义的节点集合。
本系统为两个数据访问接口提供了实现类MIBFileDao,该实现类主要把数据持久化到本地文件系统。
实体序列化组件
实体序列化组件是MIBFileDao使用到的组件之一,该组件把各种类型的节点实体序列化成json格式,以及从Json逆序列化成对应的节点,十分灵活。
实体转化器
实体转化器可以实现解析实体和其他实体之间的映射,通常使用者自行定义了用于持久化的实体,则可以通过转换器进行解析实体和自定义实体的互相转换。
该模块的接口是IConverter。系统实现了抽象类Converter,Converter实现了IConverter接口,并实现了一个默认转换方法:根据属性名进行转化,获取待转化对象相同属性名属性,并进行赋值操作。
自定义持久化实体
系统提供的默认持久化实体就是解析实体,且保存到本地本件夹。如果使用者希望存储到其他位置如数据库,则需要自定义持久化实体。
自定义持久化需要使用者重新定义三样东西:
自定义的数据访问组件:由于解析模块中需要对底层的数据进行访问,因此在自定义持久化时候,需要实现数据访问模块中的接口并组装成数据访问组件传入解析模块,确保解析模块的正常执行。
自定义实体:由于持久化本质是底层数据与实体的映射,因此自定义的持久化方式通常会有对应匹配的实体。如果默认的解析实体能够匹配上自定义的持久化方式,这里则可以不需要定义新的实体。
实体转化接口:假如使用者定义了自定义实体,则需要实现实体转化接口,实现对默认解析实体和自定义实体的映射。为了方便使用者的使用,接口自身实现了一个默认的转化方法:发现转化实体和待转化实体相同的属性名,并把转化实体该属性的值赋给待转化实体的属性中。
工具库模块
工具库提供了一些常用的方法,简化使用这使用的难度。
核心工具库:OID列表转化为树状结构的功能,在OID树中寻找指定OID节点。
格式化工具库:对OID树进行剪枝等操作,对文本字符串进行处理等方法。
展示工具库:提供了把OID树转化为zTree数据格式。
工具库处理的对象都是解析实体,自定义持久化实体的使用者需要先把持久化实体转化为解析实体再使用。
MibAnalyserDemo
一个展示MibAnalyser的demo。
环境
springboot + hibernate + MibAnalyser
MibAnalyser
使用了默认的解析框架和逻辑
自定义了持久化实体,存于数据库。并定义了相关的接口层和转化器。
前端
jquery + bootstrap + angularjs
使用了zTree用于展示树状结构。