Package com.pixelmed.scpecg

## Class Section

- java.lang.Object
- - com.pixelmed.scpecg.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 Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected long` | `bytesRead` |
    `protected SectionHeader` | `header` |
    `protected long` | `sectionBytesRemaining` |
    `protected SCPTreeRecord` | `tree` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `Section​(SectionHeader header)` | Construct an empty section with the specified header.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `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.
    `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.
    `protected void` | `addSectionHeaderToTree​(SCPTreeRecord parent)` | Get section header information to the section node in a tree for display.
    `static java.lang.String` | `describeMissingValues​(int i)` | Get a description of measurement values that may have missing values.
    `SectionHeader` | `getSectionHeader()` |
    `java.lang.String` | `getSectionName()` | Get a string name for this section.
    `SCPTreeRecord` | `getTree()` | Get the contents of the section as a tree for display.
    `SCPTreeRecord` | `getTree​(SCPTreeRecord parent)` | Get the contents of the section as a tree for display, constructing it if not already done.
    `protected java.lang.String` | `getValueForSectionNodeInTree()` | Get the value to use as the value section of the section node in a tree for display.
    `static Section` | `makeSection​(SectionHeader sectionHeader, java.util.TreeMap sections)` | A factory method to construct specific sub-classes of section.
    `static java.lang.String` | `makeStringFromByteArrayRemovingAnyNulls​(byte[] bytes)` | Convert an array of bytes to a `String` removing any embedded nulls.
    `long` | `read​(BinaryInputStream i)` | Read the remainder of the section from a stream.
    `protected long` | `skipToEndOfSectionIfNotAlreadyThere​(BinaryInputStream i)` | Skip to the end of the section, if not already there.
    `java.lang.String` | `toString()` | Dump the section as a `String`.
    `java.lang.String` | `validate()` | Validate the section against the standard.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### header

          protected SectionHeader header

    - #### bytesRead

          protected long bytesRead

    - #### sectionBytesRemaining

          protected long sectionBytesRemaining

    - #### tree

          protected SCPTreeRecord tree

  - ### 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

    - #### getSectionHeader

          public SectionHeader getSectionHeader()

    - #### 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