1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.rat.report.claim.impl.xml;
20
21 import java.io.IOException;
22 import java.util.Iterator;
23
24 import org.apache.commons.lang3.StringUtils;
25 import org.apache.rat.api.Document;
26 import org.apache.rat.api.MetaData;
27 import org.apache.rat.api.RatException;
28 import org.apache.rat.license.ILicense;
29 import org.apache.rat.report.AbstractReport;
30 import org.apache.rat.report.xml.writer.IXmlWriter;
31
32
33
34
35 public class SimpleXmlClaimReporter extends AbstractReport {
36
37 private static final String RESOURCE = "resource";
38
39 private static final String LICENSE = "license";
40
41 private static final String APPROVAL = "approval";
42
43 private static final String FAMILY = "family";
44
45 private static final String NOTES = "notes";
46
47 private static final String SAMPLE = "sample";
48
49 private static final String TYPE = "type";
50
51 private static final String ID = "id";
52
53 private static final String NAME = "name";
54
55
56 private final IXmlWriter writer;
57
58
59
60
61
62 public SimpleXmlClaimReporter(final IXmlWriter writer) {
63 this.writer = writer;
64 }
65
66 @Override
67 public void report(final Document subject) throws RatException {
68 try {
69 writeDocumentClaims(subject);
70 } catch (IOException e) {
71 throw new RatException("XML writing failure: " + e.getMessage() + " subject: " + subject, e);
72 }
73 }
74
75 private void writeLicenseClaims(final ILicense license, final MetaData metaData) throws IOException {
76 writer.openElement(LICENSE).attribute(ID, license.getId()).attribute(NAME, license.getName())
77 .attribute(APPROVAL, Boolean.valueOf(metaData.isApproved(license)).toString())
78 .attribute(FAMILY, license.getLicenseFamily().getFamilyCategory());
79 if (StringUtils.isNotBlank(license.getNote())) {
80 writer.openElement(NOTES).cdata(license.getNote()).closeElement();
81 }
82 writer.closeElement();
83 }
84
85 private void writeDocumentClaims(final Document document) throws IOException {
86 final MetaData metaData = document.getMetaData();
87 writer.openElement(RESOURCE).attribute(NAME, document.getName().localized("/")).attribute(TYPE,
88 metaData.getDocumentType().toString());
89 for (Iterator<ILicense> iter = metaData.licenses().iterator(); iter.hasNext();) {
90 writeLicenseClaims(iter.next(), metaData);
91 }
92 writeHeaderSample(metaData);
93 writer.closeElement();
94 }
95
96 private void writeHeaderSample(final MetaData metaData) throws IOException {
97 final String sample = metaData.getSampleHeader();
98 if (StringUtils.isNotBlank(sample)) {
99 writer.openElement(SAMPLE).cdata(sample).closeElement();
100 }
101 }
102
103 @Override
104 public void startReport() {
105
106 }
107
108 @Override
109 public void endReport() {
110
111 }
112 }