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 aString
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 aString
.java.lang.String
validate()
Validate the section against the standard.
-
-
-
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 classjava.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 numbersections
- 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 childname
- the name of the new nodevalue
- 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 childname
- the name of the new nodevalue
- 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
-
-