/*
 * Copyright (c) 京北方信息技术股份有限公司 Corporation 2021 . All rights reserved.
 *
 */
package net.northking.cctp.common.cache;

import java.util.Map;

/**
 * 实体名称缓存
 *
 * @author : xiusong.xie
 * @version : 1.0
 */
public interface EntityNameCache
{
  /**
   * 翻译实体ID，返回名称
   *
   * @param catalog 种类
   * @param id      实体ID
   * @return 实体名称
   */
  default String translateById(EntityNameCatalog catalog, String id)
  {
    return translateById(catalog.name(), id);
  }

  /**
   * 加载某一类实体名称数据
   *
   * @param catalog 种类
   * @param dataMap 映射关系
   */
  default void put(EntityNameCatalog catalog, Map<String, String> dataMap)
  {
    put(catalog.name(), dataMap);
  }

  /**
   * 加载单个实体名称数据
   *
   * @param catalog 种类
   * @param id      实体ID
   * @param name    实体名称
   */
  default void put(EntityNameCatalog catalog, String id, String name)
  {
    put(catalog.name(), id, name);
  }

  /**
   * 翻译实体ID，返回名称
   *
   * @param catalogCode 种类代码
   * @param id          实体ID
   * @return 实体名称
   */
  String translateById(String catalogCode, String id);

  /**
   * 加载某一类实体名称数据
   *
   * @param catalogCode 种类代码
   * @param dataMap     映射关系
   */
  void put(String catalogCode, Map<String, String> dataMap);

  /**
   * 加载单个实体名称数据
   *
   * @param catalogCode 种类代码
   * @param id          实体ID
   * @param name        实体名称
   */
  void put(String catalogCode, String id, String name);
}
