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

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