Advertisement
Guest User

Untitled

a guest
Jun 24th, 2019
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.40 KB | None | 0 0
  1. import java.util.Optional;
  2.  
  3. class Scratch {
  4.     public static void main(String[] args) {
  5.         checkAmount();
  6.         checkPrice();
  7.     }
  8.  
  9.     private static Optional<ValidationException> checkPrice() {
  10.         Optional<ValidationException> optionalError = Optional.of(new ValidationException(ValidationException.NULL_FIELD, "Field %s is null"));
  11.        
  12.         if (optionalError.isPresent()) {
  13.             ValidationException exception = optionalError.get();
  14.             exception.enhance(PutOrderValidationCodePair.PRICE_FIELD);
  15.             return optionalError;
  16.         }
  17.         return Optional.empty();
  18.     }
  19.  
  20.     private static Optional<ValidationException> checkAmount() {
  21.         Optional<ValidationException> optionalError = Optional.of(new ValidationException(ValidationException.NULL_FIELD, "%s is greater that 1000"));
  22.  
  23.         if (optionalError.isPresent()) {
  24.             ValidationException exception = optionalError.get();
  25.             exception.enhance(PutOrderValidationCodePair.AMOUNT_FIELD);
  26.             return optionalError;
  27.         }
  28.         return Optional.empty();
  29.     }
  30. }
  31.  
  32. class ValidationException extends IllegalArgumentException {
  33.  
  34.     public static int NULL_FIELD = 0;
  35.     public static int IS_GREATER = 1;
  36.     public static int IS_LOWER = 2;
  37.  
  38.     protected int code;
  39.     protected String formatText;
  40.  
  41.     protected ValidationException(int code, String formatText) {
  42.         this.formatText = formatText;
  43.         this.code = code;
  44.     }
  45.  
  46.     public void enhance(ValidationCodePair codePair) {
  47.         code += codePair.getCode();
  48.         formatText = String.format(formatText, codePair.getFieldName());
  49.     }
  50.  
  51.     public int getCode() {
  52.         return this.code;
  53.     }
  54.  
  55.     @Override
  56.     public String getMessage() {
  57.         return formatText;
  58.     }
  59. }
  60.  
  61. interface ValidationCodePair {
  62.    
  63.     int getCode();
  64.    
  65.     String getFieldName();
  66.    
  67. }
  68.  
  69. enum PutOrderValidationCodePair implements ValidationCodePair {
  70.  
  71.     AMOUNT_FIELD(10, "Amount"),
  72.     PRICE_FIELD(20, "Price");
  73.    
  74.     private final int code;
  75.     private final String fieldName;
  76.  
  77.     private PutOrderValidationCodePair(int code, String fieldName) {
  78.         this.code = code;
  79.         this.fieldName = fieldName;
  80.     }
  81.  
  82.     @Override
  83.     public int getCode() {
  84.         return code;
  85.     }
  86.  
  87.     @Override
  88.     public String getFieldName() {
  89.         return fieldName;
  90.     }
  91.  
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement