FINERACT-2181: Improve DateFormat class code quality
This commit is contained in:
+17
-11
@@ -28,19 +28,26 @@ import lombok.Getter;
|
|||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException;
|
import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException;
|
||||||
|
|
||||||
|
@Getter
|
||||||
public class DateFormat {
|
public class DateFormat {
|
||||||
|
|
||||||
@Getter
|
private static final String INVALID_DATE_FORMAT_MESSAGE = "validation.msg.invalid.dateFormat.format";
|
||||||
|
private static final String VALIDATION_ERROR_MESSAGE = "Validation errors exist.";
|
||||||
|
private static final String DATE_FORMAT_NULL_MESSAGE = "Dateformat is null";
|
||||||
|
private static final String INVALID_DATE_FORMAT_PREFIX = "Invalid dateFormat: `";
|
||||||
|
private static final String TIME_PATTERN = " HH:mm:ss";
|
||||||
|
private static final String YEAR_PATTERN_OLD = "yyyy";
|
||||||
|
private static final String YEAR_PATTERN_NEW = "uuuu";
|
||||||
|
|
||||||
private final String dateFormat;
|
private final String dateFormat;
|
||||||
|
|
||||||
public DateFormat(String rawDateFormat) {
|
public DateFormat(String rawDateFormat) {
|
||||||
if (StringUtils.isBlank(rawDateFormat)) {
|
if (StringUtils.isBlank(rawDateFormat)) {
|
||||||
final ApiParameterError error = ApiParameterError.parameterError("validation.msg.invalid.dateFormat.format",
|
final ApiParameterError error = ApiParameterError.parameterError(INVALID_DATE_FORMAT_MESSAGE, DATE_FORMAT_NULL_MESSAGE,
|
||||||
"Dateformat is null", rawDateFormat);
|
rawDateFormat);
|
||||||
throw new PlatformApiDataValidationException("validation.msg.invalid.dateFormat.format", "Validation errors exist.",
|
throw new PlatformApiDataValidationException(INVALID_DATE_FORMAT_MESSAGE, VALIDATION_ERROR_MESSAGE, List.of(error));
|
||||||
List.of(error));
|
|
||||||
} else {
|
} else {
|
||||||
String compatibleDateFormat = rawDateFormat.replace("yyyy", "uuuu");
|
String compatibleDateFormat = rawDateFormat.replace(YEAR_PATTERN_OLD, YEAR_PATTERN_NEW);
|
||||||
validate(compatibleDateFormat);
|
validate(compatibleDateFormat);
|
||||||
dateFormat = compatibleDateFormat;
|
dateFormat = compatibleDateFormat;
|
||||||
}
|
}
|
||||||
@@ -49,14 +56,13 @@ public class DateFormat {
|
|||||||
private void validate(String dateTimeFormat) {
|
private void validate(String dateTimeFormat) {
|
||||||
try {
|
try {
|
||||||
DateTimeFormatter formatter = new DateTimeFormatterBuilder().parseCaseInsensitive().parseLenient().appendPattern(dateTimeFormat)
|
DateTimeFormatter formatter = new DateTimeFormatterBuilder().parseCaseInsensitive().parseLenient().appendPattern(dateTimeFormat)
|
||||||
.optionalStart().appendPattern(" HH:mm:ss").optionalEnd().parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
|
.optionalStart().appendPattern(TIME_PATTERN).optionalEnd().parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
|
||||||
.parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0).parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0).toFormatter()
|
.parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0).parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0).toFormatter()
|
||||||
.withResolverStyle(ResolverStyle.STRICT);
|
.withResolverStyle(ResolverStyle.STRICT);
|
||||||
} catch (final IllegalArgumentException | DateTimeParseException e) {
|
} catch (final IllegalArgumentException | DateTimeParseException e) {
|
||||||
final ApiParameterError error = ApiParameterError.parameterError("validation.msg.invalid.dateFormat.format",
|
final ApiParameterError error = ApiParameterError.parameterError(INVALID_DATE_FORMAT_MESSAGE,
|
||||||
"Invalid dateFormat: `" + dateTimeFormat, dateTimeFormat);
|
INVALID_DATE_FORMAT_PREFIX + dateTimeFormat, dateTimeFormat);
|
||||||
throw new PlatformApiDataValidationException("validation.msg.invalid.dateFormat.format", "Validation errors exist.",
|
throw new PlatformApiDataValidationException(INVALID_DATE_FORMAT_MESSAGE, VALIDATION_ERROR_MESSAGE, List.of(error), e);
|
||||||
List.of(error), e);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user