Package ch.njol.skript.variables
Class DatabaseStorage
java.lang.Object
ch.njol.skript.variables.VariablesStorage
ch.njol.skript.variables.DatabaseStorage
- All Implemented Interfaces:
Closeable
TODO create a metadata table to store some properties (e.g. Skript version, Yggdrasil version) -- but what if some variables cannot be converted? move them to a different table?
TODO create my own database connector or find a better one
-
Nested Class Summary
-
Field Summary
Modifier and TypeFieldDescriptionstatic int
static int
static int
Fields inherited from class ch.njol.skript.variables.VariablesStorage
backupTask, closed, connectionLock, databaseName, file
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
Called after all storages have been loaded, and variables have been redistributed if settings have changed.protected void
void
close()
Called when Skript gets disabled.protected boolean
connect()
(Re)connects to the database (not called on the first connect - do this inVariablesStorage.load_i(SectionNode)
).protected void
Disconnects from the database.protected File
@Nullable String
Retrieve the create query with the tableName in itprotected boolean
load_i(SectionNode n)
Doesn't lock the database for reading (it's not used anywhere else, and locking while loading will interfere with loaded variables being deleted byVariables.variableLoaded(String, Object, VariablesStorage)
).protected boolean
protected boolean
Saves a variable.void
setTableName(String tableName)
Methods inherited from class ch.njol.skript.variables.VariablesStorage
clearChangesQueue, getValue, getValue, load, startBackupTask
-
Field Details
-
MAX_VARIABLE_NAME_LENGTH
public static final int MAX_VARIABLE_NAME_LENGTH- See Also:
- Constant Field Values
-
MAX_CLASS_CODENAME_LENGTH
public static final int MAX_CLASS_CODENAME_LENGTH- See Also:
- Constant Field Values
-
MAX_VALUE_SIZE
public static final int MAX_VALUE_SIZE- See Also:
- Constant Field Values
-
-
Method Details
-
getTableName
-
setTableName
-
getFormattedCreateQuery
Retrieve the create query with the tableName in it- Returns:
- the create query with the tableName in it (%s -> tableName)
-
load_i
Doesn't lock the database for reading (it's not used anywhere else, and locking while loading will interfere with loaded variables being deleted byVariables.variableLoaded(String, Object, VariablesStorage)
).- Specified by:
load_i
in classVariablesStorage
- 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 classVariablesStorage
-
requiresFile
protected boolean requiresFile()- Specified by:
requiresFile
in classVariablesStorage
-
getFile
- Specified by:
getFile
in classVariablesStorage
-
connect
protected boolean connect()Description copied from class:VariablesStorage
(Re)connects to the database (not called on the first connect - do this inVariablesStorage.load_i(SectionNode)
).- Specified by:
connect
in classVariablesStorage
- Returns:
- Whether the connection could be re-established. An error should be printed by this method prior to returning false.
-
disconnect
protected void disconnect()Description copied from class:VariablesStorage
Disconnects from the database.- Specified by:
disconnect
in classVariablesStorage
-
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 theVariablesStorage.writeThread
afterwards.- Specified by:
save
in classVariablesStorage
- Returns:
- Whether the variable was saved
-
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 settingVariablesStorage.closed
to true and stopping the write thread, thus super.close() must be called if this method is overridden!- Specified by:
close
in interfaceCloseable
- Overrides:
close
in classVariablesStorage
-
checkDatabase
protected void checkDatabase()
-