Package com.logicaldoc.core.document
Class DocumentManagerImpl
- java.lang.Object
-
- com.logicaldoc.core.document.DocumentManagerImpl
-
- All Implemented Interfaces:
DocumentManager
public class DocumentManagerImpl extends Object implements DocumentManager
Basic Implementation ofDocumentManager
- Since:
- 3.5
- Author:
- Marco Meschieri - LogicalDOC
-
-
Constructor Summary
Constructors Constructor Description DocumentManagerImpl()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
archiveDocuments(long[] docIds, DocumentHistory transaction)
Archives all the documents in a folder's treelong
archiveFolder(long folderId, DocumentHistory transaction)
Archives all the documents in a folder's treevoid
changeIndexingStatus(Document doc, int status)
Utility method used to declare that: the document must be taken into consideration by the indexer (status =AbstractDocument.INDEX_TO_INDEX
. the document must be taken into consideration by the indexer for the metadata only(status =AbstractDocument.INDEX_TO_INDEX_METADATA
. the document must not be taken into consideration by the indexer (status =AbstractDocument.INDEX_SKIP
).void
checkin(long docId, File file, String filename, boolean release, AbstractDocument docVO, DocumentHistory transaction)
Checks in the given documentvoid
checkin(long docId, InputStream content, String filename, boolean release, AbstractDocument docVO, DocumentHistory transaction)
Checks in the given documentvoid
checkout(long docId, DocumentHistory transaction)
Checks out the given documentDocument
copyToFolder(Document doc, Folder folder, DocumentHistory transaction)
Copy a document to the specified folder.int
countPages(Document doc)
Counts the number of pages of a documentDocument
create(File file, Document docVO, DocumentHistory transaction)
Creates a new Document.Document
create(InputStream content, Document docVO, DocumentHistory transaction)
Creates a new Document.Document
createAlias(Document doc, Folder folder, String aliasType, DocumentHistory transaction)
Create an alias(shortcut) associated to the given doc to the specified folder.Ticket
createDownloadTicket(long docId, String suffix, Integer expireHours, Date expireDate, Integer maxDownloads, String urlPrefix, DocumentHistory transaction)
Creates a new download ticket.void
deleteFromIndex(Document doc)
Utility method for document removal from indexVersion
deleteVersion(long versionId, DocumentHistory transaction)
Deletes a specific version.int
enforceFilesIntoFolderStorage(long rootFolderId, DocumentHistory transaction)
Moves all the files of the documents in the given tree from it's original location to the storage defined in the owning foldervoid
lock(long docId, int status, DocumentHistory transaction)
Locks the given documentvoid
makeImmutable(long docId, DocumentHistory transaction)
Marks the document, with the given docId, as immutable and save the given document historyDocument
merge(Collection<Document> documents, long targetFolderId, String fileName, DocumentHistory transaction)
Merges a set of documents into a single PDF filevoid
moveToFolder(Document doc, Folder folder, DocumentHistory transaction)
Moves a document to the specified folder.String
parseDocument(Document doc, String fileVersion)
Retrieves the document's content as a stringvoid
promoteVersion(long docId, String version, DocumentHistory transaction)
Promotes an old version to the current default one.long
reindex(long docId, String content, DocumentHistory transaction)
Re-indexes an existing document in the full-text index.void
rename(long docId, String newName, DocumentHistory transaction)
Rename an existing document filename.Document
replaceAlias(long aliasId, DocumentHistory transaction)
Replaces an alias with a copy of the original filevoid
replaceFile(long docId, String fileVersion, File newFile, DocumentHistory transaction)
Replaces the file of a given versionvoid
replaceFile(long docId, String fileVersion, InputStream content, DocumentHistory transaction)
Replaces the file of a given versionvoid
setConfig(ContextProperties config)
void
setDocumentDAO(DocumentDAO documentDAO)
void
setDocumentNoteDAO(DocumentNoteDAO documentNoteDAO)
void
setFolderDAO(FolderDAO folderDAO)
void
setIndexer(SearchEngine indexer)
void
setListenerManager(DocumentListenerManager listenerManager)
void
setStorer(Storer storer)
void
setTemplateDAO(TemplateDAO templateDAO)
void
setTicketDAO(TicketDAO ticketDAO)
void
setUserDAO(UserDAO userDAO)
void
setVersionDAO(VersionDAO versionDAO)
void
unlock(long docId, DocumentHistory transaction)
UNChecks out the given documentboolean
unprotect(String sid, long docId, String password)
Tries to unprotect a document, If the password is correct, the document stays unprotected for all the duration of the session.void
update(Document document, Document docVO, DocumentHistory transaction)
Updates an existing document and marks it to be re-indexed
-
-
-
Method Detail
-
setListenerManager
public void setListenerManager(DocumentListenerManager listenerManager)
-
setDocumentDAO
public void setDocumentDAO(DocumentDAO documentDAO)
-
setTemplateDAO
public void setTemplateDAO(TemplateDAO templateDAO)
-
setIndexer
public void setIndexer(SearchEngine indexer)
-
setVersionDAO
public void setVersionDAO(VersionDAO versionDAO)
-
setStorer
public void setStorer(Storer storer)
-
setConfig
public void setConfig(ContextProperties config)
-
replaceFile
public void replaceFile(long docId, String fileVersion, InputStream content, DocumentHistory transaction) throws IOException, PersistenceException
Description copied from interface:DocumentManager
Replaces the file of a given version- Specified by:
replaceFile
in interfaceDocumentManager
- Parameters:
docId
- the document to be updatedfileVersion
- the file versioncontent
- the file to usetransaction
- entry to log the event (set the user)- Throws:
IOException
- I/O errorPersistenceException
- error at data layer
-
replaceFile
public void replaceFile(long docId, String fileVersion, File newFile, DocumentHistory transaction) throws PersistenceException, IOException
Description copied from interface:DocumentManager
Replaces the file of a given version- Specified by:
replaceFile
in interfaceDocumentManager
- Parameters:
docId
- the document to be updatedfileVersion
- the file versionnewFile
- the file to usetransaction
- entry to log the event (set the user)- Throws:
PersistenceException
- error at data layerIOException
- I/O error
-
checkin
public void checkin(long docId, File file, String filename, boolean release, AbstractDocument docVO, DocumentHistory transaction) throws PersistenceException
Description copied from interface:DocumentManager
Checks in the given document- Specified by:
checkin
in interfaceDocumentManager
- Parameters:
docId
- the document to be checked infile
- of the new document versionfilename
- new filename (can also be the old one)release
- True if this is a new release(eg: 2.0) rather than a subversion(eg: 1.1)docVO
- The value object containing document's metadata applied during the checkin (optional)transaction
- entry to log the event, set the user and comment- Throws:
PersistenceException
- error at data layer
-
checkin
public void checkin(long docId, InputStream content, String filename, boolean release, AbstractDocument docVO, DocumentHistory transaction) throws IOException, PersistenceException
Description copied from interface:DocumentManager
Checks in the given document- Specified by:
checkin
in interfaceDocumentManager
- Parameters:
docId
- the document to be checked incontent
- input stream pointing to the new document versionfilename
- new filename (can also be the old one)release
- True if this is a new release(eg: 2.0) rather than a subversion(eg: 1.1)docVO
- The value object containing document's metadata applied during the checkin (optional)transaction
- entry to log the event, set the user and comment- Throws:
IOException
- I/O errorPersistenceException
- error at data layer
-
checkout
public void checkout(long docId, DocumentHistory transaction) throws PersistenceException
Description copied from interface:DocumentManager
Checks out the given document- Specified by:
checkout
in interfaceDocumentManager
- Parameters:
docId
- the document to be checked outtransaction
- entry to log the event (set the user)- Throws:
PersistenceException
- error at data layer
-
lock
public void lock(long docId, int status, DocumentHistory transaction) throws PersistenceException
Description copied from interface:DocumentManager
Locks the given document- Specified by:
lock
in interfaceDocumentManager
- Parameters:
docId
- the document to be lockedstatus
- the lock type (used to populate status attribute of the document)transaction
- entry to log the event (set the user)- Throws:
PersistenceException
- if an error occurs, this exception is thrown
-
deleteFromIndex
public void deleteFromIndex(Document doc)
Utility method for document removal from index- Specified by:
deleteFromIndex
in interfaceDocumentManager
- Parameters:
doc
- the document to delete from the index
-
parseDocument
public String parseDocument(Document doc, String fileVersion) throws ParseException
Description copied from interface:DocumentManager
Retrieves the document's content as a string- Specified by:
parseDocument
in interfaceDocumentManager
- Parameters:
doc
- the document representationfileVersion
- version of the file- Returns:
- The document's content
- Throws:
ParseException
- error in the parsing
-
reindex
public long reindex(long docId, String content, DocumentHistory transaction) throws PersistenceException, ParseException
Description copied from interface:DocumentManager
Re-indexes an existing document in the full-text index.- Specified by:
reindex
in interfaceDocumentManager
- Parameters:
docId
- The document to be indexedcontent
- The content to use as document's body (can be null to parse the file)transaction
- entry to log the event (set the user)- Returns:
- the number of milliseconds required to parse the document
- Throws:
PersistenceException
- error at data layerParseException
- error during parsing
-
update
public void update(Document document, Document docVO, DocumentHistory transaction) throws PersistenceException
Description copied from interface:DocumentManager
Updates an existing document and marks it to be re-indexed- Specified by:
update
in interfaceDocumentManager
- Parameters:
document
- The document to be updateddocVO
- value object containing the new metadatatransaction
- entry to log the event (set the user)- Throws:
PersistenceException
- if an error occurs, this exception is thrown
-
moveToFolder
public void moveToFolder(Document doc, Folder folder, DocumentHistory transaction) throws PersistenceException
Description copied from interface:DocumentManager
Moves a document to the specified folder. All stores(db, file system, index) will be consequently altered.- Specified by:
moveToFolder
in interfaceDocumentManager
- Parameters:
doc
- The document to movefolder
- The target foldertransaction
- entry to log the event (set the user)- Throws:
PersistenceException
- raised if the document cannot be moved
-
create
public Document create(InputStream content, Document docVO, DocumentHistory transaction) throws PersistenceException
Description copied from interface:DocumentManager
Creates a new Document. Saves the information provided. That also includes updating the search index for example.- Specified by:
create
in interfaceDocumentManager
- Parameters:
content
- The document's contentdocVO
- The value object containing the document's metadatatransaction
- The transaction metadata (remember to set the user and the comment)- Returns:
- The newly created document
- Throws:
PersistenceException
- raised if the document cannot be created
-
create
public Document create(File file, Document docVO, DocumentHistory transaction) throws PersistenceException
Description copied from interface:DocumentManager
Creates a new Document. Saves the information provided. That also includes updating the search index for example.- Specified by:
create
in interfaceDocumentManager
- Parameters:
file
- The document's filedocVO
- The value object containing the document's metadatatransaction
- The trandaction metadata (remember to set the user and the comment)- Returns:
- The newly created document
- Throws:
PersistenceException
- raised if the document cannot be created
-
countPages
public int countPages(Document doc)
Description copied from interface:DocumentManager
Counts the number of pages of a document- Specified by:
countPages
in interfaceDocumentManager
- Parameters:
doc
- the document- Returns:
- the number of pages
-
copyToFolder
public Document copyToFolder(Document doc, Folder folder, DocumentHistory transaction) throws PersistenceException, IOException
Description copied from interface:DocumentManager
Copy a document to the specified folder.- Specified by:
copyToFolder
in interfaceDocumentManager
- Parameters:
doc
- The document to movefolder
- The target foldertransaction
- entry to log the event (set the user)- Returns:
- The created document
- Throws:
PersistenceException
- error at data layerIOException
- I/O error
-
unlock
public void unlock(long docId, DocumentHistory transaction) throws PersistenceException
Description copied from interface:DocumentManager
UNChecks out the given document- Specified by:
unlock
in interfaceDocumentManager
- Parameters:
docId
- the document to be unchecked outtransaction
- entry to log the event- Throws:
PersistenceException
- if an error occurs, this exception is thrown
-
makeImmutable
public void makeImmutable(long docId, DocumentHistory transaction) throws PersistenceException
Description copied from interface:DocumentManager
Marks the document, with the given docId, as immutable and save the given document history- Specified by:
makeImmutable
in interfaceDocumentManager
- Parameters:
docId
- identifier of the documenttransaction
- entry to log the event (set the user)- Throws:
PersistenceException
- raised if the document cannot be marked immutable
-
rename
public void rename(long docId, String newName, DocumentHistory transaction) throws PersistenceException
Description copied from interface:DocumentManager
Rename an existing document filename.- Specified by:
rename
in interfaceDocumentManager
- Parameters:
docId
- The document to be renamednewName
- The new filename of the documenttransaction
- entry to log the event (set the user)- Throws:
PersistenceException
- if an error occurs, this exception is thrown
-
replaceAlias
public Document replaceAlias(long aliasId, DocumentHistory transaction) throws PersistenceException
Description copied from interface:DocumentManager
Replaces an alias with a copy of the original file- Specified by:
replaceAlias
in interfaceDocumentManager
- Parameters:
aliasId
- ID of the alias to replacetransaction
- entry to log the event (set the user)- Returns:
- The created document
- Throws:
PersistenceException
- raised if the alias cannot be replaced
-
createAlias
public Document createAlias(Document doc, Folder folder, String aliasType, DocumentHistory transaction) throws PersistenceException
Description copied from interface:DocumentManager
Create an alias(shortcut) associated to the given doc to the specified folder.- Specified by:
createAlias
in interfaceDocumentManager
- Parameters:
doc
- The document for which will be created the shortcutfolder
- The target folderaliasType
- the alias type(null for the original file or pdf for it's pdf conversion)transaction
- entry to log the event (set the user)- Returns:
- The created document
- Throws:
PersistenceException
- error at data layer
-
changeIndexingStatus
public void changeIndexingStatus(Document doc, int status)
Description copied from interface:DocumentManager
Utility method used to declare that:- the document must be taken into consideration by the indexer (status
=
AbstractDocument.INDEX_TO_INDEX
. - the document must be taken into consideration by the indexer for the
metadata only(status =
AbstractDocument.INDEX_TO_INDEX_METADATA
. - the document must not be taken into consideration by the indexer
(status =
AbstractDocument.INDEX_SKIP
). If the document was previously indexed it is removed from the index.
- Specified by:
changeIndexingStatus
in interfaceDocumentManager
- Parameters:
doc
- The document for which will be changed the indexer status.status
- The new document indexer status.
- the document must be taken into consideration by the indexer (status
=
-
setUserDAO
public void setUserDAO(UserDAO userDAO)
-
setFolderDAO
public void setFolderDAO(FolderDAO folderDAO)
-
deleteVersion
public Version deleteVersion(long versionId, DocumentHistory transaction) throws PersistenceException
Description copied from interface:DocumentManager
Deletes a specific version.- Specified by:
deleteVersion
in interfaceDocumentManager
- Parameters:
versionId
- The version to deletetransaction
- entry to log the event (set the user)- Returns:
- the latest version
- Throws:
PersistenceException
- If the version cannot be deleted
-
setDocumentNoteDAO
public void setDocumentNoteDAO(DocumentNoteDAO documentNoteDAO)
-
archiveFolder
public long archiveFolder(long folderId, DocumentHistory transaction) throws PersistenceException
Description copied from interface:DocumentManager
Archives all the documents in a folder's tree- Specified by:
archiveFolder
in interfaceDocumentManager
- Parameters:
folderId
- The root foldertransaction
- entry to log the event (set the user)- Returns:
- Total number of archived documents
- Throws:
PersistenceException
- raised if at least a document cannot be archived
-
archiveDocuments
public void archiveDocuments(long[] docIds, DocumentHistory transaction) throws PersistenceException
Description copied from interface:DocumentManager
Archives all the documents in a folder's tree- Specified by:
archiveDocuments
in interfaceDocumentManager
- Parameters:
docIds
- Documents to be archivedtransaction
- entry to log the event (set the user)- Throws:
PersistenceException
- raised if at least a document cannot be archived
-
createDownloadTicket
public Ticket createDownloadTicket(long docId, String suffix, Integer expireHours, Date expireDate, Integer maxDownloads, String urlPrefix, DocumentHistory transaction) throws PersistenceException, PermissionException
Description copied from interface:DocumentManager
Creates a new download ticket.- Specified by:
createDownloadTicket
in interfaceDocumentManager
- Parameters:
docId
- The document idsuffix
- can be null or 'conversion.pdf'expireHours
- expiration time expressed in hoursexpireDate
- exact expiration date expressed in the format yyyy-MM-ddmaxDownloads
- maximum number of admitted downloadsurlPrefix
- prefiz of the url, by default the general setting 'server.url' will be usedtransaction
- entry to log the event (set the user)- Returns:
- The created ticket with the url property filled
- Throws:
PersistenceException
- raised if the download ticket cannot be createdPermissionException
- raised if the user does not have the download permission
-
setTicketDAO
public void setTicketDAO(TicketDAO ticketDAO)
-
unprotect
public boolean unprotect(String sid, long docId, String password)
Description copied from interface:DocumentManager
Tries to unprotect a document, If the password is correct, the document stays unprotected for all the duration of the session.- Specified by:
unprotect
in interfaceDocumentManager
- Parameters:
sid
- Session identifierdocId
- The document idpassword
- The password to try- Returns:
- True if the file gets unprotected
-
promoteVersion
public void promoteVersion(long docId, String version, DocumentHistory transaction) throws PersistenceException, IOException
Description copied from interface:DocumentManager
Promotes an old version to the current default one. If you promote a prior version, what it does is make it the default version again. (regardless of there being many versions).- Specified by:
promoteVersion
in interfaceDocumentManager
- Parameters:
docId
- the document to be updatedversion
- the versiontransaction
- entry to log the event (set the user)- Throws:
PersistenceException
- error at data layerIOException
- I/O error
-
enforceFilesIntoFolderStorage
public int enforceFilesIntoFolderStorage(long rootFolderId, DocumentHistory transaction) throws PersistenceException, IOException
Description copied from interface:DocumentManager
Moves all the files of the documents in the given tree from it's original location to the storage defined in the owning folder- Specified by:
enforceFilesIntoFolderStorage
in interfaceDocumentManager
- Parameters:
rootFolderId
- identifier of the root of the tree to processtransaction
- informations about the transaction, optional- Returns:
- number of moved files
- Throws:
PersistenceException
- error at data layerIOException
- I/O error
-
merge
public Document merge(Collection<Document> documents, long targetFolderId, String fileName, DocumentHistory transaction) throws IOException, PersistenceException
Description copied from interface:DocumentManager
Merges a set of documents into a single PDF file- Specified by:
merge
in interfaceDocumentManager
- Parameters:
documents
- the list of documents to merge(the order counts)targetFolderId
- identifier of the target folderfileName
- name of the output file(must ends with .pdf)transaction
- informations about the transaction, optional- Returns:
- the generated merged document
- Throws:
IOException
- I/O errorPersistenceException
- error at data layer
-
-