Class MessageCache

java.lang.Object
de.murmelmeister.murmelapi.language.message.MessageCache
All Implemented Interfaces:
RefreshListener, AutoCloseable

public class MessageCache extends Object implements RefreshListener, AutoCloseable
MessageCache is a thread-safe cache for storing messages by their ID and tag. It allows for quick retrieval and management of messages based on their unique identifiers.
  • Field Details

    • LANGUAGE_KEY_PATTERN

      private static final Pattern LANGUAGE_KEY_PATTERN
    • TAG_KEY_PATTERN

      private static final Pattern TAG_KEY_PATTERN
    • database

      private final de.murmelmeister.library.database.Database database
    • tableName

      private final String tableName
    • cacheById

      private final com.github.benmanes.caffeine.cache.LoadingCache<Integer,Message> cacheById
    • cacheByTag

      private final com.github.benmanes.caffeine.cache.LoadingCache<MessageCache.TagKey,Message> cacheByTag
    • cacheByLanguage

      private final com.github.benmanes.caffeine.cache.LoadingCache<MessageCache.LanguageKey,List<Message>> cacheByLanguage
    • fetchLimit

      private final Long fetchLimit
  • Constructor Details

    • MessageCache

      public MessageCache(de.murmelmeister.library.database.Database database, String tableName, Long fetchLimit, long cacheCapacity, Duration refreshInterval)
  • Method Details

    • onRefresh

      public void onRefresh(RefreshEvent<?> event)
      Specified by:
      onRefresh in interface RefreshListener
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
    • refreshAll

      private void refreshAll()
    • refreshSingle

      private void refreshSingle(MessageCache.LanguageKey key)
    • refreshSingle

      private void refreshSingle(MessageCache.TagKey key)
    • refreshSingle

      private void refreshSingle(int id)
    • loadAllFromDatabase

      private List<Message> loadAllFromDatabase()
    • loadByLanguage

      private List<Message> loadByLanguage(int languageId)
    • loadByTag

      private Message loadByTag(MessageCache.TagKey key)
    • loadById

      private Message loadById(int id)
    • getById

      public Message getById(int id)
    • getByTag

      public Message getByTag(String tagId, int languageId)
    • getByLanguage

      public List<Message> getByLanguage(int languageId)
    • put

      public void put(Message message)
    • remove

      public void remove(int id)
    • removeByTag

      public void removeByTag(String tag, int languageId)
    • removeByLanguage

      public void removeByLanguage(int languageId)
    • clear

      public void clear()