com.pixelmed.dicom

## Class AttributeFactory

- java.lang.Object
- - com.pixelmed.dicom.AttributeFactory

    public class AttributeFactory
    extends java.lang.Object

The `AttributeFactory` class is a factory class of static methods for creating concrete instances of the abstract class `Attribute` based on their value representation.

This class is primarily used when reading a parsing a DICOM dataset, and needing to create attributes based on their value representation, either from a dictionary or from the explicit value representation in the dataset.

See Also:
  `Attribute`, `AttributeList`

### Method Summary

Methods
`static java.lang.Class` `getClassOfAttributeFromValueRepresentation(AttributeTag tag, byte[] vr, boolean explicit, int bytesPerSample, boolean leaveOtherDataOnDisk)` A static method to determine the `Class` appropriate for storing an attribute based on the supplied value representation.
`static java.lang.Class` `getClassOfAttributeFromValueRepresentation(AttributeTag tag, byte[] vr, boolean explicit, int bytesPerSample, long vl, boolean isFile)` A static method to determine the `Class` appropriate for storing an attribute based on the supplied value representation.
`static Attribute` `newAttribute(AttributeTag tag)` A static method to create an `Attribute` based on the value representation from the standard dictionary.
`static Attribute` `newAttribute(AttributeTag tag, byte[] vr)` A static method to create an `Attribute` based on the supplied value representation.
`static Attribute` `newAttribute(AttributeTag tag, byte[] vr, boolean explicit, int bytesPerSample)` A static method to create an `Attribute` based on the supplied value representation.
`static Attribute` `newAttribute(AttributeTag tag, byte[] vr, long vl, DicomInputStream i, SpecificCharacterSet specificCharacterSet, boolean explicit, int bytesPerSample, long byteOffset)` A static method to create and read an `Attribute` from a `DicomInputStream`.
`static Attribute` `newAttribute(AttributeTag tag, byte[] vr, SpecificCharacterSet specificCharacterSet)` A static method to create an `Attribute` based on the supplied value representation.
`static Attribute` `newAttribute(AttributeTag tag, byte[] vr, SpecificCharacterSet specificCharacterSet, boolean explicit, int bytesPerSample)` A static method to create an `Attribute` based on the supplied value representation.

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

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

### Method Detail

#### getClassOfAttributeFromValueRepresentation

    public static java.lang.Class getClassOfAttributeFromValueRepresentation(AttributeTag tag,
                                                             byte[] vr,
                                                             boolean explicit,
                                                             int bytesPerSample,
                                                             boolean leaveOtherDataOnDisk)

A static method to determine the `Class` appropriate for storing an attribute based on the supplied value representation.

Parameters:
  `tag` - the `AttributeTag` tag of the attribute (to check whether or not pixel data)
  `vr` - the value representation of the attribute
  `explicit` - a flag indicating that the stream to read or write uses explicit value representation (affects pixel data encoding choice)
  `bytesPerSample` - 1 or 2 bytes per sample indicating whether to use OB or OW for pixel data
  `leaveOtherDataOnDisk` - whether or not to leave OB or OW on disk or read it into memory
Returns:
  the class appropriate for the attribute

#### getClassOfAttributeFromValueRepresentation

    public static java.lang.Class getClassOfAttributeFromValueRepresentation(AttributeTag tag,
                                                             byte[] vr,
                                                             boolean explicit,
                                                             int bytesPerSample,
                                                             long vl,
                                                             boolean isFile)

A static method to determine the `Class` appropriate for storing an attribute based on the supplied value representation.

Parameters:
  `tag` - the `AttributeTag` tag of the attribute (to check whether or not pixel data)
  `vr` - the value representation of the attribute
  `explicit` - a flag indicating that the stream to read or write uses explicit value representation (affects pixel data encoding choice)
  `bytesPerSample` - 1 or 2 bytes per sample indicating whether to use OB or OW for pixel data
  `vl` - the value length, used to decide whether or not to leave OB or OW on disk (if in a file) or read it into memory
  `isFile` - the attribute is stored in a file
Returns:
  the class appropriate for the attribute

#### newAttribute

    public static Attribute newAttribute(AttributeTag tag)
                                  throws DicomException

A static method to create an `Attribute` based on the value representation from the standard dictionary.

Will return a UN attribute if the tag is unrecognized.

Parameters:
  `tag` - the `AttributeTag` tag of the attribute to create
Returns:
  the attribute of an appropriate class, with no value
Throws:
  `DicomException` - if cannot instantiate a new attribute

#### newAttribute

    public static Attribute newAttribute(AttributeTag tag,
                         byte[] vr)
                                  throws DicomException

A static method to create an `Attribute` based on the supplied value representation.

Parameters:
  `tag` - the `AttributeTag` tag of the attribute to create
  `vr` - the value representation of the attribute to create (such as read from the stream, or from the dictionary)
Returns:
  the attribute of an appropriate class, with no value
Throws:
  `DicomException` - if cannot instantiate a new attribute

#### newAttribute

    public static Attribute newAttribute(AttributeTag tag,
                         byte[] vr,
                         SpecificCharacterSet specificCharacterSet)
                                  throws DicomException

A static method to create an `Attribute` based on the supplied value representation.

Parameters:
  `tag` - the `AttributeTag` tag of the attribute to create
  `vr` - the value representation of the attribute to create (such as read from the stream, or from the dictionary)
  `specificCharacterSet` - the `SpecificCharacterSet` to be used text values
Returns:
  the attribute of an appropriate class, with no value
Throws:
  `DicomException` - if cannot instantiate a new attribute

#### newAttribute

    public static Attribute newAttribute(AttributeTag tag,
                         byte[] vr,
                         boolean explicit,
                         int bytesPerSample)
                                  throws DicomException

A static method to create an `Attribute` based on the supplied value representation.

Parameters:
  `tag` - the `AttributeTag` tag of the attribute to create
  `vr` - the value representation of the attribute to create (such as read from the stream, or from the dictionary)
  `explicit` - a flag indicating that the stream is explicit value representation (affects pixel data encoding choice)
  `bytesPerSample` - 1 or 2 bytes per sample indicating whether to use OB or OW for pixel data
Returns:
  the attribute of an appropriate class, with no value
Throws:
  `DicomException` - if cannot instantiate a new attribute

#### newAttribute

    public static Attribute newAttribute(AttributeTag tag,
                         byte[] vr,
                         SpecificCharacterSet specificCharacterSet,
                         boolean explicit,
                         int bytesPerSample)
                                  throws DicomException

A static method to create an `Attribute` based on the supplied value representation.

Parameters:
  `tag` - the `AttributeTag` tag of the attribute to create
  `vr` - the value representation of the attribute to create (such as read from the stream, or from the dictionary)
  `specificCharacterSet` - the `SpecificCharacterSet` to be used text values
  `explicit` - a flag indicating that the stream is explicit value representation (affects pixel data encoding choice)
  `bytesPerSample` - 1 or 2 bytes per sample indicating whether to use OB or OW for pixel data
Returns:
  the attribute of an appropriate class, with no value
Throws:
  `DicomException` - if cannot instantiate a new attribute

#### newAttribute

    public static Attribute newAttribute(AttributeTag tag,
                         byte[] vr,
                         long vl,
                         DicomInputStream i,
                         SpecificCharacterSet specificCharacterSet,
                         boolean explicit,
                         int bytesPerSample,
                         long byteOffset)
                                  throws DicomException

A static method to create and read an `Attribute` from a `DicomInputStream`.

The stream is left positioned at the start of the next attribute.

Parameters:
  `tag` - the `AttributeTag` tag of the attribute to create (already read from the stream)
  `vr` - the value representation of the attribute to create (already read from the stream, if present, else from the dictionary)
  `vl` - the value length of the attribute to create (already read from the stream)
  `i` - the `DicomInputStream` to read the attribute from, positioned at the start of the value(s) to read
  `specificCharacterSet` - the `SpecificCharacterSet` to be used text values
  `explicit` - a flag indicating that the stream is explicit value representation (affects pixel data encoding choice)
  `bytesPerSample` - 1 or 2 bytes per sample indicating whether to use OB or OW for pixel data
  `byteOffset` - the byte offset from the beginning of the `DicomInputStream`
Returns:
  the attribute of an appropriate class populated with the value(s) read from the stream
Throws:
  `DicomException` - if cannot instantiate a new attribute