1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.creadur.whisker.model;
20
21 import java.util.Collection;
22 import java.util.Map;
23
24
25
26
27
28 public class LicenseTemplateException extends Exception {
29
30
31 private static final long serialVersionUID = -4085365930968672572L;
32
33 private final String licenseName;
34
35
36
37
38
39
40
41
42
43 public static LicenseTemplateException parameterMismatch(
44 final Collection<String> expectedParameters,
45 final Collection<String> actualParameters,
46 final String licenseName) {
47 final StringBuilder message = new StringBuilder("Parameter mismatch for license '");
48 message.append(licenseName);
49 message.append('.');
50 explainDiffs(expectedParameters, actualParameters, message, " Missing parameters: ");
51 explainDiffs(actualParameters, expectedParameters, message, " Unexpected parameters: ");
52 return new LicenseTemplateException(message.toString(), licenseName);
53 }
54
55
56
57
58
59
60
61
62 private static void explainDiffs(final Collection<String> sample,
63 final Collection<String> base, final StringBuilder message,
64 final String preamble) {
65 boolean first = true;
66 for (final String expected:sample) {
67 if (!base.contains(expected)) {
68 if (first) {
69 first = false;
70 message.append(preamble);
71 } else {
72 message.append(", ");
73 }
74 message.append(expected);
75 }
76 }
77 if (!first) {
78 message.append('.');
79 }
80 }
81
82
83
84
85
86
87
88
89 public static LicenseTemplateException notLicenseTemplate(
90 final Map<String, String> parameters, final String licenseName) {
91 final StringBuilder message = new StringBuilder("'");
92 message.append(licenseName);
93 message.append("' is not a templated license but parameters were set (");
94 boolean first = true;
95 for (final String name:parameters.keySet()) {
96 if (first) {
97 first = false;
98 } else {
99 message.append(", ");
100 }
101 message.append(name);
102 }
103 message.append(")");
104 return new LicenseTemplateException(message.toString(), licenseName);
105 }
106
107
108
109
110
111
112
113 private LicenseTemplateException(final String message, final String licenseName) {
114 super(message);
115 this.licenseName = licenseName;
116 }
117
118
119
120
121
122 public String getLicenseName() {
123 return licenseName;
124 }
125
126
127 }