#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
批量修复Java文件中的Date类型为LocalDateTime
"""

import os
import re
from pathlib import Path

def fix_java_file(file_path: Path) -> bool:
    """修复单个Java文件的Date类型"""
    try:
        content = file_path.read_text(encoding='utf-8')
        original = content

        # 检查是否包含 import java.util.Date
        if 'import java.util.Date;' not in content:
            return False

        # 替换 import
        content = content.replace('import java.util.Date;', 'import java.time.LocalDateTime;')

        # 替换字段声明和参数类型
        # 匹配 private Date xxx; 或参数中的 Date
        content = re.sub(r'\bprivate Date (\w+);', r'private LocalDateTime \1;', content)
        content = re.sub(r'\bpublic Date get(\w+)', r'public LocalDateTime get\1', content)
        content = re.sub(r'\bpublic void set(\w+)\(Date ', r'public void set\1(LocalDateTime ', content)

        if content != original:
            file_path.write_text(content, encoding='utf-8')
            return True
        return False
    except Exception as e:
        print(f"  错误: {e}")
        return False

def main():
    base_path = Path('services')
    count = 0
    fixed = 0

    for java_file in base_path.rglob('*.java'):
        if 'target' in str(java_file):
            continue

        try:
            content = java_file.read_text(encoding='utf-8')
            if 'import java.util.Date;' in content:
                count += 1
                print(f"{count}. {java_file.relative_to(base_path)}")
                if fix_java_file(java_file):
                    fixed += 1
                    print(f"   ✅ 已修复")
        except Exception as e:
            print(f"   ❌ 错误: {e}")

    print(f"\n总计: {count} 个文件, 修复: {fixed} 个")

if __name__ == '__main__':
    main()
