Class ArrayParseResult

    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected ArrayParseResult​(java.lang.String[] data)
      Creates an array-based parse result.
      protected ArrayParseResult​(java.lang.String[] data, int baseIndex, ArrayParseResult parent)
      Creates an array-based parse result.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int getArraySize()
      If the actual element is an array, return the size.
      protected java.lang.String[] getData()
      Returns the data object.
      void getData​(de.iip_ecosphere.platform.support.function.IOConsumer<java.lang.String> ifPresent, java.lang.String name, int... indexes)
      Returns the value of the data field for the given field name or with via the given index.
      java.lang.String getData​(java.lang.String name, int... indexes)
      Returns the value of the data field for the given field name or with via the given index.
      int getDataCount()
      Returns the number of parsed data fields.
      java.lang.String getFieldName​(de.iip_ecosphere.platform.support.function.IOConsumer<java.lang.String> valueCons, int... index)
      Returns the name of the field.
      private int getIndex​(int[] indexes)
      Returns the one-dimensional array index into the data.
      void getLocalData​(de.iip_ecosphere.platform.support.function.IOConsumer<java.lang.String> ifPresent, java.lang.String name, int... indexes)
      Returns the value of the data field for the given field name or with via the given index.
      java.lang.String getLocalData​(java.lang.String name, int... indexes)
      Returns the value of the data field for the given field name or with via the given index.
      ArrayParseResult stepInto​(java.lang.String name, int index)
      Sets the hierarchical substructure denoted by name as current scope for further resolution.
      ArrayParseResult stepOut()
      Steps out of the actual context set by InputParser.ParseResult.stepInto(String, int).
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • data

        private java.lang.String[] data
      • baseIndex

        private int baseIndex
    • Constructor Detail

      • ArrayParseResult

        protected ArrayParseResult​(java.lang.String[] data)
        Creates an array-based parse result.
        Parameters:
        data - the parsed data
      • ArrayParseResult

        protected ArrayParseResult​(java.lang.String[] data,
                                   int baseIndex,
                                   ArrayParseResult parent)
        Creates an array-based parse result.
        Parameters:
        data - the parsed data
        baseIndex - the base index set as context root, {code 0} for top-level
        parent - the parent result representing the context where a #stepInto(String, int) happened, null for the top context
    • Method Detail

      • getFieldName

        public java.lang.String getFieldName​(de.iip_ecosphere.platform.support.function.IOConsumer<java.lang.String> valueCons,
                                             int... index)
        Description copied from interface: InputParser.ParseResult
        Returns the name of the field. This operation may not be efficient on all input parsers, in particular if no index positions are recorded. However, for generically parsing back some structures, this operation is required.
        Specified by:
        getFieldName in interface InputParser.ParseResult<java.lang.String>
        Parameters:
        valueCons - a value consumer to handle the value of the field (if found) in the same step, may be null for none
        index - the path of (nested) 0-based indexes to the field, the sum must be less than InputParser.ParseResult.getDataCount()
        Returns:
        the name of the field or empty if not known
      • getData

        public java.lang.String getData​(java.lang.String name,
                                        int... indexes)
                                 throws java.io.IOException
        Description copied from interface: InputParser.ParseResult
        Returns the value of the data field for the given field name or with via the given index. Primary index goes via name and if not given/mapped, index-based access shall be used as fallback. Names may be hierarchical. May be overridden if direct access to names is provided by the parsed structure, e.g., in JSON. Thus, no index-access is provided in the first place by this interface.
        Specified by:
        getData in interface InputParser.ParseResult<java.lang.String>
        Parameters:
        name - the name of the data field, may contain hierarchical names separated by InputParser.SEPARATOR, may be based on the scope set by InputParser.ParseResult.stepInto(String, int)
        indexes - the path of (nested) 0-based indexes to the field, the sum must be less than InputParser.ParseResult.getDataCount()
        Returns:
        the data value
        Throws:
        java.io.IOException - if the mapped index or the given index<0 || index >= InputParser.ParseResult.getDataCount()
      • getIndex

        private int getIndex​(int[] indexes)
        Returns the one-dimensional array index into the data.
        Parameters:
        indexes - the path of (nested) 0-based indexes to the field, the sum must be less than getDataCount()
        Returns:
        the 0-based index
      • getLocalData

        public void getLocalData​(de.iip_ecosphere.platform.support.function.IOConsumer<java.lang.String> ifPresent,
                                 java.lang.String name,
                                 int... indexes)
                          throws java.io.IOException
        Description copied from interface: InputParser.ParseResult
        Returns the value of the data field for the given field name or with via the given index. Primary index goes via name and if not given/mapped, index-based access shall be used as fallback. No hierarchical name interpretation happens here (local). In combination with InputParser.ParseResult.stepInto(String, int), this method shall be faster than InputParser.ParseResult.getData(IOConsumer, String, int...).
        Specified by:
        getLocalData in interface InputParser.ParseResult<java.lang.String>
        Parameters:
        ifPresent - consumer called if a data value was found. The value is passed to ifPresent for further processing
        name - the name of the data field
        indexes - the path of (nested) 0-based indexes to the field, the sum must be less than InputParser.ParseResult.getDataCount()
        Throws:
        java.io.IOException - if an exception occurred in ifPresent
      • getData

        public void getData​(de.iip_ecosphere.platform.support.function.IOConsumer<java.lang.String> ifPresent,
                            java.lang.String name,
                            int... indexes)
                     throws java.io.IOException
        Description copied from interface: InputParser.ParseResult
        Returns the value of the data field for the given field name or with via the given index. Primary index goes via name and if not given/mapped, index-based access shall be used as fallback. Names may be hierarchical. May be overridden if direct access to names is provided by the parsed structure, e.g., in JSON. Thus, no index-access is provided in the first place by this interface. This method shall not throw any exception.
        Specified by:
        getData in interface InputParser.ParseResult<java.lang.String>
        Parameters:
        ifPresent - consumer called if a data value was found. The value is passed to ifPresent for further processing
        name - the name of the data field, may contain hierarchical names separated by InputParser.SEPARATOR, may be based on the scope set by InputParser.ParseResult.stepInto(String, int)
        indexes - the path of (nested) 0-based indexes to the field, the sum must be less than InputParser.ParseResult.getDataCount()
        Throws:
        java.io.IOException - if an
      • stepInto

        public ArrayParseResult stepInto​(java.lang.String name,
                                         int index)
        Description copied from interface: InputParser.ParseResult
        Sets the hierarchical substructure denoted by name as current scope for further resolution. When overriding, declare the actual type as result type.
        Specified by:
        stepInto in interface InputParser.ParseResult<java.lang.String>
        Parameters:
        name - non-hierarchical name of contained substructure
        index - the 0-based indexes to the field, must be less than InputParser.ParseResult.getDataCount()
        Returns:
        the sub parse-result taking name as context, use #stepOut() to leave that context
      • getData

        protected java.lang.String[] getData()
        Returns the data object.
        Returns:
        the data object