+ private static final int provideBase(final String integer) {
+ if (integer == null) {
+ throw new IllegalArgumentException("String representing integer number cannot be NULL");
+ }
+
+ if ((integer.length() == 1) && (integer.charAt(0) == '0')) {
+ return 10;
+ }
+
+ final Matcher intMatcher = intPattern.matcher(integer);
+ if (intMatcher.matches()) {
+ return 10;
+ } else {
+ final Matcher hexMatcher = hexPattern.matcher(integer);
+ if (hexMatcher.matches()) {
+ return 16;
+ } else {
+ final Matcher octMatcher = octalPattern.matcher(integer);
+ if (octMatcher.matches()) {
+ return 8;
+ } else {
+ String formatedMessage = String.format("Incorrect lexical representation of integer value: %s."
+ + "\nAn integer value can be defined as: "
+ + "\n - a decimal number,"
+ + "\n - a hexadecimal number (prefix 0x),"
+ + "\n - an octal number (prefix 0)."
+ + "\nSigned values are allowed. Spaces between digits are NOT allowed.", integer);
+ throw new NumberFormatException(formatedMessage);
+ }
+ }
+ }
+ }
+
+ private static String normalizeHexadecimal(final String hexInt) {
+ if (hexInt == null) {
+ throw new IllegalArgumentException(
+ "String representing integer number in Hexadecimal format cannot be NULL!");
+ }