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
`protected long` `bytesRead`
`protected SectionHeader` `header`
`protected long` `sectionBytesRemaining`
`protected SCPTreeRecord` `tree`

### Constructor Summary

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

### Method Summary

Methods
`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, finalize, 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