Class DataManager<K,T extends KingdomsObject<K>>

java.lang.Object
org.kingdoms.data.DataManager<K,T>
Direct Known Subclasses:
KingdomManager, KingdomPlayerManager, LandManager, MessageTransferAgent, NationManager

public abstract class DataManager<K,T extends KingdomsObject<K>> extends Object
  • Field Details

    • SMART

      public static final boolean SMART
    • INTERVAL

      protected static final long INTERVAL
    • cache

      protected final PeekableMap<K,T extends KingdomsObject<K>> cache
    • doesntExist

      protected final Set<K> doesntExist
      Improves performance mostly for land data checkups. This set should not be iterated.
    • database

      protected KingdomsDatabase<K,T extends KingdomsObject<K>> database
  • Constructor Details

  • Method Details

    • delete

      public void delete(@NonNull K identifier)
    • getDisplayName

      public String getDisplayName()
    • clear

      public void clear()
    • getDatabase

      public KingdomsDatabase<K,T> getDatabase()
    • deleteAllData

      public void deleteAllData()
    • setSavingState

      @Internal public void setSavingState(boolean savingState)
      Signals this data manager that it should not save any data when saveAll(boolean) with true argument is called.
    • copyCacheTo

      public void copyCacheTo(DataManager<K,T> dataManager)
      This method is for internal purposes only.
    • emptyCache

      public void emptyCache()
      This method is for internal purposes only.
    • loadAllData

      @Internal public int loadAllData(boolean checkIfLoaded)
    • load

      @Internal public List<T> load(Iterable<K> keys, List<T> loaded)
    • autoSave

      protected void autoSave(@NonNull Kingdoms plugin)
    • saveAll

      public void saveAll(boolean smart)
    • loadAndSave

      public void loadAndSave(@NonNull K key, @NonNull T data)
    • getDataIfLoaded

      public T getDataIfLoaded(K key)
    • isLoaded

      public boolean isLoaded(K key)
    • onLoad

      protected void onLoad(T value)
      Can't override load(KingdomsObject) because this is also used inside the cache loader which automatically loads it after retrieving the data.
    • unload

      protected void unload(@NonNull K key)
    • load

      public void load(@NonNull T data)
    • peek

      public @Nullable T peek(@NonNull K identifier)
    • exists

      public boolean exists(K identifier)
    • getData

      public @Nullable T getData(@NonNull K identifier)
    • size

      public int size()
    • getLoadedData

      public Collection<T> getLoadedData()
    • peekAllData

      public Collection<T> peekAllData()