public class GenericNumber extends AbstractLazyEncodedByteArray implements FastSerializable
The API offered by this class is as if the type were specified in ASN.1 as follows.
GenericNumber ::= SEQUENCE { numberQualifier NumberQualifier, nature Nature, numberIncomplete BOOLEAN, numberingPlan NumberingPlan, presentation Presentation, screening Screening, address DigitString }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.26 p35 | ||||||||
---|---|---|---|---|---|---|---|---|
8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | |
Octet 1 | Number qualifier | |||||||
Octet 2 | Odd? | Nature of address | ||||||
Octet 3 | Number incomplete? | Numbering plan | Address presentation restricted | Screening | ||||
Octet 3+1 | Address digit 2 | Address digit 1 | ||||||
... | ... | ... | ||||||
Octet 3+n | Filler (0000) or Address digit 2n | Address digit 2n-1 |
Each digit of the address field is encoded into a semi-octet,
and if there is an odd number of digits then the last semi-octet is assigned a filler.
Unless overridden by a particular StringCodec
,
the filler is 0 and the encoding to semi-octets 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 |
Number Qualifier is irrelevant in INAP as the ASN.1 tags are sufficient to identify the parameter. However the ISUP format does not allow the exclusion of this subfield, therefore the value is network operator specific.
Modifier and Type | Class and Description |
---|---|
static class |
GenericNumber.Nature
Nature of address indicator constants.
|
static class |
GenericNumber.NumberingPlan
Enumeration of Numbering Plan indicator constants.
|
static class |
GenericNumber.NumberQualifier
Number qualifier constants.
|
static class |
GenericNumber.Presentation
Enumeration of Address Presentation Restricted indicator constants.
|
static class |
GenericNumber.Screening
Enumeration of Screening indicator constants.
|
Modifier and Type | Field and Description |
---|---|
static BCDStringCodec<GenericNumber> |
ADDRESS_CODEC
BCD string codec for field Address.
|
protected EncodedStringWithIndicators |
Address_value
Encoded form of field Address.
|
protected GenericNumber.Nature |
Nature_value
Value of field Nature.
|
protected boolean |
NumberIncomplete_present
Whether field NumberIncomplete is present.
|
protected boolean |
NumberIncomplete_value
Value of field NumberIncomplete.
|
protected GenericNumber.NumberingPlan |
NumberingPlan_value
Value of field NumberingPlan.
|
protected GenericNumber.NumberQualifier |
NumberQualifier_value
Value of field NumberQualifier.
|
protected GenericNumber.Presentation |
Presentation_value
Value of field Presentation.
|
protected GenericNumber.Screening |
Screening_value
Value of field Screening.
|
isDecoded
encoded
FIELD_ABSENT, FIELD_UNINITIALISED
Constructor and Description |
---|
GenericNumber()
Constructs a new GenericNumber object with no fields set.
|
GenericNumber(byte[] data)
Constructs a new GenericNumber object from network-encoded data.
|
GenericNumber(byte[] data,
int start,
int len)
Constructs a new GenericNumber object from part of network-encoded data.
|
GenericNumber(DataInput in)
Constructs a new GenericNumber object from data deserialized from a stream that was written by
toStream(DataOutput) . |
GenericNumber(GenericNumber.NumberQualifier numberQualifier,
GenericNumber.Nature nature,
boolean numberIncomplete,
GenericNumber.NumberingPlan numberingPlan,
GenericNumber.Presentation presentation,
GenericNumber.Screening screening,
String address)
Constructs a new GenericNumber object from given values for all fields.
|
GenericNumber(GenericNumber.NumberQualifier numberQualifier,
GenericNumber.Nature nature,
boolean numberIncomplete,
GenericNumber.NumberingPlan numberingPlan,
GenericNumber.Presentation presentation,
GenericNumber.Screening screening,
String address,
StringCodec<GenericNumber> Address_codec)
Constructs a new GenericNumber 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.
|
GenericNumber |
clone()
Constructs a copy of this object and everything reachable from it.
|
static GenericNumber |
copyOf(GenericNumber 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 number digits.
|
String |
getAddress(StringCodec<GenericNumber> codec)
Gets the value of the number digits using the given codec.
|
StringCodec<GenericNumber> |
getAddressCodec()
Gets the codec used for field Address.
|
EncodedStringWithIndicators |
getAddressEncoded()
Gets a clone of the encoded value of the number digits.
|
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.
|
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.
|
GenericNumber.Nature |
getNature()
Gets the value of the nature of address indicator.
|
boolean |
getNumberIncomplete()
Gets the value of the number incomplete indicator.
|
GenericNumber.NumberingPlan |
getNumberingPlan()
Gets the value of the numbering plan indicator.
|
GenericNumber.NumberQualifier |
getNumberQualifier()
Gets the value of the number qualifier indicator.
|
GenericNumber.Presentation |
getPresentation()
Gets the value of the address presentation restricted indicator.
|
GenericNumber.Screening |
getScreening()
Gets the value of the screening indicator.
|
boolean |
hasAddress()
Tests whether the field Address has a value.
|
boolean |
hasNature()
Tests whether the field Nature has a value.
|
boolean |
hasNumberIncomplete()
Tests whether the field NumberIncomplete has a value.
|
boolean |
hasNumberingPlan()
Tests whether the field NumberingPlan has a value.
|
boolean |
hasNumberQualifier()
Tests whether the field NumberQualifier has a value.
|
boolean |
hasPresentation()
Tests whether the field Presentation has a value.
|
boolean |
hasScreening()
Tests whether the field Screening has a value.
|
GenericNumber |
setAddress(String value)
Sets the value of the number digits.
|
GenericNumber |
setAddress(String value,
StringCodec<GenericNumber> codec)
Sets the value of the number digits using the given codec.
|
GenericNumber |
setAddressEncoded(EncodedStringWithIndicators encoded)
Sets the encoded value of the number digits to a clone of the given EncodedStringIndicators.
|
GenericNumber |
setNature(GenericNumber.Nature value)
Sets the value of the nature of address indicator.
|
GenericNumber |
setNumberIncomplete(boolean value)
Sets the value of the number incomplete indicator.
|
GenericNumber |
setNumberIncompletePresent(boolean flag)
Sets the presence or absence of the field NumberIncomplete.
|
GenericNumber |
setNumberingPlan(GenericNumber.NumberingPlan value)
Sets the value of the numbering plan indicator.
|
GenericNumber |
setNumberQualifier(GenericNumber.NumberQualifier value)
Sets the value of the number qualifier indicator.
|
GenericNumber |
setPresentation(GenericNumber.Presentation value)
Sets the value of the address presentation restricted indicator.
|
GenericNumber |
setScreening(GenericNumber.Screening value)
Sets the value of the screening indicator.
|
void |
toStream(DataOutput out)
Serializes this object to a stream in a form suitable for reading by
GenericNumber(DataInput) . |
checkDecode, checkModifyAndDecode
equals, hashCode, toString
checkModify, isReadOnly, setReadOnly
public static final BCDStringCodec<GenericNumber> ADDRESS_CODEC
protected GenericNumber.NumberQualifier NumberQualifier_value
protected GenericNumber.Nature Nature_value
protected boolean NumberIncomplete_value
protected boolean NumberIncomplete_present
protected GenericNumber.NumberingPlan NumberingPlan_value
protected GenericNumber.Presentation Presentation_value
protected GenericNumber.Screening Screening_value
protected EncodedStringWithIndicators Address_value
public GenericNumber()
public GenericNumber(byte[] data)
data
- network-encoded dataNullPointerException
- if data is nullpublic GenericNumber(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 GenericNumber(GenericNumber.NumberQualifier numberQualifier, GenericNumber.Nature nature, boolean numberIncomplete, GenericNumber.NumberingPlan numberingPlan, GenericNumber.Presentation presentation, GenericNumber.Screening screening, String address)
numberQualifier
- the number qualifier indicatornature
- the nature of address indicatornumberIncomplete
- the number incomplete indicatornumberingPlan
- the numbering plan indicatorpresentation
- the address presentation restricted indicatorscreening
- the screening indicatoraddress
- the number digitspublic GenericNumber(GenericNumber.NumberQualifier numberQualifier, GenericNumber.Nature nature, boolean numberIncomplete, GenericNumber.NumberingPlan numberingPlan, GenericNumber.Presentation presentation, GenericNumber.Screening screening, String address, StringCodec<GenericNumber> Address_codec)
numberQualifier
- the number qualifier indicatornature
- the nature of address indicatornumberIncomplete
- the number incomplete indicatornumberingPlan
- the numbering plan indicatorpresentation
- the address presentation restricted indicatorscreening
- the screening indicatoraddress
- the number digitsAddress_codec
- StringCodec for addresspublic GenericNumber(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
GenericNumber(DataInput)
.toStream
in interface FastSerializable
out
- the stream to write toIOException
- if an I/O error occurspublic boolean hasNumberQualifier() throws DecodeException
DecodeException
- if encoded state cannot be decodedpublic boolean hasNature() throws DecodeException
DecodeException
- if encoded state cannot be decodedpublic boolean hasNumberIncomplete() throws DecodeException
DecodeException
- if encoded state cannot be decodedpublic GenericNumber setNumberIncompletePresent(boolean flag) throws IllegalStateException
flag
- whether the field should be marked as presentIllegalStateException
- if this instance has been marked as read-onlypublic boolean hasNumberingPlan() throws DecodeException
DecodeException
- if encoded state cannot be decodedpublic boolean hasPresentation() throws DecodeException
DecodeException
- if encoded state cannot be decodedpublic boolean hasScreening() 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 GenericNumber.NumberQualifier getNumberQualifier() throws DecodeException
DecodeException
- if encoded state cannot be decodedpublic GenericNumber.Nature getNature() throws DecodeException
DecodeException
- if encoded state cannot be decodedpublic boolean getNumberIncomplete() throws DecodeException
DecodeException
- if encoded state cannot be decodedpublic GenericNumber.NumberingPlan getNumberingPlan() throws DecodeException
DecodeException
- if encoded state cannot be decodedpublic GenericNumber.Presentation getPresentation() throws DecodeException
DecodeException
- if encoded state cannot be decodedpublic GenericNumber.Screening getScreening() throws DecodeException
DecodeException
- if encoded state cannot be decodedpublic String getAddress() throws DecodeException
getAddress(null)
.DecodeException
- if encoded state cannot be decodedpublic GenericNumber setNumberQualifier(GenericNumber.NumberQualifier value) throws IllegalStateException
value
- NumberQualifier representation of the number qualifier indicatorIllegalStateException
public GenericNumber setNature(GenericNumber.Nature value) throws IllegalStateException
value
- Nature representation of the nature of address indicatorIllegalStateException
public GenericNumber setNumberIncomplete(boolean value) throws IllegalStateException
value
- boolean representation of the number incomplete indicatorIllegalStateException
public GenericNumber setNumberingPlan(GenericNumber.NumberingPlan value) throws IllegalStateException
value
- NumberingPlan representation of the numbering plan indicatorIllegalStateException
public GenericNumber setPresentation(GenericNumber.Presentation value) throws IllegalStateException
value
- Presentation representation of the address presentation restricted indicatorIllegalStateException
public GenericNumber setScreening(GenericNumber.Screening value) throws IllegalStateException
value
- Screening representation of the screening indicatorIllegalStateException
public GenericNumber setAddress(String value) throws IllegalStateException
value
- String representation of the number digitsIllegalStateException
public String getAddress(StringCodec<GenericNumber> codec) throws DecodeException
codec
- StringCodec to use for decodingDecodeException
- if encoded state cannot be decodedpublic EncodedStringWithIndicators getAddressEncoded()
public GenericNumber setAddress(String value, StringCodec<GenericNumber> codec) throws IllegalArgumentException
value
- String representation of the number digitscodec
- StringCodec to use for encodingIllegalArgumentException
public GenericNumber setAddressEncoded(EncodedStringWithIndicators encoded)
encoded
- EncodedStringWithIndicators representation of the number digitspublic static GenericNumber copyOf(GenericNumber from)
from
- the object from which to copypublic GenericNumber 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<GenericNumber> getAddressCodec()
protected void encode() throws EncodeException
encode
in class AbstractLazyEncodedDataObject<byte[]>
EncodeException
- if Nature is not in range [0,127], or Presentation is ADDRESS_NOT_AVAILABLE and any of Address is not empty or Nature is not 0 or NumberIncomplete is true or NumberingPlan is not 0 or Screening is not NETWORK_PROVIDEDprotected void decode() throws DecodeException
decode
in class AbstractLazyEncodedDataObject<byte[]>
DecodeException
- if less than 3 octets to be decoded