Package org.apache.derby.impl.jdbc
Class EncryptedLOBFile
- java.lang.Object
-
- org.apache.derby.impl.jdbc.LOBFile
-
- org.apache.derby.impl.jdbc.EncryptedLOBFile
-
class EncryptedLOBFile extends LOBFile
This class is a wrapper class on top of StorageRandomAccess to provide common methods to write in encrypted file. This class is NOT thread safe. The user class should take care of synchronization if being used in multi threaded environment.
-
-
Field Summary
Fields Modifier and Type Field Description private intblockSizeBlock size for encryption.private longcurrentPosCurrent file position.private DataFactorydfFactory object used for encryption and decryption.private byte[]tailLeftover bytes.private inttailSizeNumber of actual bytes in tail array.
-
Constructor Summary
Constructors Constructor Description EncryptedLOBFile(StorageFile lobFile, DataFactory df)Constructs the EncryptedLOBFile object with encryption support.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private byte[]getBlocks(long pos, int len)Find the blocks containing the data we are interested in.(package private) longgetFilePointer()Returns the currrent position in the file.(package private) longlength()Returns file length.(package private) intread(byte[] buff, int off, int len)Reads len or remaining bytes in the file (whichever is lower) bytes into buff starting from off position of the buffer.(package private) intreadByte()Reads one byte from file.(package private) voidseek(long pos)Sets the current file pointer to specific location.(package private) voidsetLength(long size)Sets the file length to a given size.(package private) voidwrite(byte[] b)Write the buffer into file at current position.(package private) voidwrite(byte[] b, int off, int len)Writes length number of bytes from buffer starting from off position.(package private) voidwrite(int b)Writes one byte into the file.-
Methods inherited from class org.apache.derby.impl.jdbc.LOBFile
close, getStorageFile
-
-
-
-
Field Detail
-
blockSize
private final int blockSize
Block size for encryption.
-
tail
private final byte[] tail
Leftover bytes. Stored in memory until they fill one block .
-
tailSize
private int tailSize
Number of actual bytes in tail array.
-
currentPos
private long currentPos
Current file position.
-
df
private final DataFactory df
Factory object used for encryption and decryption.
-
-
Constructor Detail
-
EncryptedLOBFile
EncryptedLOBFile(StorageFile lobFile, DataFactory df) throws java.io.FileNotFoundException
Constructs the EncryptedLOBFile object with encryption support.- Parameters:
lobFile- StorageFile Object for which file will be createddf- data factory for encryption and decription- Throws:
java.io.FileNotFoundException- if the file exists but is a directory or cannot be opened
-
-
Method Detail
-
getBlocks
private byte[] getBlocks(long pos, int len) throws java.io.IOException, StandardExceptionFind the blocks containing the data we are interested in.- Parameters:
pos- first position we are interested inlen- number of bytes of interest- Returns:
- byte array containing all the blocks of data the specified region spans over
- Throws:
java.io.IOExceptionStandardException
-
length
long length() throws java.io.IOExceptionReturns file length.
-
getFilePointer
long getFilePointer()
Returns the currrent position in the file.- Overrides:
getFilePointerin classLOBFile- Returns:
- current position of file pointer
-
seek
void seek(long pos) throws java.io.IOException
Sets the current file pointer to specific location.
-
write
void write(int b) throws java.io.IOException, StandardExceptionWrites one byte into the file.- Overrides:
writein classLOBFile- Parameters:
b- byte value- Throws:
java.io.IOException- if disk operation failsStandardException- if error occurred during encryption/decryption
-
write
void write(byte[] b, int off, int len) throws java.io.IOException, StandardExceptionWrites length number of bytes from buffer starting from off position.- Overrides:
writein classLOBFile- Parameters:
b- byte array containing bytes to be writtenoff- starting offset of the byte array from where the data should be written to the filelen- number of bytes to be written- Throws:
java.io.IOException- if disk operation failsStandardException- if error occurred during encryption/decryption
-
write
void write(byte[] b) throws java.io.IOException, StandardExceptionWrite the buffer into file at current position. It overwrites the data if current position is in the middle of the file and appends into the file if the total length exceeds the file size.- Overrides:
writein classLOBFile- Parameters:
b- byte array to be written- Throws:
java.io.IOException- if disk operation failsStandardException- if error occurred during encryption/decryption
-
readByte
int readByte() throws java.io.IOException, StandardExceptionReads one byte from file.- Overrides:
readBytein classLOBFile- Returns:
- byte
- Throws:
java.io.IOException- if disk operation failsStandardException- if error occurred during decryption
-
read
int read(byte[] buff, int off, int len) throws java.io.IOException, StandardExceptionReads len or remaining bytes in the file (whichever is lower) bytes into buff starting from off position of the buffer.- Overrides:
readin classLOBFile- Parameters:
buff- byte array to fill read bytesoff- offset of buff where the byte will be writtenlen- number of bytes to be read- Returns:
- number of bytes read
- Throws:
java.io.IOException- if disk operation failsStandardException- if error occurred during decryption
-
setLength
void setLength(long size) throws java.io.IOException, StandardExceptionSets the file length to a given size. If the new size is smaller than the file length the file is truncated.- Overrides:
setLengthin classLOBFile- Parameters:
size- new file size. Must be lower than file length.- Throws:
java.io.IOException- if file i/o failsStandardException- if error occurred during decryption
-
-