package com.xmomen.module.resource.api;

import java.util.Map;

/**
 * DfsFile 类代表一个分布式文件系统（DFS）中的文件。
 * 该类封装了文件的数据、唯一标识以及元数据信息。
 */
public class DfsFile {

    /**
     * 存储文件的二进制数据。
     * 它包含了文件的实际内容，以字节数组的形式存在。
     */
    private byte[] data;

    /**
     * 文件的唯一标识。
     * 在 FastDFS 这种分布式文件系统中，此属性暂不使用。
     */
    private String key;

    /**
     * 文件的元数据信息。
     * 以键值对的形式存储与文件相关的额外信息，
     * 例如文件的创建时间、作者、文件类型等。
     */
    private Map<String, String> metadata;

    /**
     * 默认构造函数。
     * 用于创建一个空的 DfsFile 对象，各属性初始值为 null。
     */
    public DfsFile() {

    }

    /**
     * 带参数的构造函数，用于创建一个具有指定属性的 DfsFile 对象。
     *
     * @param key 文件的唯一标识，在 FastDFS 中暂不使用。
     * @param data 文件的二进制数据。
     * @param metadata 文件的元数据信息，以键值对形式存储。
     */
    public DfsFile(String key, byte[] data, Map<String, String> metadata) {
        this.key = key;
        this.data = data;
        this.metadata = metadata;
    }

    /**
     * 获取文件的二进制数据。
     *
     * @return 文件的二进制数据，以字节数组形式返回。
     */
    public byte[] getData() {
        return data;
    }

    /**
     * 设置文件的二进制数据。
     *
     * @param data 要设置的文件二进制数据。
     */
    public void setData(byte[] data) {
        this.data = data;
    }

    /**
     * 获取文件的唯一标识。
     *
     * @return 文件的唯一标识。
     */
    public String getKey() {
        return key;
    }

    /**
     * 设置文件的唯一标识。
     *
     * @param key 要设置的文件唯一标识。
     */
    public void setKey(String key) {
        this.key = key;
    }

    /**
     * 获取文件的元数据信息。
     *
     * @return 文件的元数据信息，以键值对形式返回。
     */
    public Map<String, String> getMetadata() {
        return metadata;
    }

    /**
     * 设置文件的元数据信息。
     *
     * @param metadata 要设置的文件元数据信息，以键值对形式传入。
     */
    public void setMetadata(Map<String, String> metadata) {
        this.metadata = metadata;
    }

}