handle NumberFormatException
caused by Integer.parseInt
This commit is contained in:
parent
ee87e43bcb
commit
221e45cd52
@ -25,6 +25,14 @@ public class Utils {
|
|||||||
return format.format(kb / 1000) + " MB (" + fileSize + " Bytes)";
|
return format.format(kb / 1000) + " MB (" + fileSize + " Bytes)";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static int parseIntSafely(String field) throws ParseException {
|
||||||
|
try {
|
||||||
|
return Integer.parseInt(field);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
throw new ParseException("Error while parsing int", -1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Parse date as per PDF spec (complies with PDF v1.4 to v1.7)
|
// Parse date as per PDF spec (complies with PDF v1.4 to v1.7)
|
||||||
public static String parseDate(String date) throws ParseException {
|
public static String parseDate(String date) throws ParseException {
|
||||||
int position = 0;
|
int position = 0;
|
||||||
@ -45,7 +53,7 @@ public class Utils {
|
|||||||
if (!TextUtils.isDigitsOnly(field)) {
|
if (!TextUtils.isDigitsOnly(field)) {
|
||||||
throw new ParseException("Invalid year", position);
|
throw new ParseException("Invalid year", position);
|
||||||
}
|
}
|
||||||
int year = Integer.parseInt(field);
|
int year = parseIntSafely(field);
|
||||||
if (year > currentYear) {
|
if (year > currentYear) {
|
||||||
year = currentYear;
|
year = currentYear;
|
||||||
}
|
}
|
||||||
@ -66,7 +74,7 @@ public class Utils {
|
|||||||
if (!TextUtils.isDigitsOnly(field)) {
|
if (!TextUtils.isDigitsOnly(field)) {
|
||||||
throw new ParseException("Invalid month", position);
|
throw new ParseException("Invalid month", position);
|
||||||
}
|
}
|
||||||
month = Integer.parseInt(field) - 1;
|
month = parseIntSafely(field) - 1;
|
||||||
if (month > 11) {
|
if (month > 11) {
|
||||||
throw new ParseException("Invalid month", position);
|
throw new ParseException("Invalid month", position);
|
||||||
}
|
}
|
||||||
@ -77,7 +85,7 @@ public class Utils {
|
|||||||
if (!TextUtils.isDigitsOnly(field)) {
|
if (!TextUtils.isDigitsOnly(field)) {
|
||||||
throw new ParseException("Invalid day", position);
|
throw new ParseException("Invalid day", position);
|
||||||
}
|
}
|
||||||
day = Integer.parseInt(field);
|
day = parseIntSafely(field);
|
||||||
if (day > 31) {
|
if (day > 31) {
|
||||||
throw new ParseException("Invalid day", position);
|
throw new ParseException("Invalid day", position);
|
||||||
}
|
}
|
||||||
@ -88,7 +96,7 @@ public class Utils {
|
|||||||
if (!TextUtils.isDigitsOnly(field)) {
|
if (!TextUtils.isDigitsOnly(field)) {
|
||||||
throw new ParseException("Invalid hours", position);
|
throw new ParseException("Invalid hours", position);
|
||||||
}
|
}
|
||||||
hours = Integer.parseInt(field);
|
hours = parseIntSafely(field);
|
||||||
if (hours > 23) {
|
if (hours > 23) {
|
||||||
throw new ParseException("Invalid hours", position);
|
throw new ParseException("Invalid hours", position);
|
||||||
}
|
}
|
||||||
@ -99,7 +107,7 @@ public class Utils {
|
|||||||
if (!TextUtils.isDigitsOnly(field)) {
|
if (!TextUtils.isDigitsOnly(field)) {
|
||||||
throw new ParseException("Invalid minutes", position);
|
throw new ParseException("Invalid minutes", position);
|
||||||
}
|
}
|
||||||
minutes = Integer.parseInt(field);
|
minutes = parseIntSafely(field);
|
||||||
if (minutes > 59) {
|
if (minutes > 59) {
|
||||||
throw new ParseException("Invalid minutes", position);
|
throw new ParseException("Invalid minutes", position);
|
||||||
}
|
}
|
||||||
@ -110,7 +118,7 @@ public class Utils {
|
|||||||
if (!TextUtils.isDigitsOnly(field)) {
|
if (!TextUtils.isDigitsOnly(field)) {
|
||||||
throw new ParseException("Invalid seconds", position);
|
throw new ParseException("Invalid seconds", position);
|
||||||
}
|
}
|
||||||
seconds = Integer.parseInt(field);
|
seconds = parseIntSafely(field);
|
||||||
if (seconds > 59) {
|
if (seconds > 59) {
|
||||||
throw new ParseException("Invalid seconds", position);
|
throw new ParseException("Invalid seconds", position);
|
||||||
}
|
}
|
||||||
@ -134,7 +142,7 @@ public class Utils {
|
|||||||
if (!TextUtils.isDigitsOnly(field)) {
|
if (!TextUtils.isDigitsOnly(field)) {
|
||||||
throw new ParseException("Invalid UTC offset hours", position);
|
throw new ParseException("Invalid UTC offset hours", position);
|
||||||
}
|
}
|
||||||
offsetHours = Integer.parseInt(field);
|
offsetHours = parseIntSafely(field);
|
||||||
final int offsetHoursMinutes = offsetHours * 100 + offsetMinutes;
|
final int offsetHoursMinutes = offsetHours * 100 + offsetMinutes;
|
||||||
|
|
||||||
// Validate UTC offset (UTC-12:00 to UTC+14:00)
|
// Validate UTC offset (UTC-12:00 to UTC+14:00)
|
||||||
@ -157,7 +165,7 @@ public class Utils {
|
|||||||
if (!TextUtils.isDigitsOnly(field)) {
|
if (!TextUtils.isDigitsOnly(field)) {
|
||||||
throw new ParseException("Invalid UTC offset minutes", position);
|
throw new ParseException("Invalid UTC offset minutes", position);
|
||||||
}
|
}
|
||||||
offsetMinutes = Integer.parseInt(field);
|
offsetMinutes = parseIntSafely(field);
|
||||||
if (offsetMinutes > 59) {
|
if (offsetMinutes > 59) {
|
||||||
throw new ParseException("Invalid UTC offset minutes", position);
|
throw new ParseException("Invalid UTC offset minutes", position);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user