Class PopSetting

java.lang.Object
org.aoju.bus.setting.magic.AbstractSetting
org.aoju.bus.setting.magic.PopSetting
All Implemented Interfaces:
Serializable, Map<String,String>, org.aoju.bus.core.getter.BasicType<String>, org.aoju.bus.core.getter.OptBasicType<String>, org.aoju.bus.core.getter.OptNullString<String>, org.aoju.bus.core.getter.OptNullType<String>

public class PopSetting extends AbstractSetting implements Map<String,String>
设置工具类 用于支持设置(配置)文件 用于替换Properties类,提供功能更加强大的配置文件,同时对Properties文件向下兼容
  1、支持变量,默认变量命名为 ${变量名},变量只能识别读入行的变量,例如第6行的变量在第三行无法读取
  2、支持分组,分组为中括号括起来的内容,中括号以下的行都为此分组的内容,无分组相当于空字符分组,若某个key是name,加上分组后的键相当于group.name
  3、注释以#开头,但是空行和不带“=”的行也会被跳过,但是建议加#
  4、store方法不会保存注释内容,慎重使用
 
Since:
Java 17+
Author:
Kimi Liu
See Also:
  • Field Details

    • charset

      protected Charset charset
      本设置对象的字符集
    • isUseVariable

      protected boolean isUseVariable
      是否使用变量
    • resource

      protected org.aoju.bus.core.io.resource.Resource resource
      设定文件的资源
  • Constructor Details

    • PopSetting

      public PopSetting()
      空构造
    • PopSetting

      public PopSetting(String path)
      构造
      Parameters:
      path - 相对路径或绝对路径
    • PopSetting

      public PopSetting(String path, boolean isUseVariable)
      构造
      Parameters:
      path - 相对路径或绝对路径
      isUseVariable - 是否使用变量
    • PopSetting

      public PopSetting(String path, Charset charset, boolean isUseVariable)
      构造,使用相对于Class文件根目录的相对路径
      Parameters:
      path - 相对路径或绝对路径
      charset - 字符集
      isUseVariable - 是否使用变量
    • PopSetting

      public PopSetting(File configFile, Charset charset, boolean isUseVariable)
      构造
      Parameters:
      configFile - 配置文件对象
      charset - 字符集
      isUseVariable - 是否使用变量
    • PopSetting

      public PopSetting(String path, Class<?> clazz, Charset charset, boolean isUseVariable)
      构造,相对于classes读取文件
      Parameters:
      path - 相对ClassPath路径或绝对路径
      clazz - 基准类
      charset - 字符集
      isUseVariable - 是否使用变量
    • PopSetting

      public PopSetting(URL url, Charset charset, boolean isUseVariable)
      构造
      Parameters:
      url - 设定文件的URL
      charset - 字符集
      isUseVariable - 是否使用变量
  • Method Details

    • init

      public boolean init(org.aoju.bus.core.io.resource.Resource resource, Charset charset, boolean isUseVariable)
      初始化设定文件
      Parameters:
      resource - Resource
      charset - 字符集
      isUseVariable - 是否使用变量
      Returns:
      成功初始化与否
    • load

      public boolean load()
      重新加载配置文件
      Returns:
      是否加载成功
    • autoLoad

      public void autoLoad(boolean autoReload)
      在配置文件变更时自动加载
      Parameters:
      autoReload - 是否自动加载
    • autoLoad

      public void autoLoad(boolean autoReload, Consumer<Boolean> callback)
      在配置文件变更时自动加载
      Parameters:
      callback - 加载完成回调
      autoReload - 是否自动加载
    • getSettingUrl

      public URL getSettingUrl()
      获得设定文件的URL
      Returns:
      获得设定文件的路径
    • getSettingPath

      public String getSettingPath()
      Returns:
      获得设定文件的路径
    • size

      public int size()
      键值总数
      Specified by:
      size in interface Map<String,String>
      Returns:
      键值总数
    • getByGroup

      public String getByGroup(String key, String group)
      Description copied from class: AbstractSetting
      获得指定分组的键对应值
      Specified by:
      getByGroup in class AbstractSetting
      Parameters:
      key - 键
      group - 分组
      Returns:
    • getAndRemove

      public Object getAndRemove(String... keys)
      获取并删除键值对,当指定键对应值非空时,返回并删除这个值,后边的键对应的值不再查找
      Parameters:
      keys - 键列表,常用于别名
      Returns:
    • getAndRemoveStr

      public String getAndRemoveStr(String... keys)
      获取并删除键值对,当指定键对应值非空时,返回并删除这个值,后边的键对应的值不再查找
      Parameters:
      keys - 键列表,常用于别名
      Returns:
      字符串值
    • getMap

      public Map<String,String> getMap(String group)
      获得指定分组的所有键值对,此方法获取的是原始键值对,获取的键值对可以被修改
      Parameters:
      group - 分组
      Returns:
      map
    • getSetting

      public PopSetting getSetting(String group)
      获得group对应的子Setting
      Parameters:
      group - 分组
      Returns:
      PopSetting
    • getProperties

      public Properties getProperties(String group)
      获得group对应的子Properties
      Parameters:
      group - 分组
      Returns:
      Properties对象
    • getProps

      public Properties getProps(String group)
      获得group对应的子Props
      Parameters:
      group - 分组
      Returns:
      Props对象
    • store

      public void store()
      持久化当前设置,会覆盖掉之前的设置 持久化不会保留之前的分组,注意如果配置文件在jar内部或者在exe中,此方法会报错。
    • store

      public void store(String absolutePath)
      持久化当前设置,会覆盖掉之前的设置 持久化不会保留之前的分组
      Parameters:
      absolutePath - 设置文件的绝对路径
    • store

      public void store(File file)
      持久化当前设置,会覆盖掉之前的设置 持久化不会保留之前的分组
      Parameters:
      file - 设置文件
    • toProperties

      public Properties toProperties()
      转换为Properties对象,原分组变为前缀
      Returns:
      Properties对象
    • getGroupMap

      public GroupMap getGroupMap()
      获取GroupedMap
      Returns:
      GroupedMap
    • getGroups

      public List<String> getGroups()
      获取所有分组
      Returns:
      获得所有分组名
    • setVarRegex

      public void setVarRegex(String regex)
      设置变量的正则 正则只能有一个group表示变量本身,剩余为字符 例如 \$\{(name)\}表示${name}变量名为name的一个变量表示
      Parameters:
      regex - 正则
    • isEmpty

      public boolean isEmpty(String group)
      某个分组对应的键值对是否为空
      Parameters:
      group - 分组
      Returns:
      是否为空
    • containsKey

      public boolean containsKey(String group, String key)
      指定分组中是否包含指定key
      Parameters:
      group - 分组
      key - 键
      Returns:
      是否包含key
    • containsValue

      public boolean containsValue(String group, String value)
      指定分组中是否包含指定值
      Parameters:
      group - 分组
      value - 值
      Returns:
      是否包含值
    • get

      public String get(String group, String key)
      获取分组对应的值,如果分组不存在或者值不存在则返回null
      Parameters:
      group - 分组
      key - 键
      Returns:
      值, 如果分组不存在或者值不存在则返回null
    • put

      public String put(String group, String key, String value)
      将键值对加入到对应分组中
      Parameters:
      group - 分组
      key - 键
      value - 值
      Returns:
      此key之前存在的值, 如果没有返回null
    • remove

      public String remove(String group, Object key)
      从指定分组中删除指定值
      Parameters:
      group - 分组
      key - 键
      Returns:
      被删除的值, 如果值不存在, 返回null
    • putAll

      public PopSetting putAll(String group, Map<? extends String,? extends String> m)
      加入多个键值对到某个分组下
      Parameters:
      group - 分组
      m - 键值对
      Returns:
      this
    • clear

      public PopSetting clear(String group)
      清除指定分组下的所有键值对
      Parameters:
      group - 分组
      Returns:
      this
    • keySet

      public Set<String> keySet(String group)
      指定分组所有键的Set
      Parameters:
      group - 分组
      Returns:
      键Set
    • values

      public Collection<String> values(String group)
      指定分组下所有值
      Parameters:
      group - 分组
      Returns:
    • entrySet

      public Set<Map.Entry<String,String>> entrySet(String group)
      指定分组下所有键值对
      Parameters:
      group - 分组
      Returns:
      键值对
    • set

      public PopSetting set(String key, String value)
      设置值
      Parameters:
      key - 键
      value - 值
      Returns:
      this
    • isEmpty

      public boolean isEmpty()
      Specified by:
      isEmpty in interface Map<String,String>
    • containsKey

      public boolean containsKey(Object key)
      默认分组(空分组)中是否包含指定key对应的值
      Specified by:
      containsKey in interface Map<String,String>
      Parameters:
      key - 键
      Returns:
      默认分组中是否包含指定key对应的值
    • containsValue

      public boolean containsValue(Object value)
      默认分组(空分组)中是否包含指定值
      Specified by:
      containsValue in interface Map<String,String>
      Parameters:
      value - 值
      Returns:
      默认分组中是否包含指定值
    • get

      public String get(Object key)
      获取默认分组(空分组)中指定key对应的值
      Specified by:
      get in interface Map<String,String>
      Parameters:
      key - 键
      Returns:
      默认分组(空分组)中指定key对应的值
    • put

      public String put(String key, String value)
      将指定键值对加入到默认分组(空分组)中
      Specified by:
      put in interface Map<String,String>
      Parameters:
      key - 键
      value - 值
      Returns:
      加入的值
    • remove

      public String remove(Object key)
      移除默认分组(空分组)中指定值
      Specified by:
      remove in interface Map<String,String>
      Parameters:
      key - 键
      Returns:
      移除的值
    • putAll

      public void putAll(Map<? extends String,? extends String> m)
      将键值对Map加入默认分组(空分组)中
      Specified by:
      putAll in interface Map<String,String>
      Parameters:
      m - Map
    • clear

      public void clear()
      清空默认分组(空分组)中的所有键值对
      Specified by:
      clear in interface Map<String,String>
    • keySet

      public Set<String> keySet()
      获取默认分组(空分组)中的所有键列表
      Specified by:
      keySet in interface Map<String,String>
      Returns:
      默认分组(空分组)中的所有键列表
    • values

      public Collection<String> values()
      获取默认分组(空分组)中的所有值列表
      Specified by:
      values in interface Map<String,String>
      Returns:
      默认分组(空分组)中的所有值列表
    • entrySet

      public Set<Map.Entry<String,String>> entrySet()
      获取默认分组(空分组)中的所有键值对列表
      Specified by:
      entrySet in interface Map<String,String>
      Returns:
      默认分组(空分组)中的所有键值对列表
    • hashCode

      public int hashCode()
      Specified by:
      hashCode in interface Map<String,String>
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object obj)
      Specified by:
      equals in interface Map<String,String>
      Overrides:
      equals in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object