package com.axis.innovators.box.tools;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * ArgsParser 类用于解析命令行参数，并返回包含合法文件信息的列表。
 * @author tzdwindows 7
 */
public class ArgsParser {

    /**
     * 判断路径是否合法（存在且是文件）
     *
     * @param path 文件路径
     * @return 是否合法
     */
    private static boolean isValidPath(String path) {
        File file = new File(path);
        return file.exists() && file.isFile();
    }

    /**
     * 获取文件的后缀名
     *
     * @param path 文件路径
     * @return 文件后缀名（如 ".txt"）
     */
    private static String getFileExtension(String path) {
        int lastDotIndex = path.lastIndexOf('.');
        if (lastDotIndex == -1) {
            return ""; // 没有后缀名
        }
        return path.substring(lastDotIndex);
    }

    /**
     * 解析 args 参数并保存合法的文件路径
     *
     * @param args main 方法的参数
     * @return 包含合法文件信息的列表，每个元素是一个 Map，包含 "extension" 和 "path"
     */
    public static List<Map<String, String>> parseArgs(String[] args) {
        List<Map<String, String>> validFiles = new ArrayList<>();

        for (String arg : args) {
            if (isValidPath(arg)) {
                String extension = getFileExtension(arg);

                Map<String, String> fileInfo = new HashMap<>();
                fileInfo.put("extension", extension);
                fileInfo.put("path", arg);

                validFiles.add(fileInfo);
            }
        }

        return validFiles;
    }

    public static void main(String[] args) {
        // 模拟 main 方法的 args 参数
        String[] testArgs = {
                "C:\\Program Files\\test.txt",
                "C:\\invalid_file.exe",
                "D:\\Documents\\report.pdf",
                "not_a_path",
                "C:\\Windows\\system32" ,
                "C:\\Users\\Administrator\\MCreatorWorkspaces\\AxisInnovatorsBox\\build.gradle"
        };

        // 解析 args 参数
        List<Map<String, String>> validFiles = parseArgs(testArgs);

        // 输出结果
        System.out.println("Valid files:");
        for (Map<String, String> fileInfo : validFiles) {
            System.out.println("Extension: " + fileInfo.get("extension") + ", Path: " + fileInfo.get("path"));
        }
    }
}
