source: CMDIValidator/trunk/cmdi-validator-core/src/main/java/eu/clarin/cmdi/validator/CMDIWriteableValidatonReportImpl.java @ 5403

Last change on this file since 5403 was 5403, checked in by Oliver Schonefeld, 10 years ago
  • prepare for pluggable report factory
  • Property svn:eol-style set to native
File size: 5.0 KB
Line 
1package eu.clarin.cmdi.validator;
2
3import java.io.File;
4import java.util.ArrayList;
5import java.util.Collections;
6import java.util.List;
7
8final class CMDIWriteableValidatonReportImpl implements CMDIWriteableValidationReport {
9    private File file;
10    private List<Message> messages;
11    private Severity highestSeverity = Severity.INFO;
12
13
14    @Override
15    public File getFile() {
16        return file;
17    }
18
19
20    @Override
21    public void setFile(File file) {
22        this.file = file;
23    }
24
25
26    @Override
27    public boolean isSuccess() {
28        return isHighestSeverity(Severity.INFO);
29    }
30
31
32    @Override
33    public boolean isWarning() {
34        return isHighestSeverity(Severity.WARNING);
35    }
36
37
38    @Override
39    public boolean isFailed() {
40        return isHighestSeverity(Severity.ERROR);
41    }
42
43
44    @Override
45    public Severity getHighestSeverity() {
46        return highestSeverity;
47    }
48
49
50    @Override
51    public boolean isHighestSeverity(Severity severity) {
52        if (severity == null) {
53            throw new NullPointerException("severity == null");
54        }
55        return highestSeverity.equals(severity);
56    }
57
58
59    @Override
60    public List<Message> getMessages() {
61        if ((messages == null) && !messages.isEmpty()) {
62            return Collections.emptyList();
63        } else {
64            return Collections.unmodifiableList(messages);
65        }
66    }
67
68
69    @Override
70    public Message getFirstMessage() {
71        return ((messages != null) && !messages.isEmpty())
72                ? messages.get(0)
73                : null;
74    }
75
76
77    @Override
78    public Message getFirstMessage(Severity severity) {
79        if (severity == null) {
80            throw new NullPointerException("severity == null");
81        }
82
83        if ((messages != null) && !messages.isEmpty()) {
84            for (Message msg : messages) {
85                if (severity.equals(msg.getSeverity())) {
86                    return msg;
87                }
88            }
89        }
90        return null;
91    }
92
93
94    @Override
95    public int getMessageCount() {
96        return ((messages != null) && !messages.isEmpty())
97                ? messages.size()
98                : 0;
99    }
100
101
102    @Override
103    public int getMessageCount(Severity severity) {
104        if (severity == null) {
105            throw new NullPointerException("severity == null");
106        }
107
108        int count = 0;
109        if ((messages != null) && !messages.isEmpty()) {
110            for (Message msg : messages) {
111                if (severity.equals(msg.getSeverity())) {
112                    count++;
113                }
114            }
115        }
116        return count;
117    }
118
119
120    @Override
121    public void reportInfo(int line, int col, String message) {
122        reportInfo(line, col, message, null);
123    }
124
125
126    @Override
127    public void reportInfo(int line, int col, String message,
128            Throwable cause) {
129        addMessage(Severity.INFO, line, col, message, cause);
130    }
131
132
133    @Override
134    public void reportWarning(int line, int col, String message) {
135        reportWarning(line, col, message, null);
136    }
137
138
139    @Override
140    public void reportWarning(int line, int col, String message,
141            Throwable cause) {
142        addMessage(Severity.WARNING, line, col, message, cause);
143    }
144
145
146    @Override
147    public void reportError(int line, int col, String message) {
148        reportError(line, col, message, null);
149    }
150
151
152    @Override
153    public void reportError(int line, int col, String message,
154            Throwable cause) {
155        addMessage(Severity.ERROR, line, col, message, cause);
156    }
157
158
159    private void addMessage(final Severity severity,
160            final int line,
161            final int col,
162            final String message,
163            final Throwable cause) {
164        if (messages == null) {
165            messages = new ArrayList<Message>(8);
166        }
167        if (severity.priority() > highestSeverity.priority()) {
168            highestSeverity = severity;
169        }
170        messages.add(new MessageImpl(severity, line, col, message, cause));
171    }
172
173
174    private static final class MessageImpl implements
175            CMDIValidationReport.Message {
176        private final Severity severity;
177        private final int line;
178        private final int col;
179        private final String message;
180        private final Throwable cause;
181
182
183        private MessageImpl(Severity severity, int line, int col,
184                String message, Throwable cause) {
185            this.severity = severity;
186            this.line = line;
187            this.col = col;
188            this.message = message;
189            this.cause = cause;
190        }
191
192
193        @Override
194        public Severity getSeverity() {
195            return severity;
196        }
197
198
199        @Override
200        public int getLineNumber() {
201            return line;
202        }
203
204
205        @Override
206        public int getColumnNumber() {
207            return col;
208        }
209
210
211        @Override
212        public String getMessage() {
213            return message;
214        }
215
216
217        @Override
218        public Throwable getCause() {
219            return cause;
220        }
221    } // class MessageImpl
222
223} // class CMDIValidatorWriteableResultImpl
Note: See TracBrowser for help on using the repository browser.