| package com.dy.pipIrrParamSet.paramSet; | 
|   | 
| import com.dy.pipIrrParamSet.ServerProperties; | 
| import com.dy.pipIrrParamSet.console.Command; | 
| import com.dy.pipIrrParamSet.util.FileUtil; | 
| import org.springframework.context.annotation.Scope; | 
| import org.springframework.core.env.Environment; | 
| import org.springframework.stereotype.Component; | 
|   | 
| import java.nio.file.Path; | 
| import java.util.ArrayList; | 
| import java.util.HashMap; | 
| import java.util.List; | 
| import java.util.Map; | 
|   | 
| /** | 
|  * @Author: liurunyu | 
|  * @Date: 2025/5/29 13:43 | 
|  * @Description | 
|  */ | 
| @Component | 
| @Scope("prototype") | 
| public class ParamSetMw { | 
|   | 
|     protected void set(Environment env, String[] comIn, Command command){ | 
|         String paramNamePre = "mw.sv" + comIn[1] + "." + comIn[2] + "." ; | 
|         this.set(env, comIn, command, paramNamePre) ; | 
|     } | 
|   | 
|     private void set(Environment env, String[] comIn, Command command, String paramNamePre){ | 
|         Map<String, String> paramMap = null ; | 
|         try{ | 
|             paramMap = this.getConfigs(env, paramNamePre); | 
|         }catch (Exception e){ | 
|             command.out(e.getMessage()); | 
|             paramMap = null ; | 
|         } | 
|         if(paramMap != null){ | 
|             boolean flag = this.setApplicationCommonMwYml(comIn, command, paramMap); | 
|             if(flag){ | 
|                 flag = this.setConfigProperties(comIn, command, paramMap); | 
|             } | 
|             if(flag){ | 
|                 command.out("参数设置完成"); | 
|             } | 
|         } | 
|     } | 
|     private boolean setApplicationCommonMwYml(String[] comIn, Command command, Map<String, String> paramMap){ | 
|         String filePath = ServerProperties.WorkspaceRoot | 
|                 + ParamKey.AbstractPathOfMGlobal | 
|                 + ParamKey.AbstractPathOfResources | 
|                 + ParamKey.FileOfApplicationCommonMwYml ; | 
|         Path applicationCommonMwYmlPath = FileUtil.getFilePath(filePath) ; | 
|         if(applicationCommonMwYmlPath == null){ | 
|             command.out("未找到配置文件" + filePath); | 
|             return false ; | 
|         } | 
|         List<String> oldLines ; | 
|         try{ | 
|             oldLines = FileUtil.readFile(applicationCommonMwYmlPath); | 
|         }catch (Exception e){ | 
|             command.out("读取文件" + filePath + "发生异常:" + e.getMessage()); | 
|             return false ; | 
|         } | 
|         if(oldLines == null || oldLines.size() == 0){ | 
|             command.out("文件" + filePath + "是空文件"); | 
|             return false ; | 
|         }else{ | 
|             List<String> newLines = new ArrayList<>(); | 
|             String newLine = null ; | 
|             for(String line : oldLines){ | 
|                 newLine = line ; | 
|                 if(newLine != null && newLine.trim().startsWith("pipIrr_mw_webPort")){ | 
|                     newLine = "  pipIrr_mw_webPort: " + paramMap.get(ParamKey.WebPort) + " #通信中间件中应用,不能在web模块系统中应用" ; | 
|                 }else if(newLine != null && newLine.trim().startsWith("pipIrr_mw_actutorPort")){ | 
|                     newLine = "  pipIrr_mw_actutorPort: " + paramMap.get(ParamKey.ActutorPort) + " #通信中间件中应用,不能在web模块系统中应用" ; | 
|                 }else if(newLine != null && newLine.trim().startsWith("spring_datasource_url_dbname")){ | 
|                     newLine = "  spring_datasource_url_dbname: " + paramMap.get(ParamKey.DbName) + " #数据库名称" ; | 
|                 } | 
|                 newLines.add(newLine); | 
|             } | 
|             if(newLines.size() > 0){ | 
|                 try { | 
|                     FileUtil.writeFile(applicationCommonMwYmlPath, newLines); | 
|                 }catch (Exception e){ | 
|                     command.out("写入文件" + filePath + "发生异常:" + e.getMessage()); | 
|                     return false ; | 
|                 } | 
|             } | 
|         } | 
|         return true ; | 
|     } | 
|     private boolean setConfigProperties(String[] comIn, Command command, Map<String, String> paramMap){ | 
|         String filePath = ServerProperties.WorkspaceRoot | 
|                 + ParamKey.AbstractPathOfMw | 
|                 + ParamKey.AbstractPathOfResources | 
|                 + ParamKey.FileOfConfigProperties ; | 
|         Path configPropertiesPath = FileUtil.getFilePath(filePath) ; | 
|         if(configPropertiesPath == null){ | 
|             command.out("未找到配置文件" + filePath); | 
|             return false ; | 
|         } | 
|         List<String> oldLines = null ; | 
|         try{ | 
|             oldLines = FileUtil.readFile(configPropertiesPath); | 
|         }catch (Exception e){ | 
|             command.out("读取文件" + filePath + "发生异常:" + e.getMessage()); | 
|             return false ; | 
|         } | 
|         if(oldLines == null || oldLines.size() == 0){ | 
|             command.out("文件" + filePath + "是空文件"); | 
|             return false ; | 
|         }else{ | 
|             List<String> newLines = new ArrayList<>(); | 
|             String newLine = null ; | 
|             for(String line : oldLines){ | 
|                 newLine = line ; | 
|                 if(newLine != null && newLine.trim().startsWith("base.orgTag=")){ | 
|                     newLine = "base.orgTag=" + comIn[2] ; | 
|                 }else if(newLine != null && newLine.trim().startsWith("tcp.port=")){ | 
|                     newLine = "tcp.port=" + paramMap.get(ParamKey.TcpPort); | 
|                 }else if(newLine != null && newLine.trim().startsWith("base.upData.min.interval=")){ | 
|                     newLine = "base.upData.min.interval=" + paramMap.get(ParamKey.UpDataMinInterval); | 
|                 }else if(newLine != null && newLine.trim().startsWith("mqtt.enable=")){ | 
|                     newLine = "mqtt.enable=" + paramMap.get(ParamKey.MqttEnable); | 
|                 }else if(newLine != null && newLine.trim().startsWith("mqtt.ip=")){ | 
|                     newLine = "mqtt.ip=" + paramMap.get(ParamKey.mqttServerIp); | 
|                 }else if(newLine != null && newLine.trim().startsWith("mqtt.port=")){ | 
|                     newLine = "mqtt.port=" + paramMap.get(ParamKey.mqttServerPort); | 
|                 }else if(newLine != null && newLine.trim().startsWith("mqtt.protocolAndDeviceIds=")){ | 
|                     newLine = "mqtt.protocolAndDeviceIds=" + paramMap.get(ParamKey.mqttProtocolAndDeviceIds); | 
|                 }else if(newLine != null && newLine.trim().startsWith("mqtt.subTopicAndQos=")){ | 
|                     newLine = "mqtt.subTopicAndQos=" + paramMap.get(ParamKey.mqttSubTopicAndQos); | 
|                 }else if(newLine != null && newLine.trim().startsWith("mqtt.noSubThenOff=")){ | 
|                     newLine = "mqtt.noSubThenOff=" + paramMap.get(ParamKey.MqttNoSubThenOff); | 
|                 } | 
|                 newLines.add(newLine); | 
|             } | 
|             if(newLines.size() > 0){ | 
|                 try { | 
|                     FileUtil.writeFile(configPropertiesPath, newLines); | 
|                 }catch (Exception e){ | 
|                     command.out("写入文件" + filePath + "发生异常:" + e.getMessage()); | 
|                     return false ; | 
|                 } | 
|             } | 
|         } | 
|         return true ; | 
|     } | 
|   | 
|     private Map<String, String> getConfigs(Environment env, String paramNamePre) throws Exception{ | 
|         Map<String, String> map = new HashMap<>() ; | 
|         String key = ParamKey.OrgTag; | 
|         this.getConfig(env, map, paramNamePre + key, key); | 
|   | 
|         key = ParamKey.TcpPort; | 
|         this.getConfig(env, map, paramNamePre + key, key); | 
|   | 
|         key = ParamKey.UpDataMinInterval; | 
|         this.getConfig(env, map, paramNamePre + key, key); | 
|   | 
|         key = ParamKey.WebPort; | 
|         this.getConfig(env, map, paramNamePre + key, key); | 
|   | 
|         key = ParamKey.ActutorPort; | 
|         this.getConfig(env, map, paramNamePre + key, key); | 
|   | 
|         key = ParamKey.DbName; | 
|         this.getConfig(env, map, paramNamePre + key, key); | 
|   | 
|         key = ParamKey.MqttEnable; | 
|         this.getConfig(env, map, paramNamePre + key, key); | 
|   | 
|         key = ParamKey.MqttNoSubThenOff; | 
|         this.getConfig(env, map, paramNamePre + key, key); | 
|   | 
|         key = ParamKey.mqttProtocolAndDeviceIds; | 
|         this.getConfig(env, map, paramNamePre + key, key); | 
|   | 
|         key = ParamKey.mqttServerIp; | 
|         this.getConfig(env, map, paramNamePre + key, key); | 
|   | 
|         key = ParamKey.mqttServerPort; | 
|         this.getConfig(env, map, paramNamePre + key, key); | 
|   | 
|         key = ParamKey.mqttSubTopicAndQos; | 
|         this.getConfig(env, map, paramNamePre + key, key); | 
|   | 
|         return map ; | 
|     } | 
|     private void getConfig(Environment env, Map<String, String> map, String paramName, String key) throws Exception{ | 
|         String paramValue = env.getProperty(paramName); | 
|         if(paramValue == null){ | 
|             throw new Exception("参数设置器未配置" + paramName); | 
|         }else{ | 
|             map.put(key, paramValue) ; | 
|         } | 
|     } | 
|   | 
| } |