public class CachingAttachmentProvider extends Object implements WikiAttachmentProvider
Modifier and Type | Field and Description |
---|---|
static String |
ATTCACHE_NAME
Name of the attachment cache.
|
static String |
ATTCOLLCACHE_NAME
Name of the attachment cache.
|
static String |
DIR_EXTENSION
The extension to append to directory names to denote an attachment directory.
|
static int |
m_capacity
Default cache capacity for now.
|
static String |
PROP_STORAGEDIR
Property that supplies the directory used to store attachments.
|
LATEST_VERSION
Constructor and Description |
---|
CachingAttachmentProvider() |
Modifier and Type | Method and Description |
---|---|
void |
deleteAttachment(Attachment att)
Removes an entire page from the repository.
|
void |
deleteVersion(Attachment att)
Removes a specific version from the repository.
|
Collection<Attachment> |
findAttachments(QueryItem[] query)
Finds attachments based on the query.
|
InputStream |
getAttachmentData(Attachment att)
Get attachment data.
|
Attachment |
getAttachmentInfo(WikiPage page,
String name,
int version)
Returns info about an attachment.
|
String |
getProviderInfo()
Gets the provider class name, and cache statistics (misscount and,hitcount of the attachment cache).
|
WikiAttachmentProvider |
getRealProvider()
Returns the WikiAttachmentProvider that this caching provider delegates to.
|
List<Attachment> |
getVersionHistory(Attachment att)
Returns version history.
|
void |
initialize(WikiEngine engine,
Properties properties)
Initializes the page provider.
|
List<Attachment> |
listAllChanged(Date timestamp)
Lists changed attachments since given date.
|
List<Attachment> |
listAttachments(WikiPage page)
Lists all attachments attached to a page.
|
void |
moveAttachmentsForPage(String oldParent,
String newParent)
Move all the attachments for a given page so that they are attached to a
new page.
|
void |
putAttachmentData(Attachment att,
InputStream data)
Put new attachment data.
|
public static final int m_capacity
public static final String ATTCOLLCACHE_NAME
public static final String ATTCACHE_NAME
public static final String DIR_EXTENSION
public static final String PROP_STORAGEDIR
public CachingAttachmentProvider()
public void initialize(WikiEngine engine, Properties properties) throws NoRequiredPropertyException, IOException
initialize
in interface WikiProvider
engine
- WikiEngine to own this providerproperties
- A set of properties used to initialize this providerNoRequiredPropertyException
- If the provider needs a property which is not found in the property setIOException
- If there is an IO problempublic void putAttachmentData(Attachment att, InputStream data) throws ProviderException, IOException
putAttachmentData
in interface WikiAttachmentProvider
att
- Attachment object to add new data todata
- The stream from which the provider should read the dataProviderException
- If there are other errors.IOException
- If writing failspublic InputStream getAttachmentData(Attachment att) throws ProviderException, IOException
getAttachmentData
in interface WikiAttachmentProvider
att
- The attachmentProviderException
- If the attachment cannot be foundIOException
- If the attachment cannot be openedpublic List<Attachment> listAttachments(WikiPage page) throws ProviderException
listAttachments
in interface WikiAttachmentProvider
page
- The page to list the attachments from.ProviderException
- If something goes wrong when listing the attachments.public Collection<Attachment> findAttachments(QueryItem[] query)
findAttachments
in interface WikiAttachmentProvider
query
- An array of QueryItem objects to search forpublic List<Attachment> listAllChanged(Date timestamp) throws ProviderException
This is different from WikiPageProvider, where you basically get a list of all pages, then sort them locally. However, since some providers can be more efficient in locating recently changed files (like any database) than our non-optimized Java code, it makes more sense to fetch the whole list this way.
To get all files, call this with Date(0L);
listAllChanged
in interface WikiAttachmentProvider
timestamp
- List all files from this date onward.ProviderException
- If something goes wrong.public Attachment getAttachmentInfo(WikiPage page, String name, int version) throws ProviderException
getAttachmentInfo
in interface WikiAttachmentProvider
page
- The parent pagename
- The name of the attachmentversion
- The version of the attachment (it's okay to use WikiPage.LATEST_VERSION to find the latest one)ProviderException
- If the attachment cannot be found or some other error occurs.public List<Attachment> getVersionHistory(Attachment att)
getVersionHistory
in interface WikiAttachmentProvider
att
- The attachment for which to find the version history for.public void deleteVersion(Attachment att) throws ProviderException
deleteVersion
in interface WikiAttachmentProvider
att
- Attachment to be removed. The version field is checked, and thus
only that version is removed.ProviderException
- If the attachment cannot be removed for some reason.public void deleteAttachment(Attachment att) throws ProviderException
deleteAttachment
in interface WikiAttachmentProvider
att
- Attachment to delete.ProviderException
- If the page could not be removed for some reason.public String getProviderInfo()
getProviderInfo
in interface WikiProvider
public WikiAttachmentProvider getRealProvider()
public void moveAttachmentsForPage(String oldParent, String newParent) throws ProviderException
moveAttachmentsForPage
in interface WikiAttachmentProvider
oldParent
- Name of the page we are to move the attachments from.newParent
- Name of the page we are to move the attachments to.ProviderException
- If the attachments could not be moved for some
reason.Copyright © 2001-2019 The Apache Software Foundation. All rights reserved.