Package org.h2.util
Class ScriptReader
- java.lang.Object
-
- org.h2.util.ScriptReader
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable
public class ScriptReader extends java.lang.Object implements java.io.CloseableThis class can split SQL scripts to single SQL statements. Each SQL statement ends with the character ';', however it is ignored in comments and quotes.
-
-
Field Summary
Fields Modifier and Type Field Description private booleanblockRemarkOnly valid if insideRemark is true.private char[]bufferprivate intbufferEndThe position in the buffer of the last available charprivate intbufferPosThe position in the buffer of the next char to be readprivate intbufferStartThe position in the buffer of the statement startprivate booleanendOfFileTrue if we have read past the end of fileprivate booleaninsideRemarkTrue if we are inside a commentprivate java.io.Readerreaderprivate intremarkStartThe position in buffer of start of commentprivate booleanskipRemarksTrue if comments should be skipped completely by this reader.
-
Constructor Summary
Constructors Constructor Description ScriptReader(java.io.Reader reader)Create a new SQL script reader from the given reader
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidclearRemark()voidclose()Close the underlying reader.private voidendRemark()booleanisBlockRemark()If currently inside a remark, this method tells if it is a block comment (true) or single line comment (false)booleanisInsideRemark()Check if this is the last statement, and if the single line or block comment is not finished yet.private intread()private intreadBuffer()java.lang.StringreadStatement()Read a statement from the reader.private java.lang.StringreadStatementLoop()voidsetSkipRemarks(boolean skipRemarks)If comments should be skipped completely by this reader.private voidstartRemark(boolean block)
-
-
-
Field Detail
-
reader
private final java.io.Reader reader
-
buffer
private char[] buffer
-
bufferPos
private int bufferPos
The position in the buffer of the next char to be read
-
bufferStart
private int bufferStart
The position in the buffer of the statement start
-
bufferEnd
private int bufferEnd
The position in the buffer of the last available char
-
endOfFile
private boolean endOfFile
True if we have read past the end of file
-
insideRemark
private boolean insideRemark
True if we are inside a comment
-
blockRemark
private boolean blockRemark
Only valid if insideRemark is true. True if we are inside a block comment, false if we are inside a line comment
-
skipRemarks
private boolean skipRemarks
True if comments should be skipped completely by this reader.
-
remarkStart
private int remarkStart
The position in buffer of start of comment
-
-
Method Detail
-
close
public void close()
Close the underlying reader.- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable
-
readStatement
public java.lang.String readStatement()
Read a statement from the reader. This method returns null if the end has been reached.- Returns:
- the SQL statement or null
-
readStatementLoop
private java.lang.String readStatementLoop() throws java.io.IOException- Throws:
java.io.IOException
-
startRemark
private void startRemark(boolean block)
-
endRemark
private void endRemark()
-
clearRemark
private void clearRemark()
-
read
private int read() throws java.io.IOException- Throws:
java.io.IOException
-
readBuffer
private int readBuffer() throws java.io.IOException- Throws:
java.io.IOException
-
isInsideRemark
public boolean isInsideRemark()
Check if this is the last statement, and if the single line or block comment is not finished yet.- Returns:
- true if the current position is inside a remark
-
isBlockRemark
public boolean isBlockRemark()
If currently inside a remark, this method tells if it is a block comment (true) or single line comment (false)- Returns:
- true if inside a block comment
-
setSkipRemarks
public void setSkipRemarks(boolean skipRemarks)
If comments should be skipped completely by this reader.- Parameters:
skipRemarks- true if comments should be skipped
-
-