org.alfresco.repo.content.filestore
Class FileContentReader

java.lang.Object
  extended by org.alfresco.repo.content.AbstractContentAccessor
      extended by org.alfresco.repo.content.AbstractContentReader
          extended by org.alfresco.repo.content.filestore.FileContentReader
All Implemented Interfaces:
org.alfresco.service.cmr.repository.ContentAccessor, org.alfresco.service.cmr.repository.ContentReader, org.alfresco.service.cmr.repository.FileContentReader

public class FileContentReader
extends AbstractContentReader
implements org.alfresco.service.cmr.repository.FileContentReader

Provides direct access to a local file.

This class does not provide remote access to the file.


Nested Class Summary
 
Nested classes/interfaces inherited from class org.alfresco.repo.content.AbstractContentAccessor
AbstractContentAccessor.CallbackFileChannel, AbstractContentAccessor.ChannelCloseCallbackAdvise
 
Field Summary
static java.lang.String MSG_MISSING_CONTENT
          message key for missing content.
 
Constructor Summary
FileContentReader(java.io.File file)
          Constructor that builds a URL based on the absolute path of the file.
FileContentReader(java.io.File file, java.lang.String url)
          Constructor that explicitely sets the URL that the reader represents.
 
Method Summary
 boolean canWrite()
           
protected  org.alfresco.service.cmr.repository.ContentReader createReader()
          The URL of the write is known from the start and this method contract states that no consideration needs to be taken w.r.t.
 boolean exists()
           
protected  java.nio.channels.ReadableByteChannel getDirectReadableChannel()
          Provides low-level access to read content from the repository.
 java.io.File getFile()
           
 long getLastModified()
           
static org.alfresco.service.cmr.repository.ContentReader getSafeContentReader(org.alfresco.service.cmr.repository.ContentReader existingReader, java.lang.String msgTemplate, java.lang.Object[] args)
          Checks the existing reader provided and replaces it with a reader onto some fake content if required.
 long getSize()
           
 
Methods inherited from class org.alfresco.repo.content.AbstractContentReader
addListener, compareContentReaders, getContent, getContent, getContentInputStream, getContentString, getContentString, getFileChannel, getReadableChannel, getReader, isChannelOpen, isClosed
 
Methods inherited from class org.alfresco.repo.content.AbstractContentAccessor
channelOpened, finalize, getCallbackFileChannel, getContentData, getContentUrl, getEncoding, getLocale, getMimetype, setContentUrl, setEncoding, setLocale, setMimetype, toString
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.alfresco.service.cmr.repository.ContentReader
getContent, getContent, getContentInputStream, getContentString, getContentString, getFileChannel, getReadableChannel, getReader, isClosed
 
Methods inherited from interface org.alfresco.service.cmr.repository.ContentAccessor
addListener, getContentData, getContentUrl, getEncoding, getLocale, getMimetype, isChannelOpen, setEncoding, setLocale, setMimetype
 

Field Detail

MSG_MISSING_CONTENT

public static final java.lang.String MSG_MISSING_CONTENT
message key for missing content. Parameters are

See Also:
Constant Field Values
Constructor Detail

FileContentReader

public FileContentReader(java.io.File file)
Constructor that builds a URL based on the absolute path of the file.

Parameters:
file - the file for reading. This will most likely be directly related to the content URL.

FileContentReader

public FileContentReader(java.io.File file,
                         java.lang.String url)
Constructor that explicitely sets the URL that the reader represents.

Parameters:
file - the file for reading. This will most likely be directly related to the content URL.
url - the relative url that the reader represents
Method Detail

getSafeContentReader

public static org.alfresco.service.cmr.repository.ContentReader getSafeContentReader(org.alfresco.service.cmr.repository.ContentReader existingReader,
                                                                                     java.lang.String msgTemplate,
                                                                                     java.lang.Object[] args)
Checks the existing reader provided and replaces it with a reader onto some fake content if required. If the existing reader is invalid, an debug message will be logged under this classname category.

It is a convenience method that clients can use to cheaply get a reader that is valid, regardless of whether the initial reader is valid.

Parameters:
existingReader - a potentially invalid reader or null
msgTemplate - the template message that will used to format the final fake content
args - arguments to put into the fake content
Returns:
Returns a the existing reader or a new reader onto some generated text content

getFile

public java.io.File getFile()
Specified by:
getFile in interface org.alfresco.service.cmr.repository.FileContentReader
Returns:
Returns the file that this reader accesses

exists

public boolean exists()
Specified by:
exists in interface org.alfresco.service.cmr.repository.ContentReader
Specified by:
exists in interface org.alfresco.service.cmr.repository.FileContentReader
Returns:
Whether the file exists or not

getSize

public long getSize()
Specified by:
getSize in interface org.alfresco.service.cmr.repository.ContentAccessor
See Also:
File.length()

getLastModified

public long getLastModified()
Specified by:
getLastModified in interface org.alfresco.service.cmr.repository.ContentReader
See Also:
File.lastModified()

createReader

protected org.alfresco.service.cmr.repository.ContentReader createReader()
                                                                  throws org.alfresco.service.cmr.repository.ContentIOException
The URL of the write is known from the start and this method contract states that no consideration needs to be taken w.r.t. the stream state.

Specified by:
createReader in class AbstractContentReader
Returns:
Returns a reader onto the location referenced by this instance. The instance must always be a new instance.
Throws:
org.alfresco.service.cmr.repository.ContentIOException

getDirectReadableChannel

protected java.nio.channels.ReadableByteChannel getDirectReadableChannel()
                                                                  throws org.alfresco.service.cmr.repository.ContentIOException
Description copied from class: AbstractContentReader
Provides low-level access to read content from the repository.

This is the only of the content reading methods that needs to be implemented by derived classes. All other content access methods make use of this in their underlying implementations.

Specified by:
getDirectReadableChannel in class AbstractContentReader
Returns:
Returns a channel from which content can be read
Throws:
org.alfresco.service.cmr.repository.ContentIOException - if the channel could not be opened or the underlying content has disappeared

canWrite

public boolean canWrite()
Returns:
Returns false as this is a reader


Copyright © 2005 - 2010 Alfresco Software, Inc. All Rights Reserved.