MySQL 5.6.14 Source Code Document
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
QueuingErrorListener.java
1 /*
2  * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; version 2 of the License.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, write to the Free Software
15  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
16  */
17 
18 package com.mysql.clusterj.jdbc.antlr;
19 
20 import org.antlr.runtime.RecognitionException;
21 import org.antlr.runtime.BaseRecognizer;
22 
23 import java.util.List;
24 import java.util.ArrayList;
25 
29 public class QueuingErrorListener extends BaseErrorListener implements ErrorListener {
30 
31  private List<RecognitionException> exceptions;
32  private String[] tokenNames;
33  private StringBuilder errorBuffer;
34 
35  public QueuingErrorListener(RecognizerErrorDelegate recognizerErrorDelegate) {
36  super(recognizerErrorDelegate);
37  exceptions = new ArrayList<RecognitionException>();
38  }
39 
47  @Override
48  public void displayRecognitionError(String[] tokenNames, RecognitionException e) {
49  if (this.tokenNames == null)
50  this.tokenNames = tokenNames;
51  exceptions.add(e);
52  }
53 
54  @Override
55  public void emitErrorMessage(String msg) {
56  errorBuffer.append(msg);
57  errorBuffer.append("--------------------\n");
58  }
59 
60  @Override
61  public boolean hasErrors() {
62  return !exceptions.isEmpty();
63  }
64 
65  @Override
66  public String toString() {
67  if (errorBuffer == null) {
68  errorBuffer = new StringBuilder();
69  for (RecognitionException e : exceptions) {
70  super.displayRecognitionError(tokenNames, e);
71  }
72  }
73  return errorBuffer.toString();
74  }
75 
76  @Override
77  public List<RecognitionException> getErrors() {
78  return exceptions;
79  }
80 }