Class OtherWordAttributeMultipleFilesOnDisk

java.lang.Object
com.pixelmed.dicom.Attribute
com.pixelmed.dicom.OtherWordAttributeMultipleFilesOnDisk

public class OtherWordAttributeMultipleFilesOnDisk extends Attribute

A concrete class specializing Attribute for Other Word (OW) attributes whose values are not memory resident but rather are stored in multiple files on disk.

See Also:
  • Field Details

    • files

      protected File[] files
    • byteOffsets

      protected long[] byteOffsets
    • lengths

      protected long[] lengths
    • deleteFilesWhenNoLongerNeeded

      protected boolean deleteFilesWhenNoLongerNeeded
    • bigEndian

      protected boolean bigEndian
  • Constructor Details

    • OtherWordAttributeMultipleFilesOnDisk

      public OtherWordAttributeMultipleFilesOnDisk(AttributeTag t, boolean bigEndian)

      Construct an (empty) attribute.

      Any file set later will be expected to be little endian.
      Parameters:
      t - the tag of the attribute
      bigEndian - big endian, false if little endian
    • OtherWordAttributeMultipleFilesOnDisk

      public OtherWordAttributeMultipleFilesOnDisk(AttributeTag t, File[] files, long[] byteOffsets, long[] lengths, boolean bigEndian) throws IOException, DicomException

      Read an attribute from a set of files.

      Parameters:
      t - the tag of the attribute
      files - the input files
      byteOffsets - the byte offsets in the files of the start of the data, one entry for each file, or null if 0 for all files
      lengths - the lengths in the files from the the start of the data, one entry for each file, or null if the remaining file length after the byteOffset, if any
      Throws:
      IOException
      DicomException
    • OtherWordAttributeMultipleFilesOnDisk

      public OtherWordAttributeMultipleFilesOnDisk(AttributeTag t, String[] fileNames, long[] byteOffsets, long[] lengths, boolean bigEndian) throws IOException, DicomException

      Read an attribute from a set of files.

      Parameters:
      t - the tag of the attribute
      fileNames - the input files
      byteOffsets - the byte offsets in the files of the start of the data, one entry for each file, or null if 0 for all files
      lengths - the lengths in the files from the the start of the data, one entry for each file, or null if the remaining file length after the byteOffset, if any
      Throws:
      IOException
      DicomException
    • OtherWordAttributeMultipleFilesOnDisk

      public OtherWordAttributeMultipleFilesOnDisk(AttributeTag t, File[] files, boolean bigEndian) throws IOException, DicomException

      Read an attribute from a set of files.

      Parameters:
      t - the tag of the attribute
      files - the input files
      Throws:
      IOException
      DicomException
    • OtherWordAttributeMultipleFilesOnDisk

      public OtherWordAttributeMultipleFilesOnDisk(AttributeTag t, String[] fileNames, boolean bigEndian) throws IOException, DicomException

      Read an attribute from a set of files.

      Parameters:
      t - the tag of the attribute
      fileNames - the input files
      Throws:
      IOException
      DicomException
  • Method Details

    • getFiles

      public File[] getFiles()
      Returns:
      the files containing the data
    • getByteOffsets

      public long[] getByteOffsets()
      Returns:
      the per-file byte offsets to the frame data
    • getLengths

      public long[] getLengths()
      Returns:
      the per-file lengths of the data for each frame (after the byte offset) in bytes
    • setFiles

      public void setFiles(File[] files, long[] byteOffsets, long[] lengths) throws IOException
      Parameters:
      files - the input files
      byteOffsets - the byte offsets in the files of the start of the data, one entry for each file, or null if 0 for all files
      lengths - the lengths in the files from the the start of the data, one entry for each file, or null if the remaining file length after the byteOffset, if any
      Throws:
      IOException
    • getPaddedVL

      public long getPaddedVL()
      Description copied from class: Attribute

      Get the value length of this attribute, accounting for the need for even-length padding.

      Overrides:
      getPaddedVL in class Attribute
      Returns:
      the value length (padded to an even length)
    • write

      public void write(DicomOutputStream o) throws DicomException, IOException
      Description copied from class: Attribute

      Write the entire attribute (including values) to the output stream.

      Specified by:
      write in class Attribute
      Parameters:
      o -
      Throws:
      IOException
      DicomException
    • toString

      public String toString(DicomDictionary dictionary)
      Description copied from class: Attribute

      Dump the contents of the attribute as a human-readable string.

      No new line is appended.

      The result is of the form:

       (0xgggg,0xeeee) Name VR=<XX> VL=<0xnnnn> <...>
       

      For example:

       (0x0018,0x0020) ScanningSequence VR=<CS> VL=<0x2> <GR>
       
      Overrides:
      toString in class Attribute
      Parameters:
      dictionary - the dictionary to use to look up the name
      Returns:
      a single String value
    • getShortValues

      public short[] getShortValues() throws DicomException

      Get the values of this attribute as a short array.

      This allocates a new array of sufficient length, which may fail if it is too large, and defeats the point of leaving the byte values on disk in the first place. However, it is a fallback for when the caller does not want to go to the trouble of creating a MappedByteBuffer from the file, or more likely is not even aware that the attribute values have been left on disk.

      Overrides:
      getShortValues in class Attribute
      Returns:
      the values as an array of bytes
      Throws:
      DicomException - thrown if values cannot be read
    • getShortValuesPerFrame

      public short[][] getShortValuesPerFrame() throws DicomException

      Get the values of this attribute as multiple short arrays, one per frame.

      Caller does not need to supply the number for frames since known when this attribute was created.

      This allocates a new array of sufficient length, which may fail if it is too large, and defeats the point of leaving the short values on disk in the first place. However, it is a fallback for when the caller does not want to go to the trouble of creating a MappedByteBuffer from the file, or more likely is not even aware that the attribute values have been left on disk.

      Returns:
      the values as an array of arrays of shorts
      Throws:
      DicomException - thrown if values cannot be read
    • removeValues

      public void removeValues()
      Description copied from class: Attribute

      Remove any existing values, making the attribute empty (zero length).

      Specified by:
      removeValues in class Attribute
    • deleteFilesWhenNoLongerNeeded

      public void deleteFilesWhenNoLongerNeeded()
    • finalize

      protected void finalize() throws Throwable
      Throws:
      Throwable
    • getVR

      public byte[] getVR()

      Get the value representation of this attribute (OW).

      Overrides:
      getVR in class Attribute
      Returns:
      'O','W' in ASCII as a two byte array; see ValueRepresentation