package com.example.myapp;



import android.content.Context;
import android.util.Log;
import android.widget.Toast;

import com.chaquo.python.PyObject;
import com.chaquo.python.Python;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class DocxHelper {
    private static final String TAG = "DocxHelper";
    public static File convertJsonToDocx(Context context, String jsonAssetName, String outputFileName) {
        // 1. 从assets读取JSON数据
        String jsonData = readJsonFromAssets(context, jsonAssetName);

        if (jsonData == null) {
            Toast.makeText(context, "Failed to read JSON from assets",Toast.LENGTH_SHORT).show();
            return null;
        }

        // 2. 准备输出文件路径
        File outputFile = new File(context.getExternalFilesDir(null), outputFileName);
        String outputPath = outputFile.getAbsolutePath();

        // 3. 调用Python处理
        try {
            Python py = Python.getInstance();
            PyObject module = py.getModule("test");

            // 调用Python函数
            module.callAttr("json_to_docx", jsonData, outputPath);

            Toast.makeText(context, "DOCX file generated at:"+outputPath, Toast.LENGTH_SHORT).show();

        } catch (Exception e) {
            Log.e(TAG, "Python processing failed", e);
        }
        finally {
            return outputFile;
        }

    }
    private static String readJsonFromAssets(Context context, String filename) {
        try {
            // 1. 打开assets中的文件输入流
            InputStream is = context.getAssets().open(filename);


            // 2. 创建缓冲读取器
            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
            // 3. 使用StringBuilder高效拼接字符串
            StringBuilder sb = new StringBuilder();
            String line;
            // 4. 逐行读取文件内容
            while ((line = reader.readLine()) != null) {
                sb.append(line);
            }
            // 5. 关闭资源
            reader.close();
            // 6. 返回完整的JSON字符串
            return sb.toString();
        } catch (IOException e) {
            Toast.makeText(context, "Error reading JSON file"+e.getMessage(), Toast.LENGTH_SHORT).show();
            return null;
        }
    }
}