1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.openehealth.ipf.commons.ihe.xds.core.validate;
17
18 import org.openehealth.ipf.commons.core.modules.api.ValidationException;
19 import org.openehealth.ipf.commons.ihe.xds.core.transform.requests.QueryParameter;
20
21
22
23
24
25
26 public class XDSMetaDataException extends ValidationException {
27 private static final long serialVersionUID = -394009702858390335L;
28
29 private final ValidationMessage validationMessage;
30
31
32
33
34
35
36
37
38 public XDSMetaDataException(ValidationMessage validationMessage, Object... details) {
39 super(String.format(validationMessage.getText(), unwrapQueryParameterNames(details)));
40 this.validationMessage = validationMessage;
41 }
42
43
44
45
46 public ValidationMessage getValidationMessage() {
47 return validationMessage;
48 }
49
50
51
52
53
54
55
56
57
58
59
60 private static Object[] unwrapQueryParameterNames(Object[] array) {
61 for (int i = 0; i < array.length; ++i) {
62 if (array[i] instanceof QueryParameter) {
63 QueryParameter param = (QueryParameter) array[i];
64 array[i] = param.getSlotName();
65 }
66 else if (array[i] instanceof QueryParameter[]) {
67 QueryParameter[] params = (QueryParameter[]) array[i];
68 if (params.length > 0) {
69 StringBuilder sb = new StringBuilder();
70 for (QueryParameter param : params) {
71 sb.append(", ").append(param.getSlotName());
72 }
73 array[i] = sb.replace(0, 2, "[").append(']').toString();
74 }
75 }
76 }
77 return array;
78 }
79
80 }