package org.dromara.knowledge.data;

import org.dromara.common.core.exception.ServiceException;
import org.springframework.stereotype.Component;

import java.nio.charset.StandardCharsets;
import java.util.StringJoiner;

/**
 * CSV 文档解析器
 * 将 CSV 文件转换为文本格式，保留表格结构信息
 * 使用制表符分隔，便于后续处理
 *
 * @author pengles
 */
@Component
public class CsvDocumentParser implements DocumentParser {
    @Override
    public String parse(byte[] bytes, String filename) {
        try {
            String csv = new String(bytes, StandardCharsets.UTF_8);

            // CSV 文件通常使用逗号分隔，但可能包含引号和换行符
            // 简单处理：将逗号替换为制表符，使其更易读
            // 注意：这种方法适用于简单的 CSV，复杂 CSV（包含引号内的逗号）需要专门的 CSV 解析库
            String[] lines = csv.split("\\r?\\n");
            StringJoiner result = new StringJoiner("\n");
            
            for (String line : lines) {
                if (line.trim().isEmpty()) {
                    continue;
                }
                // 简单替换：将逗号替换为制表符
                // 更复杂的 CSV 解析可以使用 Apache Commons CSV 等库
                String processedLine = line.replace(",", "\t");
                result.add(processedLine);
            }

            return result.toString();
        } catch (Exception e) {
            throw new ServiceException("CSV解析失败: " + e.getMessage());
        }
    }
}
