package com.sunyard.ssp.modules.sysconf.cipherunit.utils;

import com.sunyard.ssp.modules.sysconf.cipherunit.enums.ConfigEnum;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/**
 * ini文件更新工具类
 *
 */
public class IniFileUpdater {

    /**
     * 更新ini文件
     *
     * @param ip   IP地址
     * @param port 端口号
     */
    public static void updateIniFile(String ip, String port) {
        String filePath = ConfigEnum.CONFIG_FILE_PATH.getValue();
        String targetSection = ConfigEnum.TARGET_SECTION.getValue();
        try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
            StringBuilder content = new StringBuilder();
            String line;
            boolean sectionFound = false;

            while ((line = reader.readLine()) != null) {
                if (line.trim().startsWith("[" + targetSection + "]")) {
                    // 找到目标部分
                    sectionFound = true;
                    content.append(line).append(System.lineSeparator());

                    // 修改[DEV-0]部分的配置
                    content.append("IP=").append(ip).append(System.lineSeparator());
                    content.append("PORT=").append(port).append(System.lineSeparator());
                    // 添加回车符
                    content.append(System.lineSeparator());
                } else if (sectionFound && line.trim().startsWith("[")) {
                    // 目标部分已处理完毕，遇到下一个部分
                    sectionFound = false;
                    content.append(line).append(System.lineSeparator());
                } else if (!sectionFound) {
                    // 非目标部分
                    content.append(line).append(System.lineSeparator());
                }
            }

            // 将修改后的内容写回原始文件
            FileWriter writer = new FileWriter(filePath);
            writer.write(content.toString());
            writer.close();

            System.out.println("INI file updated successfully.");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}