|  |  |  | 
|---|
|  |  |  | Set<Class<?>> driverClasses = reflections.getTypesAnnotatedWith(AnnotationDriver.class); | 
|---|
|  |  |  | if (driverClasses != null && driverClasses.size() > 0) { | 
|---|
|  |  |  | String protocolName; | 
|---|
|  |  |  | short protocolVersion; | 
|---|
|  |  |  | String key ; | 
|---|
|  |  |  | int priority; | 
|---|
|  |  |  | int onLineDataMinLength; | 
|---|
|  |  |  | int headMinLength; | 
|---|
|  |  |  | 
|---|
|  |  |  | if (ann != null) { | 
|---|
|  |  |  | if (ann.enable()) { | 
|---|
|  |  |  | protocolName = ann.name(); | 
|---|
|  |  |  | if (!(protocolName.trim().equals(""))) { | 
|---|
|  |  |  | if (driverMap.containsKey(protocolName)) { | 
|---|
|  |  |  | throw new Exception("严重错误,协议驱动(名称)" + protocolName + "出现了重复注解!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | driverMap.put(protocolName, new AnnotationDriverVo(clazz)); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | protocolVersion = ann.version() ; | 
|---|
|  |  |  | if(protocolName == null || protocolName.trim().equals("")){ | 
|---|
|  |  |  | throw new Exception("严重错误,协议驱动名称注解值为空字符串"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(protocolVersion == -1){ | 
|---|
|  |  |  | throw new Exception("严重错误,协议驱动版本号未配置"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | key = protocolName + protocolVersion ; | 
|---|
|  |  |  | if (driverMap.containsKey(key)) { | 
|---|
|  |  |  | throw new Exception("严重错误,协议驱动(名称+版本号)" + key + "出现了重复注解!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | driverMap.put(key, new AnnotationDriverVo(clazz)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | throw new Exception("严重错误,上行数据完整性检查所配协议驱动注解值为空字符串"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | protocolVersion = ann.protocolVersion(); | 
|---|
|  |  |  | if (protocolVersion == -1) { | 
|---|
|  |  |  | throw new Exception("严重错误, 上行数据完整性检查所配协议版本号未配置"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | priority = ann.priority(); | 
|---|
|  |  |  | if (priority == 0) { | 
|---|
|  |  |  | throw new Exception("严重错误, 上行数据完整性检查所配优先级注解不能为0"); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | onLineDataMinLength = ann.onLineDataMinLength(); | 
|---|
|  |  |  | /*气象协议为0 | 
|---|
|  |  |  | if(onLineDataMinLength == 0){ | 
|---|
|  |  |  | throw new Exception("严重错误, 上行数据完整性检查所配上线数据最小长度注解不能为0") ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | /*气象协议为0 | 
|---|
|  |  |  | if(onLineDataMinLength == 0){ | 
|---|
|  |  |  | throw new Exception("严重错误, 上行数据完整性检查所配上线数据最小长度注解不能为0") ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | headMinLength = ann.headMinLength(); | 
|---|
|  |  |  | /*气象协议为0 | 
|---|
|  |  |  | if(headMinLength == 0){ | 
|---|
|  |  |  | throw new Exception("严重错误, 上行数据完整性检查所配上报数据的头部最小长度注解不能为0") ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | prefixedDataAvailableMap.put(protocolName, new AnnotationPrefixedDataAvailableVo(clazz, protocolName, priority, onLineDataMinLength, headMinLength, ProtocolConstant.errorMaxLength)); | 
|---|
|  |  |  | /*气象协议为0 | 
|---|
|  |  |  | if(headMinLength == 0){ | 
|---|
|  |  |  | throw new Exception("严重错误, 上行数据完整性检查所配上报数据的头部最小长度注解不能为0") ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | key = protocolName + protocolVersion ; | 
|---|
|  |  |  | prefixedDataAvailableMap.put(key, new AnnotationPrefixedDataAvailableVo(clazz, protocolName, protocolVersion, priority, onLineDataMinLength, headMinLength, ProtocolConstant.errorMaxLength)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | throw new Exception("严重错误,上线数据分析所配协议驱动注解值为空字符串"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | protocolVersion = ann.protocolVersion(); | 
|---|
|  |  |  | if (protocolVersion == -1) { | 
|---|
|  |  |  | throw new Exception("严重错误, 上线数据分析所配协议版本号未配置"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | priority = ann.priority(); | 
|---|
|  |  |  | if (priority == 0) { | 
|---|
|  |  |  | throw new Exception("严重错误, 上线数据分析所配优先级注解不能为0"); | 
|---|
|  |  |  | 
|---|
|  |  |  | throw new Exception("严重错误, 上线数据分析所配优先级注解(priority)数值" + priority + "重复"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | onLineMap.put(protocolName, new AnnotationOnLineVo(clazz, protocolName, priority)); | 
|---|
|  |  |  | key = protocolName + protocolVersion ; | 
|---|
|  |  |  | onLineMap.put(key, new AnnotationOnLineVo(clazz, protocolName, protocolVersion, priority)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | HashMap<String, AnnotationPrefixedDataAvailableVo> prefixedDataAvailableMap){ | 
|---|
|  |  |  | Collection<AnnotationPrefixedDataAvailableVo> col = prefixedDataAvailableMap.values(); | 
|---|
|  |  |  | for(AnnotationPrefixedDataAvailableVo vo : col){ | 
|---|
|  |  |  | if(!driverMap.containsKey(vo.protocolName)){ | 
|---|
|  |  |  | return "严重错误,上行数据完整性检查所配驱动名称(" + vo.protocolName + ")在协议驱动中未配置" ; | 
|---|
|  |  |  | if(!driverMap.containsKey(vo.protocolName + vo.protocolVersion)){ | 
|---|
|  |  |  | return "严重错误,上行数据完整性检查所配驱动名称(" + (vo.protocolName + vo.protocolVersion) + ")在协议驱动中未配置" ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | HashMap<String, AnnotationOnLineVo> onLineMap){ | 
|---|
|  |  |  | Collection<AnnotationOnLineVo> col = onLineMap.values(); | 
|---|
|  |  |  | for(AnnotationOnLineVo vo : col){ | 
|---|
|  |  |  | if(!driverMap.containsKey(vo.protocolName)){ | 
|---|
|  |  |  | return "严重错误,上线数据分析所配驱动名称(" + vo.protocolName + ")在协议驱动中未配置" ; | 
|---|
|  |  |  | if(!driverMap.containsKey(vo.protocolName + vo.protocolVersion)){ | 
|---|
|  |  |  | return "严重错误,上线数据分析所配驱动名称(" + (vo.protocolName + vo.protocolVersion) + ")在协议驱动中未配置" ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|