Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Optional;
- class Scratch {
- public static void main(String[] args) {
- checkAmount();
- checkPrice();
- }
- private static Optional<ValidationException> checkPrice() {
- Optional<ValidationException> optionalError = Optional.of(new ValidationException(ValidationException.NULL_FIELD, "Field %s is null"));
- if (optionalError.isPresent()) {
- ValidationException exception = optionalError.get();
- exception.enhance(PutOrderValidationCodePair.PRICE_FIELD);
- return optionalError;
- }
- return Optional.empty();
- }
- private static Optional<ValidationException> checkAmount() {
- Optional<ValidationException> optionalError = Optional.of(new ValidationException(ValidationException.NULL_FIELD, "%s is greater that 1000"));
- if (optionalError.isPresent()) {
- ValidationException exception = optionalError.get();
- exception.enhance(PutOrderValidationCodePair.AMOUNT_FIELD);
- return optionalError;
- }
- return Optional.empty();
- }
- }
- class ValidationException extends IllegalArgumentException {
- public static int NULL_FIELD = 0;
- public static int IS_GREATER = 1;
- public static int IS_LOWER = 2;
- protected int code;
- protected String formatText;
- protected ValidationException(int code, String formatText) {
- this.formatText = formatText;
- this.code = code;
- }
- public void enhance(ValidationCodePair codePair) {
- code += codePair.getCode();
- formatText = String.format(formatText, codePair.getFieldName());
- }
- public int getCode() {
- return this.code;
- }
- @Override
- public String getMessage() {
- return formatText;
- }
- }
- interface ValidationCodePair {
- int getCode();
- String getFieldName();
- }
- enum PutOrderValidationCodePair implements ValidationCodePair {
- AMOUNT_FIELD(10, "Amount"),
- PRICE_FIELD(20, "Price");
- private final int code;
- private final String fieldName;
- private PutOrderValidationCodePair(int code, String fieldName) {
- this.code = code;
- this.fieldName = fieldName;
- }
- @Override
- public int getCode() {
- return code;
- }
- @Override
- public String getFieldName() {
- return fieldName;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement