Class DataStoreManager

java.lang.Object
com.ultikits.ultitools.manager.DataStoreManager

@Internal public class DataStoreManager extends Object
Data store manager.

数据存储管理器

  • Field Details

  • Constructor Details

    • DataStoreManager

      public DataStoreManager()
  • Method Details

    • register

      public static void register(DataStore dataStore)
      Register data store.
      注册数据存储
      Parameters:
      dataStore - Data store
      数据存储
    • unregister

      public static void unregister(DataStore dataStore)
      Unregister data store.
      注销数据存储
      Parameters:
      dataStore - Data store
      数据存储
    • close

      public static void close()
      Unregister all data stores.
      注销所有数据存储
    • getDatastore

      public static DataStore getDatastore(String type)
      Get data store. If the data store does not exist, it will return the default Json store.
      获取数据存储。如果数据存储不存在,则返回默认的Json存储。
      Parameters:
      type - Data store type
      数据存储类型
      Returns:
      Data store
      数据存储
    • reportBackendSelection

      public static void reportBackendSelection(Logger logger, String configured, boolean mysqlEnabled, boolean mysqlAvailable, String actual)
      Report at SEVERE level that the data store actually in use is not the configured one.
      实际使用的数据存储与配置不一致时,把「配置要的是什么、实际用的是什么、为什么」写进日志。

      降级本身是静默的:getDatastore(String) 找不到目标类型就回退到 json,服务器照常 启动,运维者看到的现象是「服务器起来了但玩家数据全没了」。启动横幅里那条 INFO 级的 「数据存储方式:json」不解决问题——它只报实际值,不会提配置里写的是别的东西。见 issue #183。

      配置与实际一致时(含没配 datasource.type 的默认情况)不产生任何日志。

      Parameters:
      logger - Logger to write to
      写入的日志器
      configured - Configured datasource.type, may be null
      配置的 datasource.type,可为 null
      mysqlEnabled - Whether mysql.enable is true
      mysql.enable 是否为 true
      mysqlAvailable - Whether the MySQL data source was actually created
      MySQL 数据源是否真的建起来了
      actual - Store type actually in use
      实际使用的存储类型
    • localize

      private static String localize(String text)
      走 i18n,但不让它把诊断本身弄崩。这条路径只在已经出问题的时候才跑, 拿不到语言字典时用原文,比抛 NPE 强。