Class Section

  • Direct Known Subclasses:
    Section0, Section1, Section10, Section2, Section3, Section4, Section5Or6, Section7, Section8Or11

    public class Section
    extends java.lang.Object

    A class to encapsulate an SCP-ECG section.

    Though not abstract, in order to support unrecognized sections, this class is usually extended by more specific classes; there is a factory method makeSection that is used to create specific sub-classes once the section number is known (i.e. has been read).

    • Field Detail

      • bytesRead

        protected long bytesRead
      • sectionBytesRemaining

        protected long sectionBytesRemaining
    • Constructor Detail

      • Section

        public Section​(SectionHeader header)

        Construct an empty section with the specified header.

        Parameters:
        header - the header (which has already been read)
    • Method Detail

      • read

        public long read​(BinaryInputStream i)
                  throws java.io.IOException

        Read the remainder of the section from a stream.

        Parameters:
        i - the input stream
        Returns:
        the number of bytes read
        Throws:
        java.io.IOException
      • skipToEndOfSectionIfNotAlreadyThere

        protected long skipToEndOfSectionIfNotAlreadyThere​(BinaryInputStream i)
                                                    throws java.io.IOException

        Skip to the end of the section, if not already there.

        Used either for unrecognized sections, or when there is an encoding error within a section and parsing of the section has to be abandoned.

        Parameters:
        i - the input stream
        Returns:
        the number of bytes skipped
        Throws:
        java.io.IOException
      • toString

        public java.lang.String toString()

        Dump the section as a String.

        Overrides:
        toString in class java.lang.Object
        Returns:
        the section as a String
      • validate

        public java.lang.String validate()

        Validate the section against the standard.

        Returns:
        the validation results as a String
      • getSectionName

        public java.lang.String getSectionName()

        Get a string name for this section.

        Returns:
        a string name for this section
      • makeSection

        public static Section makeSection​(SectionHeader sectionHeader,
                                          java.util.TreeMap sections)

        A factory method to construct specific sub-classes of section.

        Parameters:
        sectionHeader - the section header already read from the stream, containing the section number
        sections - the sections that have already been read, in case values are needed for making new sections
        Returns:
        a section of the appropriate sub-class.
      • getValueForSectionNodeInTree

        protected java.lang.String getValueForSectionNodeInTree()

        Get the value to use as the value section of the section node in a tree for display.

        Returns:
        the value of just this node (not its contents)
      • addSectionHeaderToTree

        protected void addSectionHeaderToTree​(SCPTreeRecord parent)

        Get section header information to the section node in a tree for display.

      • getTree

        public SCPTreeRecord getTree()

        Get the contents of the section as a tree for display.

        Returns:
        the section as a tree, or null if not constructed
      • getTree

        public SCPTreeRecord getTree​(SCPTreeRecord parent)

        Get the contents of the section as a tree for display, constructing it if not already done.

        Parameters:
        parent - the node to which this section is to be added if it needs to be created de novo
        Returns:
        the section as a tree
      • describeMissingValues

        public static java.lang.String describeMissingValues​(int i)

        Get a description of measurement values that may have missing values.

        Described in Section 5.10.2 as being defined in the CSE Project.

        Parameters:
        i - the numeric value that may be missing
        Returns:
        a description of the type of missing value
      • addNodeOfDecimalAndHex

        protected static void addNodeOfDecimalAndHex​(SCPTreeRecord parent,
                                                     java.lang.String name,
                                                     int value)

        Add a tree node with a numeric value as decimal and hexadecimal strings.

        Parameters:
        parent - the node to which to add this new node as a child
        name - the name of the new node
        value - the numeric value of the new node
      • addNodeOfDecimalWithMissingValues

        protected static void addNodeOfDecimalWithMissingValues​(SCPTreeRecord parent,
                                                                java.lang.String name,
                                                                int value)

        Add a tree node with a numeric value as decimal string, with potentially missing values.

        Parameters:
        parent - the node to which to add this new node as a child
        name - the name of the new node
        value - the numeric value of the new node
      • makeStringFromByteArrayRemovingAnyNulls

        public static java.lang.String makeStringFromByteArrayRemovingAnyNulls​(byte[] bytes)

        Convert an array of bytes to a String removing any embedded nulls.

        Nulls may be embedded, and are simply ignored; they do not terminate the string.

        The default character encoding is used; ISO 2022 escapes are not yet supported.

        Parameters:
        bytes - the array of bytes, possibly with embedded nulls
        Returns:
        the String value