Class ConfigureSource<SECTION extends ConfigureSection,ORIGINAL,SELF extends ConfigureSource<SECTION,ORIGINAL,SELF>>
- java.lang.Object
-
- cc.carm.lib.configuration.source.section.ConfigureSource<SECTION,ORIGINAL,SELF>
-
- Type Parameters:
SECTION
- The type of the root section.ORIGINAL
- The original configuration object.SELF
- The type of the source itself, for further implement support.
- All Implemented Interfaces:
ConfigureSection
public abstract class ConfigureSource<SECTION extends ConfigureSection,ORIGINAL,SELF extends ConfigureSource<SECTION,ORIGINAL,SELF>> extends java.lang.Object implements ConfigureSection
ConfigureSource represents the source of configuration, which can be a file, a database, or any other source.- See Also:
ConfigureSection
-
-
Field Summary
Fields Modifier and Type Field Description protected @NotNull ConfigurationHolder<? extends SELF>
holder
protected long
lastUpdateMillis
-
Constructor Summary
Constructors Modifier Constructor Description protected
ConfigureSource(@NotNull ConfigurationHolder<? extends SELF> holder, long lastUpdateMillis)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description @NotNull @UnmodifiableView java.util.Map<java.lang.String,java.lang.Object>
asMap()
Get this section as a map.@NotNull ConfigureSection
createSection(@NotNull java.lang.String path, @NotNull java.util.Map<?,?> data)
Creates a newConfigureSection
with specified values.@Nullable java.lang.Object
get(@NotNull java.lang.String path)
Get the origin value of the path.@NotNull @UnmodifiableView java.util.Set<java.lang.String>
getKeys(boolean deep)
Gets a set containing all keys in this section.long
getLastUpdateMillis()
@NotNull java.util.Map<java.lang.String,java.lang.Object>
getValues(boolean deep)
Gets a set containing all values in this section.@NotNull ConfigurationHolder<? extends SELF>
holder()
boolean
isExpired(long parsedTime)
protected abstract void
onReload()
Reload the configuration.abstract ORIGINAL
original()
@Nullable ConfigureSection
parent()
Source also represents the root section, so it has no parent@NotNull java.lang.String
path()
Get the current section's path fromConfigureSection.parent()
of this section.char
pathSeparator()
Get the path separator for the section.void
reload()
void
remove(@NotNull java.lang.String path)
Removes the value at the given path.abstract void
save()
Save the whole configuration.abstract SECTION
section()
protected abstract SELF
self()
void
set(@NotNull java.lang.String path, @Nullable java.lang.Object value)
Sets the value at the given path.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface cc.carm.lib.configuration.source.section.ConfigureSection
childPath, computeSection, computeSection, computeSection, computeSection, contains, containsValue, createSection, createSection, createSection, forEach, fullPath, get, get, get, get, getBoolean, getBoolean, getByte, getByte, getByteList, getChar, getChar, getCharList, getCollection, getDouble, getDouble, getDoubleList, getFloat, getFloat, getFloatList, getInt, getInt, getIntegerList, getList, getList, getLong, getLong, getLongList, getSection, getShort, getShort, getString, getString, getStringList, isBoolean, isByte, isChar, isDouble, isEmpty, isFloat, isInt, isList, isLong, isRoot, isSection, isShort, isString, isType, keys, size, stream, stream, stream, values
-
-
-
-
Field Detail
-
holder
@NotNull protected final @NotNull ConfigurationHolder<? extends SELF extends ConfigureSource<SECTION,ORIGINAL,SELF>> holder
-
lastUpdateMillis
protected long lastUpdateMillis
-
-
Constructor Detail
-
ConfigureSource
protected ConfigureSource(@NotNull @NotNull ConfigurationHolder<? extends SELF> holder, long lastUpdateMillis)
-
-
Method Detail
-
holder
@NotNull public @NotNull ConfigurationHolder<? extends SELF> holder()
-
reload
public void reload() throws java.lang.Exception
- Throws:
java.lang.Exception
-
self
@Contract(pure=true) @Internal @NotNull protected abstract SELF self()
-
original
@Contract(pure=true) @NotNull public abstract ORIGINAL original()
- Returns:
- The original configuration object.
-
section
@NotNull public abstract SECTION section()
- Returns:
- The root
ConfigureSection
, which represents the entire configuration.
-
save
public abstract void save() throws java.lang.Exception
Save the whole configuration.- Throws:
java.lang.Exception
- If any error occurs while saving.
-
onReload
@OverrideOnly protected abstract void onReload() throws java.lang.Exception
Reload the configuration.
This used for implementation, for external usage, usereload()
- Throws:
java.lang.Exception
- If any error occurs while reloading.
-
pathSeparator
public char pathSeparator()
Description copied from interface:ConfigureSection
Get the path separator for the section.- Specified by:
pathSeparator
in interfaceConfigureSection
- Returns:
- The path separator
-
getLastUpdateMillis
public long getLastUpdateMillis()
-
isExpired
public boolean isExpired(long parsedTime)
-
parent
@Contract(pure=true, value="->null") @Nullable public @Nullable ConfigureSection parent()
Source also represents the root section, so it has no parent- Specified by:
parent
in interfaceConfigureSection
- Returns:
- null
-
path
@NotNull public @NotNull java.lang.String path()
Description copied from interface:ConfigureSection
Get the current section's path fromConfigureSection.parent()
of this section.- Specified by:
path
in interfaceConfigureSection
- Returns:
- The current path of this section, if
ConfigureSection.isRoot()
, return empty string.
-
getValues
@NotNull public @NotNull java.util.Map<java.lang.String,java.lang.Object> getValues(boolean deep)
Description copied from interface:ConfigureSection
Gets a set containing all values in this section.If deep is set to true, then this will contain all the keys within any child
ConfigureSection
s (and their children paths).If deep is set to false, then this will contain only the keys of any direct children, and not their own children.
- Specified by:
getValues
in interfaceConfigureSection
- Parameters:
deep
- Whether to get a deep list.- Returns:
- Map of data values contained within this Section.
-
getKeys
@NotNull public @NotNull @UnmodifiableView java.util.Set<java.lang.String> getKeys(boolean deep)
Description copied from interface:ConfigureSection
Gets a set containing all keys in this section.If deep is set to true, then this will contain all the keys within any child
ConfigureSection
s (and their children paths).If deep is set to false, then this will contain only the keys of any direct children, and not their own children.
- Specified by:
getKeys
in interfaceConfigureSection
- Parameters:
deep
- Whether to get a deep list.- Returns:
- Set of keys contained within this Section.
-
asMap
@NotNull public @NotNull @UnmodifiableView java.util.Map<java.lang.String,java.lang.Object> asMap()
Description copied from interface:ConfigureSection
Get this section as a map.In this map, child
ConfigureSection
s will also be represented asMap
s.- Specified by:
asMap
in interfaceConfigureSection
- Returns:
- Map of data values contained within this Section.
-
createSection
@NotNull public @NotNull ConfigureSection createSection(@NotNull @NotNull java.lang.String path, @NotNull @NotNull java.util.Map<?,?> data)
Description copied from interface:ConfigureSection
Creates a newConfigureSection
with specified values.The
ConfigureSection.parent()
of the new section will be this section.This section will not be saved until
ConfigureSection.set(String, Object)
is called.If you want to create and use a section and set it to this section, use
ConfigureSection.computeSection(String)
.- Specified by:
createSection
in interfaceConfigureSection
data
- The data to be used to create section.- Returns:
- Newly created section
-
set
public void set(@NotNull @NotNull java.lang.String path, @Nullable @Nullable java.lang.Object value)
Description copied from interface:ConfigureSection
Sets the value at the given path.Null values will be kept, if you want to remove a value use
ConfigureSection.remove(String)
Path separator depends on holder'sStandardOptions.PATH_SEPARATOR
- Specified by:
set
in interfaceConfigureSection
- Parameters:
path
- The path to set the value at.value
- The value to set.
-
remove
public void remove(@NotNull @NotNull java.lang.String path)
Description copied from interface:ConfigureSection
Removes the value at the given path.Path separator depends on holder's
StandardOptions.PATH_SEPARATOR
- Specified by:
remove
in interfaceConfigureSection
- Parameters:
path
- The path to remove the value at.
-
get
@Nullable public @Nullable java.lang.Object get(@NotNull @NotNull java.lang.String path)
Description copied from interface:ConfigureSection
Get the origin value of the path.- Specified by:
get
in interfaceConfigureSection
- Parameters:
path
- The path to get the value from.- Returns:
- The value at the path, or null if not found.
-
-