]> review.fuel-infra Code Review - packages/trusty/mysql-wsrep-5.6.git/blob
ca5bbae5f2a21d710b7c4d6b15d5f1527a4a21b3
[packages/trusty/mysql-wsrep-5.6.git] /
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 /* Please see the following wiki for details of this functionality:
19  * http://www.antlr.org/wiki/pages/viewpage.action?pageId=1782
20  */
21
22 package com.mysql.clusterj.jdbc.antlr;
23
24 import java.io.IOException;
25 import java.io.File;
26 import java.io.InputStreamReader;
27 import java.io.FileInputStream;
28
29 /** This is a char buffer stream that is loaded from a file
30  *  all at once when you construct the object.  This looks very
31  *  much like an ANTLReader or ANTLRInputStream, but it's a special case
32  *  since we know the exact size of the object to load.  We can avoid lots
33  *  of data copying.
34  *  The only difference to ANTLRFileStream is that it extends ANTLRNoCaseStringStream.
35  */
36 public class ANTLRNoCaseFileStream extends ANTLRNoCaseStringStream {
37     transient private String fileName;
38
39     public ANTLRNoCaseFileStream(final String fileName) throws IOException {
40         this(fileName, null);
41     }
42
43     public ANTLRNoCaseFileStream(final String fileName, final String encoding) throws IOException {
44         this.fileName = fileName;
45         load(fileName, encoding);
46     }
47
48     private void load(final String fileName, final String encoding)
49         throws IOException
50     {
51         if ( fileName==null ) {
52             return;
53         }
54         final File f = new File(fileName);
55         final int size = (int)f.length();
56         InputStreamReader isr;
57         final FileInputStream fis = new FileInputStream(fileName);
58         if ( encoding!=null ) {
59             isr = new InputStreamReader(fis, encoding);
60         }
61         else {
62             isr = new InputStreamReader(fis);
63         }
64         try {
65             data = new char[size];
66             super.n = isr.read(data);
67         }
68         finally {
69             isr.close();
70         }
71     }
72
73     public String getSourceName() {
74         return fileName;
75     }
76 }