public class GenericDigits extends AbstractLazyEncodedByteArray implements FastSerializable
The API offered by this class is as if the type were specified in ASN.1 as follows.
GenericDigits ::= SEQUENCE { encodingScheme EncodingScheme, typeOfDigits TypeOfDigits, address DigitOrCharString }The class takes care of encoding the field values into a byte-array and decoding field values from a byte-array, the encoded representation being as tabulated below.
Data Encoding - based on ITU-T Q.763 (12/1999) §3.24 p33 | ||||||||
---|---|---|---|---|---|---|---|---|
8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | |
Octet 1 | Encoding scheme | Type of digits | ||||||
Octet 2.. | Digits |
Under encoding scheme BCD_ODD,
the address should be a digit string with an odd number of digits,
and the digits are encoded into semi-octets.
Under encoding scheme BCD_EVEN,
the address should be a digit string with an even number of digits,
and the digits are encoded into semi-octets.
Under encoding scheme IA5,
the address should be a character string,
and the characters are encoded into octets.
Under encoding scheme BINARY,
the address should be a character string containing only digits,
and the digits are encoded into octets (subtracting digit '0' from each character).
The encoding to semi-octets by encoding schemes BCD_ODD and BCD_EVEN,
unless overridden by a particular StringCodec
,
is as tabulated below.
Decoded character | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Encoded hexadecimal | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
In INAP, type of digits is determinable from the context, and so it's redundant. However the ISUP format doesn't allow the exclusion of this subfield, therefore the value is network operator specific.
Modifier and Type | Class and Description |
---|---|
static class |
GenericDigits.EncodingScheme
Encoding scheme constants.
|
static class |
GenericDigits.TypeOfDigits
Type of digits constants.
|
Modifier and Type | Field and Description |
---|---|
static BCDStringCodec<GenericDigits> |
ADDRESS_CODEC_BCD
BCD string codec for field Address.
|
static BinaryStringCodec<GenericDigits> |
ADDRESS_CODEC_BINARY
Binary string codec for field Address.
|
static IA5StringCodec<GenericDigits> |
ADDRESS_CODEC_IA5
ASCII/ISO646-US string codec for field Address.
|
protected EncodedStringWithIndicators |
Address_value
Encoded form of field Address.
|
protected GenericDigits.EncodingScheme |
EncodingScheme_value
Value of field EncodingScheme.
|
protected GenericDigits.TypeOfDigits |
TypeOfDigits_value
Value of field TypeOfDigits.
|
isDecoded
encoded
FIELD_ABSENT, FIELD_UNINITIALISED
Constructor and Description |
---|
GenericDigits()
Constructs a new GenericDigits object with no fields set.
|
GenericDigits(byte[] data)
Constructs a new GenericDigits object from network-encoded data.
|
GenericDigits(byte[] data,
int start,
int len)
Constructs a new GenericDigits object from part of network-encoded data.
|
GenericDigits(DataInput in)
Constructs a new GenericDigits object from data deserialized from a stream that was written by
toStream(DataOutput) . |
GenericDigits(GenericDigits.EncodingScheme encodingScheme,
GenericDigits.TypeOfDigits typeOfDigits,
String address)
Constructs a new GenericDigits object from given values for all fields.
|
GenericDigits(GenericDigits.EncodingScheme encodingScheme,
GenericDigits.TypeOfDigits typeOfDigits,
String address,
StringCodec<GenericDigits> Address_codec)
Constructs a new GenericDigits object from given arguments,
using the given codecs for encoding fields of type String.
|
Modifier and Type | Method and Description |
---|---|
void |
checkFieldsSet()
Checks that all mandatory fields are present.
|
GenericDigits |
clone()
Constructs a copy of this object and everything reachable from it.
|
static GenericDigits |
copyOf(GenericDigits from)
Creates a new object of this type, cloning the values of common fields from the given object of any subclass of the same base type.
|
protected void |
decode()
Computes the decoded form from the encoded form.
|
protected void |
encode()
Computes the encoded form from the decoded form.
|
protected boolean |
encodedIsInvalid()
Determines whether the encoded form is invalid.
|
String |
getAddress()
Gets the value of the address.
|
String |
getAddress(StringCodec<GenericDigits> codec)
Gets the value of the address using the given codec.
|
StringCodec<GenericDigits> |
getAddressCodec()
Gets the codec used for field Address.
|
EncodedStringWithIndicators |
getAddressEncoded()
Gets a clone of the encoded value of the address.
|
static int |
getContainedLength(byte[] data,
int start,
int len)
Determines the length of the encoded value that commences at offset
start in the given data . |
byte[] |
getEncodedForm()
Gets the encoded form.
|
GenericDigits.EncodingScheme |
getEncodingScheme()
Gets the value of the encoding scheme.
|
static FieldAccessor[] |
getFieldAccessors()
Gets a new array of the accessors for fields of this type.
|
Map<String,Object> |
getFieldsMap(boolean withAbsents)
Gets a Map from field-name to field-value for the fields of a sequence.
|
GenericDigits.TypeOfDigits |
getTypeOfDigits()
Gets the value of the type of digits.
|
boolean |
hasAddress()
Tests whether the field Address has a value.
|
boolean |
hasEncodingScheme()
Tests whether the field EncodingScheme has a value.
|
boolean |
hasTypeOfDigits()
Tests whether the field TypeOfDigits has a value.
|
GenericDigits |
setAddress(String value)
Sets the value of the address.
|
GenericDigits |
setAddress(String value,
StringCodec<GenericDigits> codec)
Sets the value of the address using the given codec.
|
GenericDigits |
setAddressEncoded(EncodedStringWithIndicators encoded)
Sets the encoded value of the address to a clone of the given EncodedStringIndicators.
|
GenericDigits |
setEncodingScheme(GenericDigits.EncodingScheme value)
Sets the value of the encoding scheme.
|
GenericDigits |
setTypeOfDigits(GenericDigits.TypeOfDigits value)
Sets the value of the type of digits.
|
void |
toStream(DataOutput out)
Serializes this object to a stream in a form suitable for reading by
GenericDigits(DataInput) . |
checkDecode, checkModifyAndDecode
equals, hashCode, toString
checkModify, isReadOnly, setReadOnly
public static final BCDStringCodec<GenericDigits> ADDRESS_CODEC_BCD
public static final BinaryStringCodec<GenericDigits> ADDRESS_CODEC_BINARY
public static final IA5StringCodec<GenericDigits> ADDRESS_CODEC_IA5
protected GenericDigits.EncodingScheme EncodingScheme_value
protected GenericDigits.TypeOfDigits TypeOfDigits_value
protected EncodedStringWithIndicators Address_value
public GenericDigits()
public GenericDigits(byte[] data)
data
- network-encoded dataNullPointerException
- if data is nullpublic GenericDigits(byte[] data, int start, int len)
start
and is len
bytes long.
The data is not decoded and might not be decodable.data
- network-encoded datastart
- starting offset of network-encoded data in byte arraylen
- default length if not predictableNullPointerException
- if data is nullIllegalArgumentException
- if len is negativepublic GenericDigits(GenericDigits.EncodingScheme encodingScheme, GenericDigits.TypeOfDigits typeOfDigits, String address)
encodingScheme
- the encoding schemetypeOfDigits
- the type of digitsaddress
- the addresspublic GenericDigits(GenericDigits.EncodingScheme encodingScheme, GenericDigits.TypeOfDigits typeOfDigits, String address, StringCodec<GenericDigits> Address_codec)
encodingScheme
- the encoding schemetypeOfDigits
- the type of digitsaddress
- the addressAddress_codec
- StringCodec for addresspublic GenericDigits(DataInput in) throws IOException
toStream(DataOutput)
.in
- the stream to read fromEOFException
- if reading is pre-empted by end-of-fileIOException
- if the data cannot be readpublic void toStream(DataOutput out) throws IOException
GenericDigits(DataInput)
.toStream
in interface FastSerializable
out
- the stream to write toIOException
- if an I/O error occurspublic boolean hasEncodingScheme() throws DecodeException
DecodeException
- if encoded state cannot be decodedpublic boolean hasTypeOfDigits() throws DecodeException
DecodeException
- if encoded state cannot be decodedpublic boolean hasAddress() throws DecodeException
DecodeException
- if encoded state cannot be decodedpublic void checkFieldsSet() throws EncodeException
checkFieldsSet
in class AbstractLazyEncodedDataObject<byte[]>
EncodeException
- if any mandatory field is not presentpublic GenericDigits.EncodingScheme getEncodingScheme() throws DecodeException
DecodeException
- if encoded state cannot be decodedpublic GenericDigits.TypeOfDigits getTypeOfDigits() throws DecodeException
DecodeException
- if encoded state cannot be decodedpublic String getAddress() throws DecodeException
getAddress(null)
.DecodeException
- if encoded state cannot be decodedpublic GenericDigits setEncodingScheme(GenericDigits.EncodingScheme value) throws IllegalStateException
value
- EncodingScheme representation of the encoding schemeIllegalStateException
public GenericDigits setTypeOfDigits(GenericDigits.TypeOfDigits value) throws IllegalStateException
value
- TypeOfDigits representation of the type of digitsIllegalStateException
public GenericDigits setAddress(String value) throws IllegalStateException
value
- String representation of the addressIllegalStateException
public String getAddress(StringCodec<GenericDigits> codec) throws DecodeException
codec
- StringCodec to use for decodingDecodeException
- if encoded state cannot be decodedpublic EncodedStringWithIndicators getAddressEncoded()
public GenericDigits setAddress(String value, StringCodec<GenericDigits> codec) throws IllegalArgumentException
value
- String representation of the addresscodec
- StringCodec to use for encodingIllegalArgumentException
public GenericDigits setAddressEncoded(EncodedStringWithIndicators encoded)
encoded
- EncodedStringWithIndicators representation of the addresspublic static GenericDigits copyOf(GenericDigits from)
from
- the object from which to copypublic GenericDigits clone()
clone
in interface DataObject
clone
in class AbstractDataObject
public static FieldAccessor[] getFieldAccessors()
public Map<String,Object> getFieldsMap(boolean withAbsents)
getFieldsMap
in class AbstractFieldsObject
withAbsents
- whether to put absent optional fields into Mapprotected boolean encodedIsInvalid()
public byte[] getEncodedForm() throws EncodeException
EncodeException
- if encoding failspublic static int getContainedLength(byte[] data, int start, int len)
start
in the given data
.
The value is not fully decoded and might not be decodable.
Values of this type are of variable length, so the given length
is returned if the data is long enough, otherwise 0 is returned.data
- network-encoded datastart
- index into data where value commenceslen
- length in data to be consideredpublic StringCodec<GenericDigits> getAddressCodec()
protected void encode()
encode
in class AbstractLazyEncodedDataObject<byte[]>
EncodeException
- if EncodingScheme is unknownprotected void decode() throws DecodeException
decode
in class AbstractLazyEncodedDataObject<byte[]>
DecodeException
- if less than 1 octet to be decoded