1 package io.extact.rms.client.api.exception;
2
3 import java.util.List;
4 import java.util.stream.Collectors;
5
6 public class ValidateClientException extends RentalReservationClientException {
7
8 private final transient ValidationErrorMessage errorMessage;
9
10 public ValidateClientException(ValidationErrorMessage errorMessage) {
11 super("サーバ側でバリデーションエラーが発生しました");
12 this.errorMessage = errorMessage;
13 }
14
15 @Override
16 public String getMessage() {
17 String detailMessage = errorMessage.getErrorItems().stream()
18 .map(t -> t.getFieldName() + ":" + t.getMessage())
19 .collect(Collectors.joining(","));
20 return super.getMessage() + System.lineSeparator() + detailMessage;
21 }
22
23 public static class ValidationErrorMessage {
24 private String errorReason;
25 private String errorMessage;
26 private List<ValidationErrorItem> errorItems;
27
28 public String getErrorReason() {
29 return errorReason;
30 }
31 public void setErrorReason(String errorReason) {
32 this.errorReason = errorReason;
33 }
34 public String getErrorMessage() {
35 return errorMessage;
36 }
37 public void setErrorMessage(String errorMessage) {
38 this.errorMessage = errorMessage;
39 }
40 public List<ValidationErrorItem> getErrorItems() {
41 return errorItems;
42 }
43 public void setErrorItems(List<ValidationErrorItem> errorItems) {
44 this.errorItems = errorItems;
45 }
46 }
47
48 public static class ValidationErrorItem {
49 private String fieldName;
50 private String message;
51 public String getFieldName() {
52 return fieldName;
53 }
54 public void setFieldName(String fieldName) {
55 this.fieldName = fieldName;
56 }
57 public String getMessage() {
58 return message;
59 }
60 public void setMessage(String message) {
61 this.message = message;
62 }
63 }
64 }