package com.yaoyicloud.render;

import java.io.IOException;
import java.nio.file.Paths;
import java.util.Map;
import java.util.UUID;

import com.deepoove.poi.config.Configure;
import com.deepoove.poi.config.ConfigureBuilder;
import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
import com.google.protobuf.util.JsonFormat;
import com.yaoyicloud.message.FxyProtos.AntiBribery;

/**
 * AntiBribery渲染器
 *
 */
public final class AntiBriberyRender extends AbstractRender {

    public AntiBriberyRender(String cwd) {
        super(cwd);
    }

    /**
     * Docx 渲染
     *
     * @param info 数据
     * @param templateFileContent 模板内容
     * @return 本地文件目录
     * @throws IOException
     */
    public String renderDocx(AntiBribery info, Map<String, Object> addtionalMap, byte[] templateFileContent) throws IOException {
        // 不需要定制展示逻辑的时候，使用protobuf的转json方法
        String jsonStr = JsonFormat.printer().print(info);

        // 注： 报告模板的模板变量按照json序列化的结果命名
        // 注： 目前的实现假设：一个session对应一个cwd目录
        ConfigureBuilder builder = Configure.builder();
        builder.bind("questionnaireItems", new LoopRowTableRenderPolicy());
        this.docxResultPath = this.renderDocx(jsonStr, addtionalMap, templateFileContent, builder,
            Paths.get(cwd, UUID.randomUUID().toString() + ".docx").toString());
        return this.docxResultPath;
    }

}
