1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.rat.api;
20
21 import java.util.ArrayList;
22 import java.util.Collection;
23 import java.util.Collections;
24 import java.util.Iterator;
25 import java.util.List;
26
27 import org.apache.commons.lang3.StringUtils;
28 import org.apache.rat.license.ILicense;
29
30
31
32
33 public class MetaData {
34
35 public static final String RAT_BASE_URL = "http://org/apache/rat/meta-data";
36
37
38 public static final String RAT_URL_DOCUMENT_CATEGORY = RAT_BASE_URL + "#FileCategory";
39 public static final String RAT_DOCUMENT_CATEGORY_VALUE_GENERATED = "GEN ";
40 public static final String RAT_DOCUMENT_CATEGORY_VALUE_UNKNOWN = "?????";
41 public static final String RAT_DOCUMENT_CATEGORY_VALUE_ARCHIVE = "archive";
42 public static final String RAT_DOCUMENT_CATEGORY_VALUE_NOTICE = "notice";
43 public static final String RAT_DOCUMENT_CATEGORY_VALUE_BINARY = "binary";
44 public static final String RAT_DOCUMENT_CATEGORY_VALUE_STANDARD = "standard";
45 public static final Datum RAT_DOCUMENT_CATEGORY_DATUM_GENERATED = new Datum(RAT_URL_DOCUMENT_CATEGORY, RAT_DOCUMENT_CATEGORY_VALUE_GENERATED);
46 public static final Datum RAT_DOCUMENT_CATEGORY_DATUM_UNKNOWN = new Datum(RAT_URL_DOCUMENT_CATEGORY, RAT_DOCUMENT_CATEGORY_VALUE_UNKNOWN);
47 public static final Datum RAT_DOCUMENT_CATEGORY_DATUM_ARCHIVE = new Datum(RAT_URL_DOCUMENT_CATEGORY, RAT_DOCUMENT_CATEGORY_VALUE_ARCHIVE);
48 public static final Datum RAT_DOCUMENT_CATEGORY_DATUM_NOTICE = new Datum(RAT_URL_DOCUMENT_CATEGORY, RAT_DOCUMENT_CATEGORY_VALUE_NOTICE);
49 public static final Datum RAT_DOCUMENT_CATEGORY_DATUM_BINARY = new Datum(RAT_URL_DOCUMENT_CATEGORY, RAT_DOCUMENT_CATEGORY_VALUE_BINARY);
50 public static final Datum RAT_DOCUMENT_CATEGORY_DATUM_STANDARD = new Datum(RAT_URL_DOCUMENT_CATEGORY, RAT_DOCUMENT_CATEGORY_VALUE_STANDARD);
51
52
53 public static final String RAT_URL_HEADER_CATEGORY = RAT_BASE_URL + "#HeaderCategory";
54
55
56 public static final String RAT_URL_LICENSE_FAMILY_CATEGORY= RAT_BASE_URL + "#LicenseFamilyCategory";
57
58 public static final String RAT_LICENSE_FAMILY_CATEGORY_VALUE_GEN = "GEN ";
59 public static final String RAT_LICENSE_FAMILY_CATEGORY_VALUE_UNKNOWN = "?????";
60 @Deprecated
61 public static final String RAT_LICENSE_FAMILY_CATEGORY_VALUE_ASL = "AL ";
62 @Deprecated
63 public static final String RAT_LICENSE_FAMILY_CATEGORY_VALUE_OASIS = "OASIS";
64 @Deprecated
65 public static final String RAT_LICENSE_FAMILY_CATEGORY_VALUE_W3CD = "W3CD ";
66 @Deprecated
67 public static final String RAT_LICENSE_FAMILY_CATEGORY_VALUE_W3C = "W3C ";
68 @Deprecated
69 public static final String RAT_LICENSE_FAMILY_CATEGORY_VALUE_DOJO = "DOJO ";
70 @Deprecated
71 public static final String RAT_LICENSE_FAMILY_CATEGORY_VALUE_TMF = "TMF ";
72 @Deprecated
73 public static final String RAT_LICENSE_FAMILY_CATEGORY_VALUE_GPL1 ="GPL1 ";
74 @Deprecated
75 public static final String RAT_LICENSE_FAMILY_CATEGORY_VALUE_GPL2 ="GPL2 ";
76 @Deprecated
77 public static final String RAT_LICENSE_FAMILY_CATEGORY_VALUE_GPL3 = "GPL3 ";
78 @Deprecated
79 public static final String RAT_LICENSE_FAMILY_CATEGORY_VALUE_MIT = "MIT ";
80 @Deprecated
81 public static final String RAT_LICENSE_FAMILY_CATEGORY_VALUE_CDDL1 = "CDDL1";
82
83 public static final Datum RAT_LICENSE_FAMILY_CATEGORY_DATUM_GEN = new Datum(RAT_URL_LICENSE_FAMILY_CATEGORY, RAT_LICENSE_FAMILY_CATEGORY_VALUE_GEN);
84 public static final Datum RAT_LICENSE_FAMILY_CATEGORY_DATUM_UNKNOWN = new Datum(RAT_URL_LICENSE_FAMILY_CATEGORY, RAT_LICENSE_FAMILY_CATEGORY_VALUE_UNKNOWN);
85 @Deprecated
86 public static final Datum RAT_LICENSE_FAMILY_CATEGORY_DATUM_ASL = new Datum(RAT_URL_LICENSE_FAMILY_CATEGORY, RAT_LICENSE_FAMILY_CATEGORY_VALUE_ASL);
87 @Deprecated
88 public static final Datum RAT_LICENSE_FAMILY_CATEGORY_DATUM_OASIS = new Datum(RAT_URL_LICENSE_FAMILY_CATEGORY, RAT_LICENSE_FAMILY_CATEGORY_VALUE_OASIS);
89 @Deprecated
90 public static final Datum RAT_LICENSE_FAMILY_CATEGORY_DATUM_W3CD = new Datum(RAT_URL_LICENSE_FAMILY_CATEGORY, RAT_LICENSE_FAMILY_CATEGORY_VALUE_W3CD);
91 @Deprecated
92 public static final Datum RAT_LICENSE_FAMILY_CATEGORY_DATUM_W3C = new Datum(RAT_URL_LICENSE_FAMILY_CATEGORY, RAT_LICENSE_FAMILY_CATEGORY_VALUE_W3C);
93 @Deprecated
94 public static final Datum RAT_LICENSE_FAMILY_CATEGORY_DATUM_DOJO = new Datum(RAT_URL_LICENSE_FAMILY_CATEGORY, RAT_LICENSE_FAMILY_CATEGORY_VALUE_DOJO);
95 @Deprecated
96 public static final Datum RAT_LICENSE_FAMILY_CATEGORY_DATUM_TMF = new Datum(RAT_URL_LICENSE_FAMILY_CATEGORY, RAT_LICENSE_FAMILY_CATEGORY_VALUE_TMF);
97 @Deprecated
98 public static final Datum RAT_LICENSE_FAMILY_CATEGORY_DATUM_GPL1 = new Datum(RAT_URL_LICENSE_FAMILY_CATEGORY,RAT_LICENSE_FAMILY_CATEGORY_VALUE_GPL1);
99 @Deprecated
100 public static final Datum RAT_LICENSE_FAMILY_CATEGORY_DATUM_GPL2 = new Datum(RAT_URL_LICENSE_FAMILY_CATEGORY,RAT_LICENSE_FAMILY_CATEGORY_VALUE_GPL2);
101 @Deprecated
102 public static final Datum RAT_LICENSE_FAMILY_CATEGORY_DATUM_GPL3 = new Datum(RAT_URL_LICENSE_FAMILY_CATEGORY,RAT_LICENSE_FAMILY_CATEGORY_VALUE_GPL3);
103 @Deprecated
104 public static final Datum RAT_LICENSE_FAMILY_CATEGORY_DATUM_MIT = new Datum(RAT_URL_LICENSE_FAMILY_CATEGORY,RAT_LICENSE_FAMILY_CATEGORY_VALUE_MIT);
105 @Deprecated
106 public static final Datum RAT_LICENSE_FAMILY_CATEGORY_DATUM_CDLL1 = new Datum(RAT_URL_LICENSE_FAMILY_CATEGORY,RAT_LICENSE_FAMILY_CATEGORY_VALUE_CDDL1);
107
108
109 public static final String RAT_URL_LICENSE_FAMILY_NAME= RAT_BASE_URL + "#LicenseFamilyName";
110 @Deprecated
111 public static final String RAT_LICENSE_FAMILY_NAME_VALUE_W3C_SOFTWARE_COPYRIGHT = "W3C Software Copyright";
112 @Deprecated
113 public static final String RAT_LICENSE_FAMILY_NAME_VALUE_W3C_DOCUMENT_COPYRIGHT = "W3C Document Copyright";
114 @Deprecated
115 public static final String RAT_LICENSE_FAMILY_NAME_VALUE_OASIS_OPEN_LICENSE = "OASIS Open License";
116 @Deprecated
117 public static final String RAT_LICENSE_FAMILY_NAME_VALUE_MODIFIED_BSD_LICENSE = "Modified BSD License";
118 @Deprecated
119 public static final String RAT_LICENSE_FAMILY_NAME_VALUE_APACHE_LICENSE_VERSION_2_0 = "Apache License Version 2.0";
120 @Deprecated
121 public static final String RAT_LICENSE_FAMILY_NAME_VALUE_GPL_VERSION_1 =
122 "GNU General Public License, version 1";
123 @Deprecated
124 public static final String RAT_LICENSE_FAMILY_NAME_VALUE_GPL_VERSION_2 =
125 "GNU General Public License, version 2";
126 @Deprecated
127 public static final String RAT_LICENSE_FAMILY_NAME_VALUE_GPL_VERSION_3 =
128 "GNU General Public License, version 3";
129 @Deprecated
130 public static final String RAT_LICENSE_FAMILY_NAME_VALUE_MIT =
131 "The MIT License";
132 @Deprecated
133 public static final String RAT_LICENSE_FAMILY_NAME_VALUE_CDDL1 =
134 "COMMON DEVELOPMENT AND DISTRIBUTION LICENSE Version 1.0";
135 @Deprecated
136 public static final String RAT_LICENSE_FAMILY_NAME_VALUE_ACADEMIC_FREE_LICENSE_VERSION_2_1 = "Academic Free License, Version 2.1";
137
138 public static final String RAT_LICENSE_FAMILY_NAME_VALUE_UNKNOWN = "?????";
139 @Deprecated
140 public static final Datum RAT_LICENSE_FAMILY_NAME_DATUM_W3C_SOFTWARE_COPYRIGHT
141 = new Datum(RAT_URL_LICENSE_FAMILY_NAME, RAT_LICENSE_FAMILY_NAME_VALUE_W3C_SOFTWARE_COPYRIGHT);
142 @Deprecated
143 public static final Datum RAT_LICENSE_FAMILY_NAME_DATUM_W3C_DOCUMENT_COPYRIGHT
144 = new Datum(RAT_URL_LICENSE_FAMILY_NAME, RAT_LICENSE_FAMILY_NAME_VALUE_W3C_DOCUMENT_COPYRIGHT);
145 @Deprecated
146 public static final Datum RAT_LICENSE_FAMILY_NAME_DATUM_OASIS_OPEN_LICENSE
147 = new Datum(RAT_URL_LICENSE_FAMILY_NAME, RAT_LICENSE_FAMILY_NAME_VALUE_OASIS_OPEN_LICENSE);
148 @Deprecated
149 public static final Datum RAT_LICENSE_FAMILY_NAME_DATUM_MODIFIED_BSD_LICENSE
150 = new Datum(RAT_URL_LICENSE_FAMILY_NAME, RAT_LICENSE_FAMILY_NAME_VALUE_MODIFIED_BSD_LICENSE);
151 @Deprecated
152 public static final Datum RAT_LICENSE_FAMILY_NAME_DATUM_APACHE_LICENSE_VERSION_2_0
153 = new Datum(RAT_URL_LICENSE_FAMILY_NAME, RAT_LICENSE_FAMILY_NAME_VALUE_APACHE_LICENSE_VERSION_2_0);
154 @Deprecated
155 public static final Datum
156 RAT_LICENSE_FAMILY_NAME_DATUM_GPL_VERSION_1 = new Datum(RAT_URL_LICENSE_FAMILY_NAME, RAT_LICENSE_FAMILY_NAME_VALUE_GPL_VERSION_1);
157 @Deprecated
158 public static final Datum
159 RAT_LICENSE_FAMILY_NAME_DATUM_GPL_VERSION_2 = new Datum(RAT_URL_LICENSE_FAMILY_NAME, RAT_LICENSE_FAMILY_NAME_VALUE_GPL_VERSION_2);
160 @Deprecated
161 public static final Datum
162 RAT_LICENSE_FAMILY_NAME_DATUM_GPL_VERSION_3 = new Datum(RAT_URL_LICENSE_FAMILY_NAME, RAT_LICENSE_FAMILY_NAME_VALUE_GPL_VERSION_3);
163 @Deprecated
164 public static final Datum
165 RAT_LICENSE_FAMILY_NAME_DATUM_MIT = new Datum(RAT_URL_LICENSE_FAMILY_NAME, RAT_LICENSE_FAMILY_NAME_VALUE_MIT);
166 @Deprecated
167 public static final Datum
168 RAT_LICENSE_FAMILY_NAME_DATUM_CDDL1 = new Datum(RAT_URL_LICENSE_FAMILY_NAME, RAT_LICENSE_FAMILY_NAME_VALUE_CDDL1);
169 @Deprecated
170 public static final Datum RAT_LICENSE_FAMILY_NAME_DATUM_ACADEMIC_FREE_LICENSE_VERSION_2_1
171 = new Datum(RAT_URL_LICENSE_FAMILY_NAME, RAT_LICENSE_FAMILY_NAME_VALUE_ACADEMIC_FREE_LICENSE_VERSION_2_1);
172
173 public static final Datum RAT_LICENSE_FAMILY_NAME_DATUM_UNKNOWN
174 = new Datum(RAT_URL_LICENSE_FAMILY_NAME, RAT_LICENSE_FAMILY_NAME_VALUE_UNKNOWN);
175
176
177 public static final String RAT_URL_HEADER_SAMPLE = RAT_BASE_URL + "#HeaderSample";
178
179
180 public static final String RAT_URL_APPROVED_LICENSE = RAT_BASE_URL + "#ApprovedLicense";
181 public static final String RAT_APPROVED_LICENSE_VALUE_TRUE = Boolean.TRUE.toString();
182 public static final String RAT_APPROVED_LICENSE_VALUE_FALSE = Boolean.FALSE.toString();
183 public static final Datum RAT_APPROVED_LICENSE_DATUM_TRUE = new Datum(RAT_URL_APPROVED_LICENSE, RAT_APPROVED_LICENSE_VALUE_TRUE);
184 public static final Datum RAT_APPROVED_LICENSE_DATUM_FALSE = new Datum(RAT_URL_APPROVED_LICENSE, RAT_APPROVED_LICENSE_VALUE_FALSE);
185 @Deprecated
186 public static final Datum RAT_APPROVED_LICENSE_DATIM_TRUE = RAT_APPROVED_LICENSE_DATUM_TRUE;
187 @Deprecated
188 public static final Datum RAT_APPROVED_LICENSE_DATIM_FALSE = RAT_APPROVED_LICENSE_DATUM_FALSE;
189
190
191
192
193
194 private final List<Datum> data;
195
196
197
198
199 public MetaData() {
200 this.data = new ArrayList<>(16);
201 }
202
203
204
205
206
207 public void reportOnLicense(ILicense license) {
208
209 if (StringUtils.isNotBlank(license.getNotes())) {
210 set(new MetaData.Datum(MetaData.RAT_URL_HEADER_SAMPLE, license.getNotes()));
211 }
212 set(new MetaData.Datum(MetaData.RAT_URL_HEADER_CATEGORY, license.getLicenseFamily().getFamilyCategory()));
213 set(new MetaData.Datum(MetaData.RAT_URL_LICENSE_FAMILY_CATEGORY, license.getLicenseFamily().getFamilyCategory()));
214 set(new MetaData.Datum(MetaData.RAT_URL_LICENSE_FAMILY_NAME, license.getLicenseFamily().getFamilyName()));
215 }
216
217
218
219
220
221
222 public Collection<Datum> getData() {
223 return Collections.unmodifiableCollection(data);
224 }
225
226
227
228
229
230
231
232 public void add(final Datum datum) {
233 data.add(datum);
234 }
235
236
237
238
239
240
241
242 public void set(final Datum datum) {
243 clear(datum.getName());
244 add(datum);
245 }
246
247
248
249
250
251
252
253 public Datum get(final String name) {
254 Datum result = null;
255 for (Datum next : data) {
256 if (name.equals(next.getName())) {
257 result = next;
258 break;
259 }
260 }
261 return result;
262 }
263
264
265
266
267
268
269
270 public String value(final String name) {
271 final Datum datum = get(name);
272 final String result;
273 if (datum == null) {
274 result = null;
275 } else {
276 result = datum.getValue();
277 }
278 return result;
279 }
280
281
282
283
284
285
286 public boolean clear(final String name) {
287 boolean dataRemoved = false;
288 for (final Iterator<Datum> it = data.iterator();it.hasNext();) {
289 final Datum datum = it.next();
290 if (datum.getName().equals(name)) {
291 it.remove();
292 dataRemoved = true;
293 }
294 }
295 return dataRemoved;
296 }
297
298
299
300
301 public void clear() {
302 data.clear();
303 }
304
305
306
307
308 public static final class Datum {
309 private final String name;
310 private final String value;
311
312
313
314
315
316
317 public Datum(final String name, final String value) {
318 super();
319 this.name = name;
320 this.value = value;
321 }
322
323
324
325
326
327
328 public String getName() {
329 return name;
330 }
331
332
333
334
335
336 public String getValue() {
337 return value;
338 }
339
340
341
342
343
344
345
346
347 @Override
348 public String toString()
349 {
350 return "Datum [ "
351 + "name ='" + this.name + "',"
352 + "value ='" + this.value + " "
353 + "']";
354 }
355 }
356 }
357