Class FlatFileStorage

java.lang.Object
ch.njol.skript.variables.VariablesStorage
ch.njol.skript.variables.FlatFileStorage
All Implemented Interfaces:
Closeable

public class FlatFileStorage extends VariablesStorage
A variable storage that stores its content in a comma-separated value file (CSV file).
  • Field Details

    • FILE_CHARSET

      public static final Charset FILE_CHARSET
      The Charset used in the CSV storage file.
  • Method Details

    • load_i

      protected boolean load_i(SectionNode sectionNode)
      Loads the variables in the CSV file.

      Doesn't lock the connection, as required by Variables.variableLoaded(String, Object, VariablesStorage).

      Specified by:
      load_i in class VariablesStorage
      Returns:
      Whether the database could be loaded successfully, i.e. whether the config is correct and all variables could be loaded.
    • allLoaded

      protected void allLoaded()
      Description copied from class: VariablesStorage
      Called after all storages have been loaded, and variables have been redistributed if settings have changed. This should commit the first transaction (which is not empty if variables have been moved from another database to this one or vice versa), and start repeating transactions if applicable.
      Specified by:
      allLoaded in class VariablesStorage
    • requiresFile

      protected boolean requiresFile()
      Description copied from class: VariablesStorage
      Checks if this storage requires a file for storing its data.
      Specified by:
      requiresFile in class VariablesStorage
      Returns:
      if this storage needs a file.
    • getFile

      protected File getFile(String fileName)
      Description copied from class: VariablesStorage
      Gets the file needed for this variable storage from the given file name.

      Will only be called if VariablesStorage.requiresFile() is true.

      Specified by:
      getFile in class VariablesStorage
      Parameters:
      fileName - the given file name.
      Returns:
      the File object.
    • disconnect

      protected final void disconnect()
      Description copied from class: VariablesStorage
      Disconnects from the database.
      Specified by:
      disconnect in class VariablesStorage
    • connect

      protected final boolean connect()
      Description copied from class: VariablesStorage
      (Re)connects to the database.

      Not called on the first connect: do this in VariablesStorage.load_i(SectionNode). An error should be printed by this method prior to returning false.

      Specified by:
      connect in class VariablesStorage
      Returns:
      whether the connection could be re-established.
    • close

      public void close()
      Description copied from class: VariablesStorage
      Called when Skript gets disabled.

      The default implementation will wait for all variables to be saved before setting VariablesStorage.closed to true and stopping the write thread.

      Therefore, make sure to call super.close() if this method is overridden.

      Specified by:
      close in interface Closeable
      Overrides:
      close in class VariablesStorage
    • save

      protected boolean save(String name, @Nullable String type, @org.eclipse.jdt.annotation.Nullable byte[] value)
      Description copied from class: VariablesStorage
      Saves a variable.

      This is called from the main thread while variables are transferred between databases, and from the VariablesStorage.writeThread afterwards.

      type and value are both null iff this call is to delete the variable.

      Specified by:
      save in class VariablesStorage
      Parameters:
      name - the name of the variable.
      type - the type of the variable.
      value - the serialized value of the variable.
      Returns:
      Whether the variable was saved.
    • saveVariables

      public final void saveVariables(boolean finalSave)
      Completely rewrites the CSV file.

      The finalSave argument is used to determine if the save and backup tasks should be cancelled, and if the storage should reconnect after saving.

      Parameters:
      finalSave - whether this is the last save in this session or not.