1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 package com.jcabi.w3c;
31
32 import com.jcabi.log.Logger;
33 import java.net.URI;
34 import java.nio.charset.Charset;
35 import java.util.Collections;
36 import java.util.Set;
37 import java.util.concurrent.CopyOnWriteArraySet;
38 import lombok.EqualsAndHashCode;
39
40
41
42
43
44
45 @EqualsAndHashCode(
46 of = { "ivalid", "validator", "type", "encoding", "ierrors", "iwarnings" }
47 )
48 final class DefaultValidationResponse implements ValidationResponse {
49
50
51
52
53 private final transient boolean ivalid;
54
55
56
57
58 private final transient URI validator;
59
60
61
62
63 private final transient String type;
64
65
66
67
68 private final transient Charset encoding;
69
70
71
72
73 private final transient Set<Defect> ierrors;
74
75
76
77
78 private final transient Set<Defect> iwarnings;
79
80
81
82
83
84
85
86
87
88 DefaultValidationResponse(final boolean val,
89 final URI server, final String tpe,
90 final Charset enc) {
91 this.ivalid = val;
92 this.validator = server;
93 this.type = tpe;
94 this.encoding = enc;
95 this.ierrors = new CopyOnWriteArraySet<>();
96 this.iwarnings = new CopyOnWriteArraySet<>();
97 }
98
99 @Override
100 public String toString() {
101 return new StringBuilder(0)
102 .append(Logger.format("Validity: %B\n", this.ivalid))
103 .append(Logger.format("Validator: \"%s\"\n", this.validator))
104 .append(Logger.format("DOCTYPE: \"%s\"\n", this.type))
105 .append(Logger.format("Charset: \"%s\"\n", this.encoding))
106 .append("Errors:\n")
107 .append(DefaultValidationResponse.asText(this.ierrors))
108 .append("Warnings:\n")
109 .append(DefaultValidationResponse.asText(this.iwarnings))
110 .toString();
111 }
112
113 @Override
114 public boolean valid() {
115 return this.ivalid;
116 }
117
118 @Override
119 public URI checkedBy() {
120 return this.validator;
121 }
122
123 @Override
124 public String doctype() {
125 return this.type;
126 }
127
128 @Override
129 public Charset charset() {
130 return this.encoding;
131 }
132
133 @Override
134 public Set<Defect> errors() {
135 return Collections.unmodifiableSet(this.ierrors);
136 }
137
138 @Override
139 public Set<Defect> warnings() {
140 return Collections.unmodifiableSet(this.iwarnings);
141 }
142
143
144
145
146
147 public void addError(final Defect error) {
148 this.ierrors.add(error);
149 }
150
151
152
153
154
155 public void addWarning(final Defect warning) {
156 this.iwarnings.add(warning);
157 }
158
159
160
161
162
163
164 private static String asText(final Set<Defect> defects) {
165 final StringBuilder text = new StringBuilder(0);
166 for (final Defect defect : defects) {
167 text.append(" ").append(defect.toString()).append('\n');
168 }
169 return text.toString();
170 }
171
172 }