Class ISOUtil
java.lang.Object
org.jpos.iso.ISOUtil
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final CharsetDefault charset for bytes transmissions over networkstatic final Charsetstatic final StringDeprecated.static final bytestatic final bytestatic final bytestatic final String[]static final bytestatic final bytestatic final Patternstatic final byte -
Constructor Summary
ConstructorsConstructorDescriptionISOUtil()All methods in this class are static, so there's usually no need to instantiate it We provide this public constructor in order to deal with some legacy script integration that needs an instance of this class in a rendering context. -
Method Summary
Modifier and TypeMethodDescriptionstatic byte[]asciiToEbcdic(byte[] a) static voidasciiToEbcdic(byte[] s, byte[] e, int offset) static byte[]static voidasciiToEbcdic(String s, byte[] e, int offset) static Stringbcd2str(byte[] b, int offset, int len, boolean padLeft) converts a BCD representation of a number to a Stringstatic byte[]converts a BitSet into a binary field used in pack routines This method will set bits 0 (and 65) if there's a secondary (and tertiary) bitmap (i.e., if the bitmap length is > 64 (and > 128))static byte[]bitSet2byte(BitSet b, int bytes) converts a BitSet into a binary field used in pack routines This method will set bits 0 (and 65) if there's a secondary (and tertiary) bitmap (i.e., if the bitmap length is > 64 (and > 128))static byte[]Converts a BitSet into an extended binary field used in pack routines.static intbitSet2Int(BitSet bs) static Stringbit representation of a BitSet suitable for dumps and debuggingstatic StringblankUnPad(String s) Right unPad with ' 'static BitSetbyte2BitSet(byte[] b, int offset, boolean bitZeroMeansExtended) Converts a binary representation of a Bitmap field into a Java BitSetstatic BitSetbyte2BitSet(byte[] b, int offset, int maxBits) Converts a binary representation of a Bitmap field into a Java BitSetstatic BitSetbyte2BitSet(BitSet bmap, byte[] b, int bitOffset) Converts a binary representation of a Bitmap field into a Java BitSet.static Stringbyte2hex(byte[] bs) Converts a byte array into a hex stringstatic Stringbyte2hex(byte[] bs, int off, int length) Converts a byte array into a string of lower case hex chars.static intbyte2int(byte[] bytes) Converts a byte array of hex into an integerstatic charCompute card's check digit (LUHN)static String[]charDecode(char delimiter, String s) Decodes a char encoded String as encoded by charEncodestatic StringcharDecode(String s, char delimiter, int i) Decodes a char encoded String returning element in position istatic StringcharEncode(char delimiter, String... ss) Converts a string[] or multiple strings into one char-delimited String.static String[]Decodes a comma encoded String as encoded by commaEncodestatic StringcommaDecode(String s, int i) Decodes a comma encoded String returning element in position istatic StringcommaEncode(String... ss) Converts a string[] or multiple strings into one comma-delimited String.static byte[]concat(byte[] array1, byte[] array2) Concatenates two byte arrays (array1 and array2)static byte[]concat(byte[] array1, int beginIndex1, int length1, byte[] array2, int beginIndex2, int length2) Concatenates two byte arrays (array1 and array2)static byte[]static StringdumpString(byte[] b) converts a byte array to printable charactersstatic StringebcdicToAscii(byte[] e) static StringebcdicToAscii(byte[] e, int offset, int len) static byte[]ebcdicToAsciiBytes(byte[] e) static byte[]ebcdicToAsciiBytes(byte[] e, int offset, int len) static StringformatAmount(long l, int len) prepare long value used as amount for display (implicit 2 decimals)static StringformatAmountConversionRate(double convRate) Format a string containing a amount conversion rate in the proper formatstatic StringformatDouble(double d, int len) format double valuestatic StringgetRandomDigits(Random r, int l, int radix) static BitSethex2BitSet(byte[] b, int offset, boolean bitZeroMeansExtended) Converts an ASCII representation of a Bitmap field into a Java BitSetstatic BitSethex2BitSet(byte[] b, int offset, int maxBits) Converts an ASCII representation of a Bitmap field into a Java BitSetstatic BitSethex2BitSet(BitSet bmap, byte[] b, int bitOffset) Converts an ASCII representation of a Bitmap field into a Java BitSetstatic byte[]hex2byte(byte[] b, int offset, int len) static byte[]Converts a hex string into a byte arraystatic byte[]Converts a hex string into a byte arraystatic Stringhex2str(byte[] b, int offset, int len, boolean padLeft) converts a a byte array to a String with padding supportstatic Stringhexdump(byte[] b) static Stringhexdump(byte[] b, int offset) static Stringhexdump(byte[] b, int offset, int len) static StringAt times when the charset is not the default usual one the dump will have more unprintable characters than printable.static StringBitwise XOR between corresponding byte arrays represented in hexstatic StringhexString(byte[] b) converts a byte array to hex string (suitable for dumps and ASCII packaging of Binary fieldsstatic StringhexString(byte[] b, int offset, int len) converts a byte array to hex string (suitable for dumps and ASCII packaging of Binary fieldsstatic BitSetint2BitSet(int value) static BitSetint2BitSet(int value, int offset) static byte[]int2byte(int value) Converts an integer into a byte array of hexstatic booleanReturn true if the string is alphanum.static booleanstatic booleanReturn true if the string represent a number in the specified radix.static booleanstatic StringmillisToString(long millis) static StringXML normalizer (default canonical)static StringXML normalizerstatic byte[]padISO9797Method2(byte[] data) Padsdataas per ISO/IEC 9797-1, method 2.static Stringpad to the leftstatic Stringpad to the rightstatic doubleparseAmountConversionRate(String convRate) Parse currency amount conversion rate stringstatic intparseInt(byte[] bArray) Converts a byte array to an integer of radix 10.static intparseInt(byte[] bArray, int radix) Converts a byte array to an integer of base radix.static intparseInt(char[] cArray) Converts a character array to an integer of radix 10.static intparseInt(char[] cArray, int radix) Converts a character array to an integer of base radix.static intConverts a String to an integer of radix 10.static intConverts a String to an integer of base radix.static Stringstatic StringProtects PAN, Track2, CVC (suitable for logs).static StringreadableFileSize(long size) static voidsleep(long millis) Causes the currently executing thread to sleep (temporarily cease execution) for the specified number of milliseconds.static byte[]converts to BCDstatic byte[]converts to BCDstatic byte[]converts to BCDstatic byte[]converts to BCDstatic Stringstatic Stringpads to the rightstatic Stringpads a string with 'F's (useful for pinoffset management)static StringtakeFirstN(String s, int n) return the first n characters of the passed String, left padding where required with 0static Stringreturn the last n characters of the passed String, left padding where required with 0static Stringstatic int[]toIntArray(String s) static Stringstatic String[]static StringtoUnicodeString(String input) static byte[]trim(byte[] array, int length) Trims a byte[] to a certain lengthstatic Stringtrim String (if not null)static Stringreverse the effect of strpadfstatic StringUnpad from left.static StringunPadRight(String s, char c) Unpad from right.static byte[]xor(byte[] op1, byte[] op2) Bitwise XOR between corresponding bytesstatic Stringzeropad(long l, int len) zeropads a long without throwing an ISOException (performs modulus operation)static Stringleft pad with '0'static StringzeropadRight(String s, int len) static StringLeft unPad with '0'
-
Field Details
-
hexStrings
-
ENCODING
Deprecated.useCHARSETinsteadDefault encoding (charset) for bytes transmissions over network- See Also:
-
unicodePattern
-
CHARSET
-
EBCDIC
-
STX
- See Also:
-
FS
- See Also:
-
US
- See Also:
-
RS
- See Also:
-
GS
- See Also:
-
ETX
- See Also:
-
-
Constructor Details
-
ISOUtil
public ISOUtil()All methods in this class are static, so there's usually no need to instantiate it We provide this public constructor in order to deal with some legacy script integration that needs an instance of this class in a rendering context.
-
-
Method Details
-
ebcdicToAscii
-
ebcdicToAscii
-
ebcdicToAsciiBytes
-
ebcdicToAsciiBytes
-
asciiToEbcdic
-
asciiToEbcdic
-
asciiToEbcdic
-
asciiToEbcdic
-
padleft
pad to the left- Parameters:
s- - original stringlen- - desired lenc- - padding char- Returns:
- padded string
- Throws:
ISOException- on error
-
padright
pad to the right- Parameters:
s- - original stringlen- - desired lenc- - padding char- Returns:
- padded string
- Throws:
ISOException- if String's length greater than pad length
-
trim
-
zeropad
left pad with '0'- Parameters:
s- - original stringlen- - desired len- Returns:
- zero padded string
- Throws:
ISOException- if string's length greater than len
-
zeropad
-
strpad
-
zeropadRight
-
padISO9797Method2
Padsdataas per ISO/IEC 9797-1, method 2.- Parameters:
data- Data to be padded.- Returns:
- Returns
datapadded as per ISO/IEC 9797-1, method 2.
-
str2bcd
-
str2hex
-
str2bcd
-
str2bcd
-
bcd2str
-
hex2str
converts a a byte array to a String with padding support- Parameters:
b- - HEX representationoffset- - starting offsetlen- - BCD field lenpadLeft- - was padLeft packed?- Returns:
- the String representation of the number
-
hexString
-
dumpString
converts a byte array to printable characters- Parameters:
b- - byte array- Returns:
- String representation
-
hexString
-
bitSet2String
bit representation of a BitSet suitable for dumps and debugging- Parameters:
b- - the BitSet- Returns:
- string representing the bits (i.e. 011010010...)
-
bitSet2byte
converts a BitSet into a binary field used in pack routines This method will set bits 0 (and 65) if there's a secondary (and tertiary) bitmap (i.e., if the bitmap length is > 64 (and > 128))- Parameters:
b- - the BitSet- Returns:
- binary representation
-
bitSet2byte
converts a BitSet into a binary field used in pack routines This method will set bits 0 (and 65) if there's a secondary (and tertiary) bitmap (i.e., if the bitmap length is > 64 (and > 128))- Parameters:
b- - the BitSetbytes- - number of bytes to return- Returns:
- binary representation
-
bitSet2Int
-
int2BitSet
-
int2BitSet
-
byte2BitSet
Converts a binary representation of a Bitmap field into a Java BitSet- Parameters:
b- - binary representationoffset- - staring offsetbitZeroMeansExtended- - true for ISO-8583- Returns:
- java BitSet object
-
byte2BitSet
Converts a binary representation of a Bitmap field into a Java BitSet- Parameters:
b- - binary representationoffset- - staring offsetmaxBits- - max number of bits (supports 64,128 or 192)- Returns:
- java BitSet object
-
byte2BitSet
Converts a binary representation of a Bitmap field into a Java BitSet. The byte[] will be fully consumed, and fed into the given BitSet starting at bitOffset+1- Parameters:
bmap- - BitSetb- - hex representationbitOffset- - (i.e. 0 for primary bitmap, 64 for secondary)- Returns:
- the same java BitSet object given as first argument
-
hex2BitSet
Converts an ASCII representation of a Bitmap field into a Java BitSet- Parameters:
b- - hex representationoffset- - starting offsetbitZeroMeansExtended- - true for ISO-8583- Returns:
- java BitSet object
-
hex2BitSet
Converts an ASCII representation of a Bitmap field into a Java BitSet- Parameters:
b- - hex representationoffset- - starting offsetmaxBits- - max number of bits (supports 8, 16, 24, 32, 48, 52, 64,.. 128 or 192)- Returns:
- java BitSet object
-
hex2BitSet
Converts an ASCII representation of a Bitmap field into a Java BitSet- Parameters:
bmap- - BitSetb- - hex representationbitOffset- - (i.e. 0 for primary bitmap, 64 for secondary)- Returns:
- java BitSet object
-
hex2byte
- Parameters:
b- source byte arrayoffset- starting offsetlen- number of bytes in destination (processes len*2)- Returns:
- byte[len]
-
hex2byte
-
hex2byte
-
byte2hex
-
int2byte
Converts an integer into a byte array of hex- Parameters:
value-- Returns:
- bytes representation of integer
-
byte2int
Converts a byte array of hex into an integer- Parameters:
bytes-- Returns:
- integer representation of bytes
-
byte2hex
-
formatDouble
format double value- Parameters:
d- the amountlen- the field len- Returns:
- a String of fieldLen characters (right justified)
-
formatAmount
prepare long value used as amount for display (implicit 2 decimals)- Parameters:
l- valuelen- display len- Returns:
- formated field
- Throws:
ISOException
-
normalize
-
stripUnicode
-
normalize
-
protect
Protects PAN, Track2, CVC (suitable for logs)."40000101010001" is converted to "400001____0001" "40000101010001=020128375" is converted to "400001____0001=0201_____" "40000101010001D020128375" is converted to "400001____0001D0201_____" "123" is converted to "___"
- Parameters:
s- string to be protectedmask- char used to protect the string- Returns:
- 'protected' String
-
protect
-
toIntArray
-
toStringArray
-
xor
Bitwise XOR between corresponding bytes- Parameters:
op1- byteArray1op2- byteArray2- Returns:
- an array of length = the smallest between op1 and op2
-
hexor
-
trim
Trims a byte[] to a certain length- Parameters:
array- the byte[] to be trimmedlength- the wanted length- Returns:
- the trimmed byte[]
-
concat
Concatenates two byte arrays (array1 and array2)- Parameters:
array1- first partarray2- last part- Returns:
- the concatenated array
-
concat
public static byte[] concat(byte[] array1, int beginIndex1, int length1, byte[] array2, int beginIndex2, int length2) Concatenates two byte arrays (array1 and array2)- Parameters:
array1- first partbeginIndex1- initial indexlength1- lengtharray2- last partbeginIndex2- last part indexlength2- last part length- Returns:
- the concatenated array
-
sleep
Causes the currently executing thread to sleep (temporarily cease execution) for the specified number of milliseconds. The thread does not lose ownership of any monitors.- Parameters:
millis- the length of time to sleep in milliseconds.
-
zeroUnPad
-
blankUnPad
Right unPad with ' '- Parameters:
s- - original string- Returns:
- blank unPadded string
-
unPadRight
Unpad from right.- Parameters:
s- - original stringc- - padding char- Returns:
- unPadded string.
-
unPadLeft
-
isZero
-
isBlank
-
isAlphaNumeric
Return true if the string is alphanum. -
isNumeric
-
bitSet2extendedByte
Converts a BitSet into an extended binary field used in pack routines. The result is always in the extended format: (16 bytes of length)- Parameters:
b- the BitSet- Returns:
- binary representation
-
parseInt
Converts a String to an integer of base radix.
String constraints are:- Number must be less than 10 digits
- Number must be positive
- Parameters:
s- String representation of numberradix- Number base to use- Returns:
- integer value of number
- Throws:
NumberFormatException
-
parseInt
Converts a String to an integer of radix 10.
String constraints are:- Number must be less than 10 digits
- Number must be positive
- Parameters:
s- String representation of number- Returns:
- integer value of number
- Throws:
NumberFormatException
-
parseInt
Converts a character array to an integer of base radix.
Array constraints are:- Number must be less than 10 digits
- Number must be positive
- Parameters:
cArray- Character Array representation of numberradix- Number base to use- Returns:
- integer value of number
- Throws:
NumberFormatException
-
parseInt
Converts a character array to an integer of radix 10.
Array constraints are:- Number must be less than 10 digits
- Number must be positive
- Parameters:
cArray- Character Array representation of number- Returns:
- integer value of number
- Throws:
NumberFormatException
-
parseInt
Converts a byte array to an integer of base radix.
Array constraints are:- Number must be less than 10 digits
- Number must be positive
- Parameters:
bArray- Byte Array representation of numberradix- Number base to use- Returns:
- integer value of number
- Throws:
NumberFormatException
-
parseInt
Converts a byte array to an integer of radix 10.
Array constraints are:- Number must be less than 10 digits
- Number must be positive
- Parameters:
bArray- Byte Array representation of number- Returns:
- integer value of number
- Throws:
NumberFormatException
-
hexdump
-
hexdump
-
hexdump
-
strpadf
-
trimf
-
takeLastN
return the last n characters of the passed String, left padding where required with 0- Parameters:
s- String to take fromn- nuber of characters to take- Returns:
- String (may be null)
- Throws:
ISOException
-
takeFirstN
return the first n characters of the passed String, left padding where required with 0- Parameters:
s- String to take fromn- nuber of characters to take- Returns:
- String (may be null)
- Throws:
ISOException
-
millisToString
-
formatAmountConversionRate
Format a string containing a amount conversion rate in the proper format Format: The leftmost digit (i.e., position 1) of this data element denotes the number of positions the decimal separator must be moved from the right. Positions 2–8 of this data element specify the rate. For example, a conversion rate value of 91234567 in this data element would equate to 0.001234567.- Parameters:
convRate- - amount conversion rate- Returns:
- a string containing a amount conversion rate in the proper format, witch is suitable for create fields 10 and 11
- Throws:
ISOException
-
parseAmountConversionRate
Parse currency amount conversion rate string Suitble for parse fields 10 and 11- Parameters:
convRate- amount conversation rate- Returns:
- parsed currency amount conversation rate
- Throws:
IllegalArgumentException
-
commaEncode
Converts a string[] or multiple strings into one comma-delimited String. Takes care of escaping commas using a backlash- Parameters:
ss- string array to be comma encoded- Returns:
- comma encoded string
- See Also:
-
commaDecode
Decodes a comma encoded String as encoded by commaEncode- Parameters:
s- the command encoded String- Returns:
- String[]
- See Also:
-
commaDecode
Decodes a comma encoded String returning element in position i- Parameters:
s- comma encoded stringi- position (starts at 0)- Returns:
- element in position i of comma encoded string, or null
-
calcLUHN
-
getRandomDigits
-
readableFileSize
-
hexDump
At times when the charset is not the default usual one the dump will have more unprintable characters than printable. The charset will allow printing of more printable character. Usually when your data is in EBCDIC format you will run into this. The standard hexdump that exists would print a byte array of F0F1F2 as F0 F1 F2 ... This hexdump, if the Charset.forName("IBM1047") is passedin as charset will print F0 F1 F2 | 123- Parameters:
array- the array that needs to be dumped.offset- From where the data needs to be dumped.length- The number of byte that ned to be dumped.charSet- The Charset encoding the array is i.- Returns:
- The hexdump string.
-
decodeHexDump
-
charEncode
Converts a string[] or multiple strings into one char-delimited String. Takes care of escaping char using a backlash NOTE: for backward compatibility, an empty String returns a zero-length array- Parameters:
delimiter- char used to delimitss- string array to be char encoded- Returns:
- char encoded string
- See Also:
-
charDecode
Decodes a char encoded String as encoded by charEncode- Parameters:
delimiter- char used to delimits- the char encoded String- Returns:
- String[]
- See Also:
-
charDecode
Decodes a char encoded String returning element in position i- Parameters:
s- comma encoded stringdelimiter- char used to delimiti- position (starts at 0)- Returns:
- element in position i of comma encoded string, or empty
-
toUnicodeString
-
toASCII
-
toLatin
-
CHARSETinstead