Class Ini

  • All Implemented Interfaces:
    Map<String,​Ini.Section>

    public class Ini
    extends Object
    implements Map<String,​Ini.Section>
    A class representing the INI text configuration format.

    An Ini instance is a map of Sections, keyed by section name. Each Section is itself a map of String name/value pairs. Name/value pairs are guaranteed to be unique within each Section only - not across the entire Ini instance.

    Since:
    1.0
    • Constructor Detail

      • Ini

        public Ini()
        Creates a new empty Ini instance.
      • Ini

        public Ini​(Ini defaults)
        Creates a new Ini instance with the specified defaults.
        Parameters:
        defaults - the default sections and/or key-value pairs to copy into the new instance.
    • Method Detail

      • isEmpty

        public boolean isEmpty()
        Returns true if no sections have been configured, or if there are sections, but the sections themselves are all empty, false otherwise.
        Specified by:
        isEmpty in interface Map<String,​Ini.Section>
        Returns:
        true if no sections have been configured, or if there are sections, but the sections themselves are all empty, false otherwise.
      • getSectionNames

        public Set<StringgetSectionNames()
        Returns the names of all sections managed by this Ini instance or an empty collection if there are no sections.
        Returns:
        the names of all sections managed by this Ini instance or an empty collection if there are no sections.
      • getSections

        public Collection<Ini.SectiongetSections()
        Returns the sections managed by this Ini instance or an empty collection if there are no sections.
        Returns:
        the sections managed by this Ini instance or an empty collection if there are no sections.
      • getSection

        public Ini.Section getSection​(String sectionName)
        Returns the Ini.Section with the given name or null if no section with that name exists.
        Parameters:
        sectionName - the name of the section to retrieve.
        Returns:
        the Ini.Section with the given name or null if no section with that name exists.
      • addSection

        public Ini.Section addSection​(String sectionName)
        Ensures a section with the specified name exists, adding a new one if it does not yet exist.
        Parameters:
        sectionName - the name of the section to ensure existence
        Returns:
        the section created if it did not yet exist, or the existing Section that already existed.
      • removeSection

        public Ini.Section removeSection​(String sectionName)
        Removes the section with the specified name and returns it, or null if the section did not exist.
        Parameters:
        sectionName - the name of the section to remove.
        Returns:
        the section with the specified name or null if the section did not exist.
      • setSectionProperty

        public void setSectionProperty​(String sectionName,
                                       String propertyName,
                                       String propertyValue)
        Sets a name/value pair for the section with the given sectionName. If the section does not yet exist, it will be created. If the sectionName is null or empty, the name/value pair will be placed in the default (unnamed, empty string) section.
        Parameters:
        sectionName - the name of the section to add the name/value pair
        propertyName - the name of the property to add
        propertyValue - the property value
      • getSectionProperty

        public String getSectionProperty​(String sectionName,
                                         String propertyName)
        Returns the value of the specified section property, or null if the section or property do not exist.
        Parameters:
        sectionName - the name of the section to retrieve to acquire the property value
        propertyName - the name of the section property for which to return the value
        Returns:
        the value of the specified section property, or null if the section or property do not exist.
      • getSectionProperty

        public String getSectionProperty​(String sectionName,
                                         String propertyName,
                                         String defaultValue)
        Returns the value of the specified section property, or the defaultValue if the section or property do not exist.
        Parameters:
        sectionName - the name of the section to add the name/value pair
        propertyName - the name of the property to add
        defaultValue - the default value to return if the section or property do not exist.
        Returns:
        the value of the specified section property, or the defaultValue if the section or property do not exist.
      • fromResourcePath

        public static Ini fromResourcePath​(String resourcePath)
                                    throws ConfigurationException
        Creates a new Ini instance loaded with the INI-formatted data in the resource at the given path. The resource path may be any value interpretable by the ResourceUtils.getInputStreamForPath method.
        Parameters:
        resourcePath - the resource location of the INI data to load when creating the Ini instance.
        Returns:
        a new Ini instance loaded with the INI-formatted data in the resource at the given path.
        Throws:
        ConfigurationException - if the path cannot be loaded into an Ini instance.
      • load

        public void load​(String iniConfig)
                  throws ConfigurationException
        Loads the specified raw INI-formatted text into this instance.
        Parameters:
        iniConfig - the raw INI-formatted text to load into this instance.
        Throws:
        ConfigurationException - if the text cannot be loaded
      • load

        public void load​(InputStream is)
                  throws ConfigurationException
        Loads the INI-formatted text backed by the given InputStream into this instance. This implementation will close the input stream after it has finished loading. It is expected that the stream's contents are UTF-8 encoded.
        Parameters:
        is - the InputStream from which to read the INI-formatted text
        Throws:
        ConfigurationException - if unable
      • load

        public void load​(Reader reader)
        Loads the INI-formatted text backed by the given Reader into this instance. This implementation will close the reader after it has finished loading.
        Parameters:
        reader - the Reader from which to read the INI-formatted text
      • merge

        public void merge​(Map<String,​Ini.Section> m)
        Merges the contents of m's Ini.Section objects into self. This differs from putAll(Map), in that each section is merged with the existing one. For example the following two ini blocks are merged and the result is the third

        Initial:

         [section1]
         key1 = value1
        
         [section2]
         key2 = value2
          
        To be merged:
         [section1]
         foo = bar
        
         [section2]
         key2 = new value
          
        Result:
         [section1]
         key1 = value1
         foo = bar
        
         [section2]
         key2 = new value
          

        Parameters:
        m - map to be merged
        Since:
        1.4
      • load

        public void load​(Scanner scanner)
        Loads the INI-formatted text backed by the given Scanner. This implementation will close the scanner after it has finished loading.
        Parameters:
        scanner - the Scanner from which to read the INI-formatted text