|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.entityfs.support.lang.ObjectProxySupport<T>
org.entityfs.lock.AbstractReadWriteLockableProxy<EntityImplementation>
org.entityfs.cap.metadata.impl.MetadataFileAdapter
public class MetadataFileAdapter
This adapter enables a metadata-enabling entity delegate (an entity adapter
that implements MetadataEnablingEntityDelegate) to be used as a file.
| Constructor Summary | |
|---|---|
MetadataFileAdapter(EntityImplementation parent,
MetadataEnablingEntityDelegate delegate,
String name,
boolean canCreateLazily)
|
|
MetadataFileAdapter(EntityImplementation parent,
MetadataEnablingEntityDelegate delegate,
String name,
FileDelegate file)
|
|
| Method Summary | |
|---|---|
long |
copy(OutputStream os)
Dump the file contents to the stream. |
long |
copy(WritableByteChannel c)
Copy the file's contents to the WritableByteChannel. |
void |
delete()
Delete the entity from the file system. |
long |
getDataSize()
Get the size of the data in the file. |
long |
getSize()
Get the size of the file (in bytes). |
long |
getSizeNoLocking()
Get an approximate size of the file without having to lock it. |
boolean |
isDeleted()
Check if the entity has been deleted. |
WritableByteChannel |
openChannelForAppend()
Open a WritableByteChannel for appending to the file. |
ReadableByteChannel |
openChannelForRead()
Open a ReadableByteChannel for reading from the file. |
WritableByteChannel |
openChannelForWrite()
Open a WritableByteChannel for writing on the file. |
OutputStream |
openForAppend()
Open the file for appending. |
RandomAccess |
openForRandomAccess(RandomAccessMode m)
Open the file for random access in the specified mode. |
InputStream |
openForRead()
Opens the file for reading. |
OutputStream |
openForWrite()
Opens the file for writing. |
void |
replaceContents(ReadWritableFile f)
Replace the contents of this file with the contents of the supplied file and then delete the supplied file. |
| Methods inherited from class org.entityfs.lock.AbstractReadWriteLockableProxy |
|---|
getReadLock, getWriteLock, isReadLockedByCurrentThread, isWriteLockedByCurrentThread, lockForReading, lockForWriting |
| Methods inherited from class org.entityfs.support.lang.ObjectProxySupport |
|---|
equals, getProxied, hashCode, toString |
| Methods inherited from class java.lang.Object |
|---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
| Methods inherited from interface org.entityfs.lock.ReadLockable |
|---|
getReadLock, isReadLockedByCurrentThread, lockForReading |
| Methods inherited from interface org.entityfs.lock.WriteLockable |
|---|
getWriteLock, isWriteLockedByCurrentThread, lockForWriting |
| Constructor Detail |
|---|
public MetadataFileAdapter(EntityImplementation parent,
MetadataEnablingEntityDelegate delegate,
String name,
boolean canCreateLazily)
public MetadataFileAdapter(EntityImplementation parent,
MetadataEnablingEntityDelegate delegate,
String name,
FileDelegate file)
| Method Detail |
|---|
public WritableByteChannel openChannelForWrite()
WritableFileWritableByteChannel for writing on the file. The semantics
of this method is the same as for WritableFile.openForWrite().
openChannelForWrite in interface WritableFileWritableByteChannel. The channel must be closed
by the caller. The returned channel may be a
GatheringByteChannel, but that is not required.WritableFile.openForWrite(),
WritableFile.openChannelForAppend()public WritableByteChannel openChannelForAppend()
WritableFileWritableByteChannel for appending to the file. The
semantics of this method is the same as for WritableFile.openForAppend().
openChannelForAppend in interface WritableFileWritableByteChannel. The channel must be closed
by the caller. The returned channel may be a
GatheringByteChannel, but that is not required.public OutputStream openForWrite()
WritableFileWritableFile.openForAppend() to append to the file.
The caller is responsible for closing the stream.
When two output streams, one writing and one appending are open on the same file, the stream opened for write will ignore the contents written by the other stream and the content written by the other stream will be overwritten. When two or more appending streams are opened on a file, a stream will not overwrite the content written by the other streams.
Although a write lock on the file is required for the execution thread
opening the stream, the stream itself is not protected from access by
other threads. It can be protected by wrapping it in a
LockAwareOutputStream.
openForWrite in interface WritableFileOutputStream to write to. The stream must be closed by
the caller.WritableFile.openForAppend(),
WritableFile.openChannelForWrite()public OutputStream openForAppend()
WritableFileWritableFile.openForWrite() to delete the previous contents before
writing. This requires that the file supports the
FCAppendable capability (and/or that the
file system supports the FSCAppendableFiles
capability.
The caller is responsible for closing the stream.
When two appending output streams are open on the same file, one stream will not overwrite contents written by the other stream. Compare this with the behavior of one writing and one appending stream.
Although a write lock on the file is required for the execution thread
opening the stream, the stream itself is not protected from access by
other threads. It can be protected by wrapping it in a
LockAwareWritableByteChannel.
openForAppend in interface WritableFileOutputStream to write to. The stream must be closed by
the caller.WritableFile.openForWrite(),
WritableFile.openChannelForAppend()public ReadableByteChannel openChannelForRead()
ReadableFileReadableByteChannel for reading from the file. The
semantics of this method is the same as for ReadableFile.openForRead().
Although a read lock on the file is required for the execution thread
opening the channel, the channel itself is not protected from access by
other threads. It can be protected by wrapping it in a
LockAwareReadableByteChannel.
openChannelForRead in interface ReadableFileReadableByteChannel. The channel must be closed
by the caller. The channel may be a
ScatteringByteChannel, but that is not
required.ReadableFile.openForRead()public InputStream openForRead()
ReadableFile
Although a read lock on the file is required for the execution thread
opening the stream, the stream itself is not protected from access by
other threads. It can be protected by wrapping it in a
LockAwareInputStream.
openForRead in interface ReadableFileInputStream on the file. The stream must be closed by
the caller.public RandomAccess openForRandomAccess(RandomAccessMode m)
RandomlyAccessibleFile
Although a read or write lock on the file is required for the execution
thread opening the RandomAccess, the RandomAccess object
itself is not protected from access by other threads. It can be protected
by wrapping it in a LockAwareRandomAccess
object.
openForRandomAccess in interface RandomlyAccessibleFilem - The mode to open the file in.
RandomAccess object. It must be closed by the
caller.public void delete()
DeletableEntityView.isValid() will return false from now on).
delete in interface Deletablepublic boolean isDeleted()
DeletableEntityView.isValid()
, this method does not do any backend validation, so if the entity has
been deleted in the backend storage without going through the EntityFS
API, use that method instead.
isDeleted in interface Deletabletrue if the entity object has been deleted.public long getSize()
ReadableFileNote: Most, but not all, implementations know their sizes. If an implementation does not know its size beforehand, this method will be slow since it has to calculate the file size when it is called.
Implementation note: If the size of the backing file is not known,
the
StreamUtil.getSizeOfDataInStream(InputStream, int)
method can be used to calculate it.
getSize in interface ReadableFileReadableFile.getDataSize()public long getSizeNoLocking()
ReadWritableFile
getSizeNoLocking in interface ReadWritableFile0 is returned.ReadableFile.getSize()public long getDataSize()
ReadableFileReadableFile.getSize().
Warning: Calculating the data size of a file has the potential of being really slow, depending on the implementation used. The entire file may have to be read through in order to calculate the size of its data.
Implementation note: If the size of the backing file is not known,
the
StreamUtil.getSizeOfDataInStream(InputStream, int)
method can be used to calculate it.
getDataSize in interface ReadableFileReadableFile.getSize()public void replaceContents(ReadWritableFile f)
ReadWritableFilef over to this file, which makes the entire operation quick and not
requiring any extra disk space.
If both files support metadata, this file's metadata is replaced with
that of f.
replaceContents in interface ReadWritableFilef - The file whose contents are to be moved to this file. f
is deleted by this method.public long copy(OutputStream os)
ReadWritableFile
copy in interface ReadWritableFileos - The stream the file contents are written to. The stream is not
closed after writing, that must be done by the caller.
public long copy(WritableByteChannel c)
ReadWritableFileWritableByteChannel.
copy in interface ReadWritableFilec - The WritableByteChannel. The channel is not closed by
this method.
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||