Interface AttachmentService
-
- All Superinterfaces:
DocumentIndexing
- All Known Implementing Classes:
SimpleDocumentService
public interface AttachmentService extends DocumentIndexing
Service to manage the attachments of resources in Silverpeas.- Author:
- ehugonnet
-
-
Field Summary
Fields Modifier and Type Field Description static String
VERSION_MODE
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Modifier and Type Method Description void
addXmlForm(SimpleDocumentPK pk, String language, String xmlFormName)
SimpleDocumentPK
changeVersionState(SimpleDocumentPK pk, String comment)
Change the management of versions of the document.SimpleDocumentPK
cloneDocument(SimpleDocument original, String foreignCloneId)
Clones the given document and attached it to the specified resource.List<org.silverpeas.kernel.util.Pair<SimpleDocumentPK,SimpleDocumentPK>>
copyAllDocuments(ResourceReference sourceResource, ResourceReference destinationResource)
Copies all the attachments linked to the given source resource to the specified destination one.SimpleDocumentPK
copyDocument(SimpleDocument original, ResourceReference targetResource)
Copies the specified document to another existing resource.SimpleDocument
createAttachment(SimpleDocument document, File content)
Creates the attachment and saves the content of the specified document.SimpleDocument
createAttachment(SimpleDocument document, File content, boolean indexIt)
Creates the attachment, saves the content of the specified document and indexes it if asked.SimpleDocument
createAttachment(SimpleDocument document, File content, boolean indexIt, boolean notify)
Creates the attachment, saves the content of the specified document, indexes it if asked, and notifies about the creation.SimpleDocument
createAttachment(SimpleDocument document, InputStream content)
Creates the attachment and saves the content of the specified document.SimpleDocument
createAttachment(SimpleDocument document, InputStream content, boolean indexIt)
Creates the attachment, saves the content of the specified document and indexes it if asked.SimpleDocument
createAttachment(SimpleDocument document, InputStream content, boolean indexIt, boolean notify)
Creates the attachment, saves the content of the specified document, indexes it if asked, and notifies about the creation.void
createIndex(SimpleDocument document)
Indexes the specified document.void
createIndex(SimpleDocument document, Date startOfVisibilityPeriod, Date endOfVisibilityPeriod)
Creates an index on the specified document with a period of time of visibility.void
deleteAllAttachments(String componentInstanceId)
Deletes all the documents related to the component instance identified by the specified identifier.void
deleteAllAttachments(String resourceId, String componentInstanceId)
Deletes all the documents attached to a resource.void
deleteAttachment(SimpleDocument document)
Deletes the given document and notifies about this deletion.void
deleteAttachment(SimpleDocument document, boolean notify)
Deletes the given document and notifies about this deletion is asked.void
deleteIndex(SimpleDocument document)
Deletes any index on the specified document.SimpleDocument
findExistingDocument(SimpleDocumentPK pk, String fileName, ResourceReference foreign, String lang)
Find documents with the same name attached to the specified foreign id.static AttachmentService
get()
void
getBinaryContent(File file, SimpleDocumentPK pk, String lang)
Writes the binary content into the specified File.void
getBinaryContent(OutputStream output, SimpleDocumentPK pk, String lang)
Writes the binary content into the specified OutputStream.void
getBinaryContent(OutputStream output, SimpleDocumentPK pk, String lang, long contentOffset, long contentLength)
Writes the binary content contained between begin and end indexes into the specified OutputStream.void
indexAllDocuments(ResourceReference resource, Date startOfVisibilityPeriod, Date endOfVisibilityPeriod)
Indexes all the documents (whatever their type) of the given resource.SimpleDocumentList<SimpleDocument>
listAllDocumentsByForeignKey(ResourceReference foreignKey, String lang)
Search all the documents (whatever their type: files, xmlform content, wysiwyg, ...) attached to the specified resource and in the given language.SimpleDocumentList<SimpleDocument>
listDocumentsByForeignKey(ResourceReference foreignKey, String lang)
Search all the documents of type files attached to the specified resource and in the given language.SimpleDocumentList<SimpleDocument>
listDocumentsByForeignKeyAndType(ResourceReference foreignKey, DocumentType type, String lang)
Search all the documents attached to the specified resource, for a given type of document, and in the specified language.List<SimpleDocument>
listDocumentsLockedByUser(String usedId, String language)
Search all the documents locked by a specific user.List<SimpleDocument>
listDocumentsRequiringWarning(Date alertDate, String language)
Search all the documents in an instance which are locked at the alert date.List<SimpleDocument>
listDocumentsToUnlock(Date expiryDate, String language)
Search all the documents in an instance requiring to be unlocked at the specified date.List<SimpleDocument>
listExpiringDocuments(Date alertDate, String language)
Search all the documents in an instance which require an alert at the specified date.boolean
lock(String attachmentId, String userId, String language)
Checkout a file to be updated by user.Map<String,String>
mergeDocuments(ResourceReference originalResource, ResourceReference clonedResource, DocumentType type)
Merges the documents of the cloned resource with their original counterparts.List<SimpleDocumentPK>
moveAllDocuments(ResourceReference sourceResource, ResourceReference destinationResource)
Moves all the attachments linked to the specified resource to the another one.SimpleDocumentPK
moveDocument(SimpleDocument document, ResourceReference destination)
Moves the specified document to the given resource.void
removeContent(SimpleDocument document, String lang, boolean notify)
Removes the content of the specified document in the given language.void
reorderAttachments(List<SimpleDocumentPK> pks)
Reorders the documents referenced in the given list according their order in the list.void
reorderDocuments(List<SimpleDocument> documents)
Reorders the documents in the given list according their order in the list.SimpleDocument
searchDocumentById(SimpleDocumentPK docPk, String lang)
Search the document with the given identifier and in the specified language.void
switchAllowingDownloadForReaders(SimpleDocumentPK pk, boolean allowing)
Allows or forbids the download for readers.void
switchComponentBehaviour(String componentId, boolean versioned)
Change the management of versions of the documents of a whole component (only attachments are taken into account).void
switchEnableDisplayAsContent(SimpleDocumentPK pk, boolean enable)
Enables or not the display of the content of an attachment.void
switchEnableEditSimultaneously(SimpleDocumentPK pk, boolean enable)
Enables or not the simultaneous edition of the content of an attachment.void
unindexAttachmentsOfExternalObject(ResourceReference externalResource)
Remove indexes on all the attachments of the specified resource.boolean
unlock(UnlockContext context)
Release a locked file.void
updateAttachment(SimpleDocument document, boolean indexIt, boolean notify)
Updates the specified whole document: status, metadata but not its content.void
updateAttachment(SimpleDocument document, File content, boolean indexIt, boolean notify)
Updates the specified whole document with its content either by updating the given content or by adding it among its others contents.void
updateAttachment(SimpleDocument document, InputStream content, boolean indexIt, boolean notify)
Updates the specified whole document with its content either by updating the given content or by adding it among its others contents.void
updateIndexEntryWithDocuments(FullIndexEntry indexEntry)
Add the documents to the index.
-
-
-
Field Detail
-
VERSION_MODE
static final String VERSION_MODE
- See Also:
- Constant Field Values
-
-
Method Detail
-
get
static AttachmentService get()
-
deleteAllAttachments
void deleteAllAttachments(String componentInstanceId) throws AttachmentException
Deletes all the documents related to the component instance identified by the specified identifier.- Parameters:
componentInstanceId
- the component instance identifier.- Throws:
AttachmentException
- if the deletion failed.
-
getBinaryContent
void getBinaryContent(File file, SimpleDocumentPK pk, String lang)
Writes the binary content into the specified File.- Parameters:
file
- the file where the content is to be written.pk
- the id of the document.lang
- the language of the content.
-
getBinaryContent
void getBinaryContent(OutputStream output, SimpleDocumentPK pk, String lang)
Writes the binary content into the specified OutputStream.- Parameters:
output
- the stream where the content is to be written.pk
- the id of the document.lang
- the language of the content.
-
getBinaryContent
void getBinaryContent(OutputStream output, SimpleDocumentPK pk, String lang, long contentOffset, long contentLength)
Writes the binary content contained between begin and end indexes into the specified OutputStream.- Parameters:
output
- the stream where the content is to be written.pk
- the id of the document.lang
- the language of the content.contentOffset
- number of bytes to skip from input content before copying into output.contentLength
- number of bytes to copy.
-
addXmlForm
void addXmlForm(SimpleDocumentPK pk, String language, String xmlFormName)
-
cloneDocument
SimpleDocumentPK cloneDocument(SimpleDocument original, String foreignCloneId)
Clones the given document and attached it to the specified resource. The document is attached to a resource that has been cloned; hence this method is to clone the document in order to attach it to the cloned resource. The difference between a clone and a copy is the clone maintains a link with its original counterpart: any changes performed in one is synchronized with the other.- Parameters:
original
- the document to clone.foreignCloneId
- the identifier of the resource to which the document is attached.- Returns:
- the identifier of the cloned document.
-
mergeDocuments
Map<String,String> mergeDocuments(ResourceReference originalResource, ResourceReference clonedResource, DocumentType type)
Merges the documents of the cloned resource with their original counterparts.- Parameters:
originalResource
- the original resource.clonedResource
- the cloned resource.type
- the type of the documents to merge.- Returns:
- a map with the cloned document identifier as key and the original document identifier as value.
-
copyDocument
SimpleDocumentPK copyDocument(SimpleDocument original, ResourceReference targetResource)
Copies the specified document to another existing resource. The difference between a copy with a clone is the copy is detached to the original document from which it has been copied. So any changes in one isn't reported to the other one.- Parameters:
original
- the document to copy.targetResource
- the resource to which the copy of the document has to be attached.- Returns:
- the identifier of the copy.
-
copyAllDocuments
List<org.silverpeas.kernel.util.Pair<SimpleDocumentPK,SimpleDocumentPK>> copyAllDocuments(ResourceReference sourceResource, ResourceReference destinationResource)
Copies all the attachments linked to the given source resource to the specified destination one.- Parameters:
sourceResource
- the reference of the resource (identifier and component instance) from which the attachments must be copied.destinationResource
- the reference of the resource (identifier and component instance) to which attachments will be copied.- Returns:
- le list of copied attachments, empty if nothing is copied.
-
moveDocument
SimpleDocumentPK moveDocument(SimpleDocument document, ResourceReference destination)
Moves the specified document to the given resource.- Parameters:
document
- the document to be moved.destination
- the resource to which the document has to be attached.- Returns:
- the new document identifier once moved.
-
moveAllDocuments
List<SimpleDocumentPK> moveAllDocuments(ResourceReference sourceResource, ResourceReference destinationResource)
Moves all the attachments linked to the specified resource to the another one.- Parameters:
sourceResource
- the reference of the resource (identifier and component instance) from which linked attachments must be moved.destinationResource
- the reference of the resource (identifier and component instance) that will get the moved attachments.- Returns:
- le list of moved attachments, empty if nothing is moved.
-
createAttachment
SimpleDocument createAttachment(SimpleDocument document, InputStream content) throws AttachmentException
Creates the attachment and saves the content of the specified document. The created document is indexed and a notification about the creation is sent.The filename returned by
SimpleDocument.getFilename()
is normalized in order to get only single character encoding and no more combined characters. The normalized filename is set to the given document.- Parameters:
document
- the document to be created.content
- the binary content of the document.- Returns:
- the stored document.
- Throws:
AttachmentException
- if the creation of the specified document fails.
-
createAttachment
SimpleDocument createAttachment(SimpleDocument document, InputStream content, boolean indexIt)
Creates the attachment, saves the content of the specified document and indexes it if asked. Once the attachment created, a notification about this creation is then sent.The filename returned by
SimpleDocument.getFilename()
is normalized in order to get only single character encoding and no more combined characters. The normalized filename is set to the given document.- Parameters:
document
- the document to be created.content
- the binary content of the document.indexIt
- true if the document has to be indexed, false otherwise.- Returns:
- the stored document.
-
createAttachment
SimpleDocument createAttachment(SimpleDocument document, InputStream content, boolean indexIt, boolean notify)
Creates the attachment, saves the content of the specified document, indexes it if asked, and notifies about the creation.The filename returned by
SimpleDocument.getFilename()
is normalized in order to get only single character encoding and no more combined characters. The normalized filename is set to the given document.- Parameters:
document
- the document to be created.content
- the binary content of the document.indexIt
- true if the document has to be indexed, false otherwise.notify
- true if a notification about the creation has to be sent, false otherwise.- Returns:
- the stored document.
-
createAttachment
SimpleDocument createAttachment(SimpleDocument document, File content) throws AttachmentException
Creates the attachment and saves the content of the specified document. The created document is indexed and a notification about the creation is sent.The filename returned by
SimpleDocument.getFilename()
is normalized in order to get only single character encoding and no more combined characters. The normalized filename is set to the given document.- Parameters:
document
- the document to be created.content
- the binary content of the document.- Returns:
- the stored document.
- Throws:
AttachmentException
- if an error occurs while creating the attachment and saving the content.
-
createAttachment
SimpleDocument createAttachment(SimpleDocument document, File content, boolean indexIt)
Creates the attachment, saves the content of the specified document and indexes it if asked. Once the attachment created, a notification about this creation is then sent.The filename returned by
SimpleDocument.getFilename()
is normalized in order to get only single character encoding and no more combined characters. The normalized filename is set to the given document.- Parameters:
document
- the document to be created.content
- the binary content of the document.indexIt
- true if the document has to be indexed, false otherwise.- Returns:
- the stored document.
-
createAttachment
SimpleDocument createAttachment(SimpleDocument document, File content, boolean indexIt, boolean notify)
Creates the attachment, saves the content of the specified document, indexes it if asked, and notifies about the creation.The filename returned by
SimpleDocument.getFilename()
is normalized in order to get only single character encoding and no more combined characters. The normalized filename is set to the given document.- Parameters:
document
- the document to be created.content
- the binary content of the document.indexIt
- true if the document has to be indexed, false otherwise.notify
- true if a notification about the creation has to be sent, false otherwise.- Returns:
- the stored document.
-
createIndex
void createIndex(SimpleDocument document)
Indexes the specified document.- Parameters:
document
- the document
-
deleteIndex
void deleteIndex(SimpleDocument document)
Deletes any index on the specified document.- Parameters:
document
- the document.
-
createIndex
void createIndex(SimpleDocument document, Date startOfVisibilityPeriod, Date endOfVisibilityPeriod)
Creates an index on the specified document with a period of time of visibility.- Parameters:
document
- the document to index.startOfVisibilityPeriod
- the date at which the document should be visible.endOfVisibilityPeriod
- the date at which the document shouldn't be anymore visible.
-
deleteAllAttachments
void deleteAllAttachments(String resourceId, String componentInstanceId)
Deletes all the documents attached to a resource.- Parameters:
resourceId
- the identifier of the resource.componentInstanceId
- the identifier of the component instance into which the resource is located.
-
deleteAttachment
void deleteAttachment(SimpleDocument document)
Deletes the given document and notifies about this deletion.- Parameters:
document
- the document to delete.
-
deleteAttachment
void deleteAttachment(SimpleDocument document, boolean notify)
Deletes the given document and notifies about this deletion is asked.- Parameters:
document
- the document to delete.notify
- true if a notification about the deletion has to be sent. False otherwise.- Throws:
AttachmentException
- if the document cannot be deleted.
-
removeContent
void removeContent(SimpleDocument document, String lang, boolean notify)
Removes the content of the specified document in the given language.- Parameters:
document
- the document.lang
- the ISO-631 code of a language.notify
- true if a notification about the content deletion has to be sent. False otherwise. If the document has again content (in others languages), an document update event is sent. Otherwise a deletion event is sent.
-
reorderAttachments
void reorderAttachments(List<SimpleDocumentPK> pks) throws AttachmentException
Reorders the documents referenced in the given list according their order in the list.- Parameters:
pks
- a list of document identifiers.- Throws:
AttachmentException
- if an error occurs while reordering the documents.
-
reorderDocuments
void reorderDocuments(List<SimpleDocument> documents) throws AttachmentException
Reorders the documents in the given list according their order in the list.- Parameters:
documents
- the documents to reorder.- Throws:
AttachmentException
- if an error occurs while reordering the documents.
-
searchDocumentById
SimpleDocument searchDocumentById(SimpleDocumentPK docPk, String lang)
Search the document with the given identifier and in the specified language.- Parameters:
docPk
- the identifier of the document to search.lang
- the ISO-631 code of a language.- Returns:
- the document or null if no such document exists.
- Throws:
AttachmentException
- if an error occurs while searching the document.
-
listDocumentsByForeignKey
SimpleDocumentList<SimpleDocument> listDocumentsByForeignKey(ResourceReference foreignKey, String lang)
Search all the documents of type files attached to the specified resource and in the given language.- Parameters:
foreignKey
- a reference to the resource.lang
- the ISO-631 code of a language.- Returns:
- the list of documents of type files attached to the specified resource.
- Throws:
AttachmentException
- if an error occurs while searching the documents.
-
listAllDocumentsByForeignKey
SimpleDocumentList<SimpleDocument> listAllDocumentsByForeignKey(ResourceReference foreignKey, String lang)
Search all the documents (whatever their type: files, xmlform content, wysiwyg, ...) attached to the specified resource and in the given language.- Parameters:
foreignKey
- a reference to the resource.lang
- the ISO-631 code of a language.- Returns:
- the list of documents attached to the specified resource.
- Throws:
AttachmentException
- if an error occurs while searching the documents.
-
listDocumentsByForeignKeyAndType
SimpleDocumentList<SimpleDocument> listDocumentsByForeignKeyAndType(ResourceReference foreignKey, DocumentType type, String lang)
Search all the documents attached to the specified resource, for a given type of document, and in the specified language.- Parameters:
foreignKey
- a reference to the resource.type
- the type of the documents to search.lang
- the ISO-621 code of a language.- Returns:
- the list of documents attached to the specified resource.
- Throws:
AttachmentException
- if an error occurs while searching the documents.
-
unindexAttachmentsOfExternalObject
void unindexAttachmentsOfExternalObject(ResourceReference externalResource)
Remove indexes on all the attachments of the specified resource.- Parameters:
externalResource
- a reference to the resource.
-
updateAttachment
void updateAttachment(SimpleDocument document, boolean indexIt, boolean notify)
Updates the specified whole document: status, metadata but not its content.The filename returned by
SimpleDocument.getFilename()
is normalized in order to get only single character encoding and no more combined characters. The normalized filename is set to given document.- Parameters:
document
- the document to update.indexIt
- true if the document change has to be indexed. False otherwise.notify
- true if a notification about the update has to be sent. False otherwise.
-
updateAttachment
void updateAttachment(SimpleDocument document, File content, boolean indexIt, boolean notify)
Updates the specified whole document with its content either by updating the given content or by adding it among its others contents.The filename returned by
SimpleDocument.getFilename()
is normalized in order to get only single character encoding and no more combined characters. The normalized filename is set to given document.- Parameters:
document
- the document to update.content
- the content to update or to add (in the case of multi-languages support).indexIt
- true if the change has to be indexed. False otherwise.notify
- true if a notification about the update has to be sent. False otherwise.
-
updateAttachment
void updateAttachment(SimpleDocument document, InputStream content, boolean indexIt, boolean notify)
Updates the specified whole document with its content either by updating the given content or by adding it among its others contents.The filename returned by
SimpleDocument.getFilename()
is normalized in order to get only single character encoding and no more combined characters. The normalized filename is set to given document.- Parameters:
document
- the document to update.content
- the content to update or to add (in the case of multi-languages support).indexIt
- true if the change has to be indexed. False otherwise.notify
- true if a notification about the update has to be sent. False otherwise.
-
listDocumentsRequiringWarning
List<SimpleDocument> listDocumentsRequiringWarning(Date alertDate, String language)
Search all the documents in an instance which are locked at the alert date.- Parameters:
alertDate
- the date when a warning is required.language
- the language in which the documents are required.- Returns:
- an ordered list of the documents.
-
listExpiringDocuments
List<SimpleDocument> listExpiringDocuments(Date alertDate, String language)
Search all the documents in an instance which require an alert at the specified date.- Parameters:
alertDate
- the date when the document reservation should alter.language
- the language in which the documents are required.- Returns:
- an ordered list of the documents.
-
listDocumentsToUnlock
List<SimpleDocument> listDocumentsToUnlock(Date expiryDate, String language)
Search all the documents in an instance requiring to be unlocked at the specified date.- Parameters:
expiryDate
- the date when the document reservation should expire.language
- the language in which the documents are required.- Returns:
- an ordered list of the documents.
-
lock
boolean lock(String attachmentId, String userId, String language)
Checkout a file to be updated by user.- Parameters:
attachmentId
- the id of the attachment to be locked.userId
- : the user locking and modifying the attachment.language
- the language of the attachment.- Returns:
- false if the attachment is already checkout - true if the attachment was successfully checked out.
-
unlock
boolean unlock(UnlockContext context)
Release a locked file.- Parameters:
context
- : the unlock parameters.- Returns:
- false if the file is locked - true if the unlock succeeded.
- Throws:
AttachmentException
- if the unlocking fails.
-
changeVersionState
SimpleDocumentPK changeVersionState(SimpleDocumentPK pk, String comment)
Change the management of versions of the document. If the document is currently with version management, then all history is removed and the document becomes a simple document with no more version management. If the document has no version management then a new public version is created and the document becomes a document with a version history management. F- Parameters:
pk
- the id of the document.comment
- the comment of the versioned document if we are switching from simple to versioned.- Returns:
- the pk to the document after is state change.
-
findExistingDocument
SimpleDocument findExistingDocument(SimpleDocumentPK pk, String fileName, ResourceReference foreign, String lang)
Find documents with the same name attached to the specified foreign id.- Parameters:
fileName
- the name of the file.pk
- the id of the document.lang
- the language of the document.foreign
- the id of the container of the document.- Returns:
- a document with the same filename - null if none is found.
-
listDocumentsLockedByUser
List<SimpleDocument> listDocumentsLockedByUser(String usedId, String language)
Search all the documents locked by a specific user.- Parameters:
usedId
- the id of the user.language
- the language in which the documents are required.- Returns:
- an ordered list of the documents.
-
updateIndexEntryWithDocuments
void updateIndexEntryWithDocuments(FullIndexEntry indexEntry)
Add the documents to the index.- Specified by:
updateIndexEntryWithDocuments
in interfaceDocumentIndexing
- Parameters:
indexEntry
- the entry to be updated with the document indexes.
-
indexAllDocuments
void indexAllDocuments(ResourceReference resource, Date startOfVisibilityPeriod, Date endOfVisibilityPeriod)
Indexes all the documents (whatever their type) of the given resource.- Parameters:
resource
- the resource.startOfVisibilityPeriod
- the start date of the document visibility. It can be null.endOfVisibilityPeriod
- the end date of the document visibility. It can be null.
-
switchComponentBehaviour
void switchComponentBehaviour(String componentId, boolean versioned)
Change the management of versions of the documents of a whole component (only attachments are taken into account). If the document is currently with version management, then all history is removed and the document becomes a simple document with no more version management. If the document has no version management then a new public version is created and the document becomes a document with a version history management.- Parameters:
componentId
- the id of the component switching its behaviour.versioned
- if set to true all simple attachments become versioned, if false all versioned attachments become simple attachments.
-
switchAllowingDownloadForReaders
void switchAllowingDownloadForReaders(SimpleDocumentPK pk, boolean allowing)
Allows or forbids the download for readers.- Parameters:
pk
- the id of the document.allowing
- : allowing the download for readers if true versioned attachments become simple attachments.
-
switchEnableDisplayAsContent
void switchEnableDisplayAsContent(SimpleDocumentPK pk, boolean enable)
Enables or not the display of the content of an attachment.- Parameters:
pk
- the id of the document.enable
- enable the display if true
-
switchEnableEditSimultaneously
void switchEnableEditSimultaneously(SimpleDocumentPK pk, boolean enable)
Enables or not the simultaneous edition of the content of an attachment.- Parameters:
pk
- the id of the document.enable
- enable edition simultaneously if true
-
-