org.alfresco.repo.content
Interface ContentStore

All Known Implementing Classes:
AbstractContentStore, AbstractRoutingContentStore, CachingContentStore, FileContentStore, HttpAlfrescoStore, ReplicatingContentStore, TenantRoutingFileContentStore

public interface ContentStore

Provides low-level retrieval of content readers and writers.

Implementations of this interface should be soley responsible for providing persistence and retrieval of the content against a content URL.

Content URLs must consist of a prefix or protocol followed by an implementation-specific identifier. For example, the content URL format for file stores is store://year/month/day/hour/minute/GUID.bin

Where the store cannot handle a particular content URL request, the UnsupportedContentUrlException must be generated. This will allow various implementations to provide fallback code to other stores where possible.

Where a store cannot serve a particular request because the functionality is just not available, the UnsupportedOperationException should be thrown. Once again, there may be fallback handling provided for these situations.

Since:
1.0

Nested Class Summary
static interface ContentStore.ContentUrlHandler
          Iterface for to use during iteration over content URLs.
 
Field Summary
static ContentContext NEW_CONTENT_CONTEXT
          An empty content context used to retrieve completely new content.
static java.lang.String PROTOCOL_DELIMITER
          The delimiter that must be found in all URLS, i.e ://
 
Method Summary
 boolean delete(java.lang.String contentUrl)
          Deletes the content at the given URL.
 boolean exists(java.lang.String contentUrl)
          Check for the existence of content in the store.
 org.alfresco.service.cmr.repository.ContentReader getReader(java.lang.String contentUrl)
          Get the accessor with which to read from the content at the given URL.
 java.lang.String getRootLocation()
          Get the location where the store is rooted.
 long getSpaceFree()
          Calcualates the remaing free space in the underlying store.
 long getSpaceTotal()
          Calculates the total storage space of the underlying store.
 long getSpaceUsed()
          Calculates the total size of stored content, excluding any other data in the underlying storage.
 long getTotalSize()
          Deprecated. Since 3.3.3 use ContentStore.getSpaceUsed().
 void getUrls(ContentStore.ContentUrlHandler handler)
          Get all URLs for the store, regardless of creation time.
 void getUrls(java.util.Date createdAfter, java.util.Date createdBefore, ContentStore.ContentUrlHandler handler)
          Get a set of all content URLs in the store.
 org.alfresco.service.cmr.repository.ContentWriter getWriter(ContentContext context)
          Get an accessor with which to write content to a location within the store.
 org.alfresco.service.cmr.repository.ContentWriter getWriter(org.alfresco.service.cmr.repository.ContentReader existingContentReader, java.lang.String newContentUrl)
          Deprecated.  
 boolean isContentUrlSupported(java.lang.String contentUrl)
          Check if the content URL format is supported by the store.
 boolean isWriteSupported()
          Check if the store supports write requests.
 

Field Detail

NEW_CONTENT_CONTEXT

static final ContentContext NEW_CONTENT_CONTEXT
An empty content context used to retrieve completely new content.

See Also:
ContentStore.getWriter(ContentContext)

PROTOCOL_DELIMITER

static final java.lang.String PROTOCOL_DELIMITER
The delimiter that must be found in all URLS, i.e ://

See Also:
Constant Field Values
Method Detail

isContentUrlSupported

boolean isContentUrlSupported(java.lang.String contentUrl)
Check if the content URL format is supported by the store.

Parameters:
contentUrl - the content URL to check
Returns:
Returns true if none of the other methods on the store will throw an UnsupportedContentUrlException when given this URL.
Since:
2.1

isWriteSupported

boolean isWriteSupported()
Check if the store supports write requests.

Returns:
Return true is the store supports write operations
Since:
2.1

getTotalSize

long getTotalSize()
Deprecated. Since 3.3.3 use ContentStore.getSpaceUsed().

See Also:
ContentStore.getSpaceFree(), ContentStore.getSpaceTotal()

getSpaceUsed

long getSpaceUsed()
Calculates the total size of stored content, excluding any other data in the underlying storage.

NOTE: Calculating this value can be time-consuming - use sparingly.

NOTE: For efficiency, some implementations may provide a guess. If not, this call could take a long time.

Returns:
Returns the total, possibly approximate size (in bytes) of the binary data stored or -1 if no size data is available.
Since:
3.3.3

getSpaceFree

long getSpaceFree()
Calcualates the remaing free space in the underlying store.

NOTE: For efficiency, some implementations may provide a guess.

Implementations should focus on calculating a size value quickly, rather than accurately.

Returns:
Returns the total, possibly approximate, free space (in bytes) available to the store or -1 if no size data is available.
Since:
3.3.3

getSpaceTotal

long getSpaceTotal()
Calculates the total storage space of the underlying store.

NOTE: For efficiency, some implementations may provide a guess.

Implementations should focus on calculating a size value quickly, rather than accurately.

Returns:
Returns the total, possibly approximate, size (in bytes) of the underlying store or -1 if no size data is available.
Since:
3.3.3

getRootLocation

java.lang.String getRootLocation()
Get the location where the store is rooted. The format of the returned value will depend on the specific implementation of the store.

Returns:
Returns the store's root location or . if no information is available

exists

boolean exists(java.lang.String contentUrl)
Check for the existence of content in the store.

The implementation of this may be more efficient than first getting a reader to check for existence, although that check should also be performed.

Parameters:
contentUrl - the path to the content
Returns:
Returns true if the content exists, otherwise false if the content doesn't exist or if the URL is not applicable to this store.
Throws:
UnsupportedContentUrlException - if the content URL supplied is not supported by the store
org.alfresco.service.cmr.repository.ContentIOException - if an IO error occurs
See Also:
ContentReader.exists()

getReader

org.alfresco.service.cmr.repository.ContentReader getReader(java.lang.String contentUrl)
Get the accessor with which to read from the content at the given URL. The reader is stateful and can only be used once.

Parameters:
contentUrl - the path to where the content is located
Returns:
Returns a read-only content accessor for the given URL. There may be no content at the given URL, but the reader must still be returned.
Throws:
UnsupportedContentUrlException - if the content URL supplied is not supported by the store
org.alfresco.service.cmr.repository.ContentIOException - if an IO error occurs
See Also:
ContentStore.exists(String), ContentReader.exists(), EmptyContentReader

getWriter

org.alfresco.service.cmr.repository.ContentWriter getWriter(ContentContext context)
Get an accessor with which to write content to a location within the store. The writer is stateful and can only be used once. The location may be specified but must, in that case, be a valid and unused URL.

The store will ensure that the new content URL will be valid for all subsequent read attempts.

By supplying a reader to existing content, the store implementation may enable random access. The store implementation can enable this by copying the existing content into the new location before supplying a writer onto the new content.

Parameters:
context - the context of content.
Returns:
Returns a write-only content accessor
Throws:
java.lang.UnsupportedOperationException - if the store is unable to provide the information
UnsupportedContentUrlException - if the content URL supplied is not supported by the store
ContentExistsException - if the content URL is already in use
org.alfresco.service.cmr.repository.ContentIOException - if an IO error occurs
See Also:
#getWriteSupport(), ContentAccessor.addListener(ContentStreamListener), ContentAccessor.getContentUrl()

getWriter

org.alfresco.service.cmr.repository.ContentWriter getWriter(org.alfresco.service.cmr.repository.ContentReader existingContentReader,
                                                            java.lang.String newContentUrl)
Deprecated. 

Shortcut method to ContentStore.getWriter(ContentContext).

See Also:
ContentStore.getWriter(ContentContext)

getUrls

void getUrls(ContentStore.ContentUrlHandler handler)
             throws org.alfresco.service.cmr.repository.ContentIOException
Get all URLs for the store, regardless of creation time.

Throws:
org.alfresco.service.cmr.repository.ContentIOException - if an IO error occurs
java.lang.UnsupportedOperationException - if the store is unable to provide the information
See Also:
#getUrls(Date, Date)

getUrls

void getUrls(java.util.Date createdAfter,
             java.util.Date createdBefore,
             ContentStore.ContentUrlHandler handler)
             throws org.alfresco.service.cmr.repository.ContentIOException
Get a set of all content URLs in the store. This indicates all content available for reads.

Parameters:
createdAfter - all URLs returned must have been created after this date. May be null.
createdBefore - all URLs returned must have been created before this date. May be null.
handler - the callback that will passed each URL
Throws:
org.alfresco.service.cmr.repository.ContentIOException - if an error occurs
java.lang.UnsupportedOperationException - if the store is unable to provide the information

delete

boolean delete(java.lang.String contentUrl)
Deletes the content at the given URL.

A delete cannot be forced since it is much better to have the file remain longer than desired rather than deleted prematurely.

Parameters:
contentUrl - the URL of the content to delete
Returns:
Returns true if the content was deleted (either by this or another operation), otherwise false. If the content no longer exists, then true is returned.
Throws:
java.lang.UnsupportedOperationException - if the store is unable to perform the action
UnsupportedContentUrlException - if the content URL supplied is not supported by the store
org.alfresco.service.cmr.repository.ContentIOException - if an error occurs if an IO error occurs


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