package com.ycwl.basic.puzzle.exception;

/**
 * 重复图片异常
 * 当所有图片元素使用相同URL时抛出此异常
 *
 * @author Claude
 * @since 2025-01-21
 */
public class DuplicateImageException extends PuzzleBizException {

    private static final String DEFAULT_MESSAGE_TEMPLATE = "检测到所有图片元素使用相同URL,拒绝生成: %s (元素数量: %d)";

    private final String duplicateImageUrl;
    private final int elementCount;

    /**
     * 构造函数
     *
     * @param duplicateImageUrl 重复的图片URL
     * @param elementCount      使用相同URL的元素数量
     */
    public DuplicateImageException(String duplicateImageUrl, int elementCount) {
        super(String.format(DEFAULT_MESSAGE_TEMPLATE, duplicateImageUrl, elementCount));
        this.duplicateImageUrl = duplicateImageUrl;
        this.elementCount = elementCount;
    }

    /**
     * 构造函数(带自定义消息)
     *
     * @param message           自定义错误消息
     * @param duplicateImageUrl 重复的图片URL
     * @param elementCount      元素数量
     */
    public DuplicateImageException(String message, String duplicateImageUrl, int elementCount) {
        super(message);
        this.duplicateImageUrl = duplicateImageUrl;
        this.elementCount = elementCount;
    }

    public String getDuplicateImageUrl() {
        return duplicateImageUrl;
    }

    public int getElementCount() {
        return elementCount;
    }
}
