Class ArchiveFileV2
- java.lang.Object
-
- org.eclipse.birt.core.archive.compound.ArchiveFileV2
-
- All Implemented Interfaces:
IArchiveFile
public class ArchiveFileV2 extends java.lang.Object implements IArchiveFile
the archive file contains following mode:- "r" open the file for read only.
- "rw" create the file for read/write
- "rw+" open file is open for read/write
- "rwt" create the transient file, it will be removed after closing.
-
-
Field Summary
Fields Modifier and Type Field Description static int
ALLOC_TABLE_BLOCK
the first block of allocation tableprotected org.eclipse.birt.core.archive.compound.AllocTable
allocTbl
allocation table of the archive fileprotected java.lang.String
archiveName
the archive file name.protected int
BLOCK_SIZE
protected org.eclipse.birt.core.archive.cache.FileCacheManager
caches
cache manager of the archive file.static int
DEFAULT_BLOCK_SIZE
Size of a physical block, counted in bytes.static int
DEFAULT_BUFFER_POOL_SIZE
default size of buffer pool - number of buffer blocks in buffer poolprotected java.lang.String
dependId
static long
DOCUMENT_TAG
The magic tag of the archive file: "RPTDOC"static long
DOCUMENT_VERSION_0
After support system id in archive file, DOCUMENT_VERSION_1 is writen into header.static long
DOCUMENT_VERSION_1
protected java.util.HashMap<java.lang.String,org.eclipse.birt.core.archive.compound.NameEntry>
entries
archive entries in the tablestatic int
ENTRY_ITEM_SIZE
the size of a entry in the entry table, counted in bytesstatic int
ENTRY_TABLE_BLOCK
the first block of entry tableprotected org.eclipse.birt.core.archive.compound.NameTable
entryTbl
entry table of the archive filestatic int
FILE_STATUS_FINISHED
File status value: finishedprotected org.eclipse.birt.core.archive.compound.ArchiveHeader
head
header statusstatic int
HEADER_BLOCK
the block of archive headerprotected boolean
isAppend
the archive file is appended.protected boolean
isClosed
if the file is closed.protected boolean
isTransient
the archive file is transient.protected boolean
isWritable
the archive file is writable.static int
MIN_BUFFER_POOL_SIZE
Min size of buffer pool - number of buffer blocks in buffer poolstatic java.lang.String
PROPERTY_DEFAULT_BLOCK_SIZE
the system property defines the block size, it should be times of 1024.protected java.io.RandomAccessFile
rf
the physical file correspond to this compound file systemprotected java.lang.String
systemId
protected int
totalBlocks
the total blocks exits in this fileprotected int
totalDiskBlocks
the total blocks exits in the disk
-
Constructor Summary
Constructors Constructor Description ArchiveFileV2(java.lang.String fileName, java.io.RandomAccessFile rf, java.lang.String mode)
create the archive file.ArchiveFileV2(java.lang.String fileName, java.lang.String mode)
ArchiveFileV2(java.lang.String systemId, java.lang.String fileName, java.lang.String mode)
ArchiveFileV2(java.lang.String systemId, java.lang.String dependId, java.lang.String fileName, java.io.RandomAccessFile rf, java.lang.String mode)
create the archive file.ArchiveFileV2(java.lang.String systemId, java.lang.String dependId, java.lang.String fileName, java.lang.String mode)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
close the archive.protected Block
createBlock()
ArchiveEntry
createEntry(java.lang.String name)
boolean
exists(java.lang.String name)
void
flush()
java.lang.String
getDependId()
long
getLength()
java.lang.String
getName()
get the archive name.java.lang.String
getSystemId()
long
getUsedCache()
java.util.List<java.lang.String>
listEntries(java.lang.String namePattern)
java.lang.Object
lockEntry(java.lang.String name)
ArchiveEntry
openEntry(java.lang.String name)
void
refresh()
boolean
removeEntry(java.lang.String name)
void
save()
void
setCacheSize(long cacheSize)
set up the cache size.protected void
unloadBlock(Block block)
void
unlockEntry(java.lang.Object locker)
-
-
-
Field Detail
-
rf
protected java.io.RandomAccessFile rf
the physical file correspond to this compound file system
-
isClosed
protected boolean isClosed
if the file is closed.
-
isWritable
protected boolean isWritable
the archive file is writable.
-
isTransient
protected boolean isTransient
the archive file is transient.
-
isAppend
protected boolean isAppend
the archive file is appended.
-
archiveName
protected java.lang.String archiveName
the archive file name.
-
systemId
protected java.lang.String systemId
-
dependId
protected java.lang.String dependId
-
BLOCK_SIZE
protected int BLOCK_SIZE
-
head
protected org.eclipse.birt.core.archive.compound.ArchiveHeader head
header status
-
allocTbl
protected org.eclipse.birt.core.archive.compound.AllocTable allocTbl
allocation table of the archive file
-
entryTbl
protected org.eclipse.birt.core.archive.compound.NameTable entryTbl
entry table of the archive file
-
entries
protected java.util.HashMap<java.lang.String,org.eclipse.birt.core.archive.compound.NameEntry> entries
archive entries in the table
-
caches
protected org.eclipse.birt.core.archive.cache.FileCacheManager caches
cache manager of the archive file.
-
totalBlocks
protected int totalBlocks
the total blocks exits in this file
-
totalDiskBlocks
protected int totalDiskBlocks
the total blocks exits in the disk
-
DOCUMENT_TAG
public static final long DOCUMENT_TAG
The magic tag of the archive file: "RPTDOC"- See Also:
- Constant Field Values
-
DOCUMENT_VERSION_0
public static final long DOCUMENT_VERSION_0
After support system id in archive file, DOCUMENT_VERSION_1 is writen into header.- See Also:
- Constant Field Values
-
DOCUMENT_VERSION_1
public static final long DOCUMENT_VERSION_1
- See Also:
- Constant Field Values
-
PROPERTY_DEFAULT_BLOCK_SIZE
public static final java.lang.String PROPERTY_DEFAULT_BLOCK_SIZE
the system property defines the block size, it should be times of 1024.- See Also:
- Constant Field Values
-
DEFAULT_BLOCK_SIZE
public static final int DEFAULT_BLOCK_SIZE
Size of a physical block, counted in bytes.- See Also:
- Constant Field Values
-
HEADER_BLOCK
public static final int HEADER_BLOCK
the block of archive header- See Also:
- Constant Field Values
-
ALLOC_TABLE_BLOCK
public static final int ALLOC_TABLE_BLOCK
the first block of allocation table- See Also:
- Constant Field Values
-
ENTRY_TABLE_BLOCK
public static final int ENTRY_TABLE_BLOCK
the first block of entry table- See Also:
- Constant Field Values
-
ENTRY_ITEM_SIZE
public static final int ENTRY_ITEM_SIZE
the size of a entry in the entry table, counted in bytes- See Also:
- Constant Field Values
-
FILE_STATUS_FINISHED
public static final int FILE_STATUS_FINISHED
File status value: finished- See Also:
- Constant Field Values
-
DEFAULT_BUFFER_POOL_SIZE
public static final int DEFAULT_BUFFER_POOL_SIZE
default size of buffer pool - number of buffer blocks in buffer pool- See Also:
- Constant Field Values
-
MIN_BUFFER_POOL_SIZE
public static final int MIN_BUFFER_POOL_SIZE
Min size of buffer pool - number of buffer blocks in buffer pool- See Also:
- Constant Field Values
-
-
Constructor Detail
-
ArchiveFileV2
public ArchiveFileV2(java.lang.String fileName, java.io.RandomAccessFile rf, java.lang.String mode) throws java.io.IOException
create the archive file.- Parameters:
fileName
- file name.rf
- the random access filemode
- open mode.- Throws:
java.io.IOException
-
ArchiveFileV2
public ArchiveFileV2(java.lang.String fileName, java.lang.String mode) throws java.io.IOException
- Throws:
java.io.IOException
-
ArchiveFileV2
public ArchiveFileV2(java.lang.String systemId, java.lang.String fileName, java.lang.String mode) throws java.io.IOException
- Throws:
java.io.IOException
-
ArchiveFileV2
public ArchiveFileV2(java.lang.String systemId, java.lang.String dependId, java.lang.String fileName, java.lang.String mode) throws java.io.IOException
- Throws:
java.io.IOException
-
ArchiveFileV2
public ArchiveFileV2(java.lang.String systemId, java.lang.String dependId, java.lang.String fileName, java.io.RandomAccessFile rf, java.lang.String mode) throws java.io.IOException
create the archive file.- Parameters:
fileName
- file name.mode
- open mode.- Throws:
java.io.IOException
-
-
Method Detail
-
setCacheSize
public void setCacheSize(long cacheSize)
set up the cache size. the actually cache size is round to block size.- Specified by:
setCacheSize
in interfaceIArchiveFile
- Parameters:
cacheSize
- cache size in bytes
-
getUsedCache
public long getUsedCache()
- Specified by:
getUsedCache
in interfaceIArchiveFile
-
getDependId
public java.lang.String getDependId()
- Specified by:
getDependId
in interfaceIArchiveFile
-
getSystemId
public java.lang.String getSystemId()
- Specified by:
getSystemId
in interfaceIArchiveFile
-
getName
public java.lang.String getName()
get the archive name. the archive name is the file name used to create the archive instance.- Specified by:
getName
in interfaceIArchiveFile
- Returns:
- archive name.
-
close
public void close() throws java.io.IOException
close the archive. all changed data will be flushed into disk if the file is opened for write. the file will be removed if it is opend as transient. after close, the instance can't be used any more.- Specified by:
close
in interfaceIArchiveFile
- Throws:
java.io.IOException
-
flush
public void flush() throws java.io.IOException
- Specified by:
flush
in interfaceIArchiveFile
- Throws:
java.io.IOException
-
save
public void save() throws java.io.IOException
- Specified by:
save
in interfaceIArchiveFile
- Throws:
java.io.IOException
-
refresh
public void refresh() throws java.io.IOException
- Specified by:
refresh
in interfaceIArchiveFile
- Throws:
java.io.IOException
-
exists
public boolean exists(java.lang.String name)
- Specified by:
exists
in interfaceIArchiveFile
-
getLength
public long getLength()
- Specified by:
getLength
in interfaceIArchiveFile
-
openEntry
public ArchiveEntry openEntry(java.lang.String name) throws java.io.IOException
- Specified by:
openEntry
in interfaceIArchiveFile
- Throws:
java.io.IOException
-
listEntries
public java.util.List<java.lang.String> listEntries(java.lang.String namePattern)
- Specified by:
listEntries
in interfaceIArchiveFile
-
createEntry
public ArchiveEntry createEntry(java.lang.String name) throws java.io.IOException
- Specified by:
createEntry
in interfaceIArchiveFile
- Throws:
java.io.IOException
-
removeEntry
public boolean removeEntry(java.lang.String name) throws java.io.IOException
- Specified by:
removeEntry
in interfaceIArchiveFile
- Throws:
java.io.IOException
-
lockEntry
public java.lang.Object lockEntry(java.lang.String name) throws java.io.IOException
- Specified by:
lockEntry
in interfaceIArchiveFile
- Throws:
java.io.IOException
-
unlockEntry
public void unlockEntry(java.lang.Object locker) throws java.io.IOException
- Specified by:
unlockEntry
in interfaceIArchiveFile
- Throws:
java.io.IOException
-
createBlock
protected Block createBlock() throws java.io.IOException
- Throws:
java.io.IOException
-
unloadBlock
protected void unloadBlock(Block block) throws java.io.IOException
- Throws:
java.io.IOException
-
-