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
28
29
30
31
32 public class MetaData {
33
34 public static final String RAT_BASE_URL = "http://org/apache/rat/meta-data";
35
36
37 public static final String RAT_URL_DOCUMENT_CATEGORY = RAT_BASE_URL + "#FileCategory";
38 public static final String RAT_DOCUMENT_CATEGORY_VALUE_GENERATED = "GEN ";
39 public static final String RAT_DOCUMENT_CATEGORY_VALUE_UNKNOWN = "?????";
40 public static final String RAT_DOCUMENT_CATEGORY_VALUE_ARCHIVE = "archive";
41 public static final String RAT_DOCUMENT_CATEGORY_VALUE_NOTICE = "notice";
42 public static final String RAT_DOCUMENT_CATEGORY_VALUE_BINARY = "binary";
43 public static final String RAT_DOCUMENT_CATEGORY_VALUE_STANDARD = "standard";
44 public static final Datum RAT_DOCUMENT_CATEGORY_DATUM_GENERATED = new Datum(RAT_URL_DOCUMENT_CATEGORY, RAT_DOCUMENT_CATEGORY_VALUE_GENERATED);
45 public static final Datum RAT_DOCUMENT_CATEGORY_DATUM_UNKNOWN = new Datum(RAT_URL_DOCUMENT_CATEGORY, RAT_DOCUMENT_CATEGORY_VALUE_UNKNOWN);
46 public static final Datum RAT_DOCUMENT_CATEGORY_DATUM_ARCHIVE = new Datum(RAT_URL_DOCUMENT_CATEGORY, RAT_DOCUMENT_CATEGORY_VALUE_ARCHIVE);
47 public static final Datum RAT_DOCUMENT_CATEGORY_DATUM_NOTICE = new Datum(RAT_URL_DOCUMENT_CATEGORY, RAT_DOCUMENT_CATEGORY_VALUE_NOTICE);
48 public static final Datum RAT_DOCUMENT_CATEGORY_DATUM_BINARY = new Datum(RAT_URL_DOCUMENT_CATEGORY, RAT_DOCUMENT_CATEGORY_VALUE_BINARY);
49 public static final Datum RAT_DOCUMENT_CATEGORY_DATUM_STANDARD = new Datum(RAT_URL_DOCUMENT_CATEGORY, RAT_DOCUMENT_CATEGORY_VALUE_STANDARD);
50
51
52 public static final String RAT_URL_HEADER_CATEGORY = RAT_BASE_URL + "#HeaderCategory";
53
54
55 public static final String RAT_URL_LICENSE_FAMILY_CATEGORY= RAT_BASE_URL + "#LicenseFamilyCategory";
56 public static final String RAT_LICENSE_FAMILY_CATEGORY_VALUE_GEN = "GEN ";
57 public static final String RAT_LICENSE_FAMILY_CATEGORY_VALUE_UNKNOWN = "?????";
58 public static final String RAT_LICENSE_FAMILY_CATEGORY_VALUE_ASL = "AL ";
59 public static final String RAT_LICENSE_FAMILY_CATEGORY_VALUE_OASIS = "OASIS";
60 public static final String RAT_LICENSE_FAMILY_CATEGORY_VALUE_W3CD = "W3CD ";
61 public static final String RAT_LICENSE_FAMILY_CATEGORY_VALUE_W3C = "W3C ";
62 public static final String RAT_LICENSE_FAMILY_CATEGORY_VALUE_DOJO = "DOJO ";
63 public static final String RAT_LICENSE_FAMILY_CATEGORY_VALUE_TMF = "TMF ";
64 public static final Datum RAT_LICENSE_FAMILY_CATEGORY_DATUM_GEN = new Datum(RAT_URL_LICENSE_FAMILY_CATEGORY, RAT_LICENSE_FAMILY_CATEGORY_VALUE_GEN);
65 public static final Datum RAT_LICENSE_FAMILY_CATEGORY_DATUM_UNKNOWN = new Datum(RAT_URL_LICENSE_FAMILY_CATEGORY, RAT_LICENSE_FAMILY_CATEGORY_VALUE_UNKNOWN);
66 public static final Datum RAT_LICENSE_FAMILY_CATEGORY_DATUM_ASL = new Datum(RAT_URL_LICENSE_FAMILY_CATEGORY, RAT_LICENSE_FAMILY_CATEGORY_VALUE_ASL);
67 public static final Datum RAT_LICENSE_FAMILY_CATEGORY_DATUM_OASIS = new Datum(RAT_URL_LICENSE_FAMILY_CATEGORY, RAT_LICENSE_FAMILY_CATEGORY_VALUE_OASIS);
68 public static final Datum RAT_LICENSE_FAMILY_CATEGORY_DATUM_W3CD = new Datum(RAT_URL_LICENSE_FAMILY_CATEGORY, RAT_LICENSE_FAMILY_CATEGORY_VALUE_W3CD);
69 public static final Datum RAT_LICENSE_FAMILY_CATEGORY_DATUM_W3C = new Datum(RAT_URL_LICENSE_FAMILY_CATEGORY, RAT_LICENSE_FAMILY_CATEGORY_VALUE_W3C);
70 public static final Datum RAT_LICENSE_FAMILY_CATEGORY_DATUM_DOJO = new Datum(RAT_URL_LICENSE_FAMILY_CATEGORY, RAT_LICENSE_FAMILY_CATEGORY_VALUE_DOJO);
71 public static final Datum RAT_LICENSE_FAMILY_CATEGORY_DATUM_TMF = new Datum(RAT_URL_LICENSE_FAMILY_CATEGORY, RAT_LICENSE_FAMILY_CATEGORY_VALUE_TMF);
72
73
74 public static final String RAT_URL_LICENSE_FAMILY_NAME= RAT_BASE_URL + "#LicenseFamilyName";
75 public static final String RAT_LICENSE_FAMILY_NAME_VALUE_W3C_SOFTWARE_COPYRIGHT = "W3C Software Copyright";
76 public static final String RAT_LICENSE_FAMILY_NAME_VALUE_W3C_DOCUMENT_COPYRIGHT = "W3C Document Copyright";
77 public static final String RAT_LICENSE_FAMILY_NAME_VALUE_OASIS_OPEN_LICENSE = "OASIS Open License";
78 public static final String RAT_LICENSE_FAMILY_NAME_VALUE_MODIFIED_BSD_LICENSE = "Modified BSD License";
79 public static final String RAT_LICENSE_FAMILY_NAME_VALUE_APACHE_LICENSE_VERSION_2_0 = "Apache License Version 2.0";
80 public static final String RAT_LICENSE_FAMILY_NAME_VALUE_ACADEMIC_FREE_LICENSE_VERSION_2_1 = "Academic Free License, Version 2.1";
81 public static final String RAT_LICENSE_FAMILY_NAME_VALUE_UNKNOWN = "?????";
82 public static final Datum RAT_LICENSE_FAMILY_NAME_DATUM_W3C_SOFTWARE_COPYRIGHT
83 = new Datum(RAT_URL_LICENSE_FAMILY_NAME, RAT_LICENSE_FAMILY_NAME_VALUE_W3C_SOFTWARE_COPYRIGHT);
84 public static final Datum RAT_LICENSE_FAMILY_NAME_DATUM_W3C_DOCUMENT_COPYRIGHT
85 = new Datum(RAT_URL_LICENSE_FAMILY_NAME, RAT_LICENSE_FAMILY_NAME_VALUE_W3C_DOCUMENT_COPYRIGHT);
86 public static final Datum RAT_LICENSE_FAMILY_NAME_DATUM_OASIS_OPEN_LICENSE
87 = new Datum(RAT_URL_LICENSE_FAMILY_NAME, RAT_LICENSE_FAMILY_NAME_VALUE_OASIS_OPEN_LICENSE);
88 public static final Datum RAT_LICENSE_FAMILY_NAME_DATUM_MODIFIED_BSD_LICENSE
89 = new Datum(RAT_URL_LICENSE_FAMILY_NAME, RAT_LICENSE_FAMILY_NAME_VALUE_MODIFIED_BSD_LICENSE);
90 public static final Datum RAT_LICENSE_FAMILY_NAME_DATUM_APACHE_LICENSE_VERSION_2_0
91 = new Datum(RAT_URL_LICENSE_FAMILY_NAME, RAT_LICENSE_FAMILY_NAME_VALUE_APACHE_LICENSE_VERSION_2_0);
92 public static final Datum RAT_LICENSE_FAMILY_NAME_DATUM_ACADEMIC_FREE_LICENSE_VERSION_2_1
93 = new Datum(RAT_URL_LICENSE_FAMILY_NAME, RAT_LICENSE_FAMILY_NAME_VALUE_ACADEMIC_FREE_LICENSE_VERSION_2_1);
94 public static final Datum RAT_LICENSE_FAMILY_NAME_DATUM_UNKNOWN
95 = new Datum(RAT_URL_LICENSE_FAMILY_NAME, RAT_LICENSE_FAMILY_NAME_VALUE_UNKNOWN);
96
97
98 public static final String RAT_URL_HEADER_SAMPLE = RAT_BASE_URL + "#HeaderSample";
99
100
101 public static final String RAT_URL_APPROVED_LICENSE = RAT_BASE_URL + "#ApprovedLicense";
102 public static final String RAT_APPROVED_LICENSE_VALUE_TRUE = Boolean.TRUE.toString();
103 public static final String RAT_APPROVED_LICENSE_VALUE_FALSE = Boolean.FALSE.toString();
104 public static final Datum RAT_APPROVED_LICENSE_DATIM_TRUE = new Datum(RAT_URL_APPROVED_LICENSE, RAT_APPROVED_LICENSE_VALUE_TRUE);
105 public static final Datum RAT_APPROVED_LICENSE_DATIM_FALSE = new Datum(RAT_URL_APPROVED_LICENSE, RAT_APPROVED_LICENSE_VALUE_FALSE);
106
107 private ContentType contentType;
108
109
110
111
112 private final List
113
114 public MetaData() {
115 this(null);
116 }
117
118 public MetaData(final ContentType contentType) {
119 this.contentType = contentType;
120 this.data = new ArrayList
121 }
122
123
124
125
126
127 public ContentType getContentType() {
128 return contentType;
129 }
130
131
132
133
134
135
136 public void setContentType(final ContentType contentType) {
137 this.contentType = contentType;
138 }
139
140
141
142
143
144 public Collection getData() {
145 return Collections.unmodifiableCollection(data);
146 }
147
148
149
150
151
152
153
154 public void add(final Datum datum) {
155 data.add(datum);
156 }
157
158
159
160
161
162
163
164 public void set(final Datum datum) {
165 clear(datum.getName());
166 add(datum);
167 }
168
169
170
171
172
173
174
175 public Datum get(final String name) {
176 Datum result = null;
177 for (final Iterator
178 final Datum next = (Datum) it.next();
179 if (name.equals(next.getName())) {
180 result = next;
181 break;
182 }
183 }
184 return result;
185 }
186
187
188
189
190
191
192
193 public String value(final String name) {
194 final Datum datum = get(name);
195 final String result;
196 if (datum == null) {
197 result = null;
198 } else {
199 result = datum.getValue();
200 }
201 return result;
202 }
203
204
205
206
207
208
209 public boolean clear(final String name) {
210 boolean dataRemoved = false;
211 for (final Iterator it=data.iterator();it.hasNext();) {
212 final Datum datum = (Datum) it.next();
213 if (datum.getName().equals(name)) {
214 it.remove();
215 dataRemoved = true;
216 }
217 }
218 return dataRemoved;
219 }
220
221
222
223
224 public void clear() {
225 data.clear();
226 this.contentType = null;
227 }
228
229
230
231
232 public static final class Datum {
233 private final String name;
234 private final String value;
235
236
237
238
239
240
241 public Datum(final String name, final String value) {
242 super();
243 this.name = name;
244 this.value = value;
245 }
246
247
248
249
250
251
252 public String getName() {
253 return name;
254 }
255
256
257
258
259
260 public String getValue() {
261 return value;
262 }
263
264
265
266
267
268
269
270
271 public String toString()
272 {
273 return "Datum [ "
274 + "name ='" + this.name + "',"
275 + "value ='" + this.value + " "
276 + "']";
277 }
278 }
279 }
280