/**
* @classdesc
* Virtual store implementation for storing documents into the file system.
* Since this is primary type of store for most systems, almost all methods is a proxy to `native` implementation for performance reason.
*
* @class
* @extends UB.virtualStores.Custom
* @singleton
*/
UB.virtualStores.fileVirtual = Object.create(UB.virtualStores.Custom)
/**
* Save file content to temporary file store
* @param {TubDocumentHandlerCustom} handler
*/
UB.virtualStores.fileVirtual.saveContentToTempStore = function (handler) {
return this.saveContentToTempFileStore(handler)
}
/**
* Move old file revision to file archive according to store historyDepth and delete file from permanent store.
* @param {TubDocumentHandlerCustom} handler
* @return {Boolean}
*/
UB.virtualStores.fileVirtual.moveToArchive = function (handler) {
return this.moveToFileArchive(handler)
}
/**
* Delete file content from permanent file store
* @param {TubDocumentHandlerCustom} handler
* @return {boolean}
*/
UB.virtualStores.fileVirtual.deleteContent = function (handler) {
return this.deleteFileContent(handler)
}
/**
* Load content and (optionally) body from temporary file
* @param {TubDocumentHandlerCustom} handler
* @param {TubLoadContentBody} aWithBody
*/
UB.virtualStores.fileVirtual.loadContentFromTempStore = function (handler, aWithBody) {
this.loadContentFromTempFileStore(handler, aWithBody)
}
/**
* Move file content from temporary file store to permanent file store
* @param {TubDocumentHandlerCustom} handler
* @param {String} aPrevRelPath In case exist prev. file revision this variable contain it relative path
* @return {boolean}
*/
UB.virtualStores.fileVirtual.moveToPermanentStore = function (handler, aPrevRelPath) {
this.moveToPermanentFileStore(handler, aPrevRelPath)
}
/**
* Returns null and fill response from file storage
* @inheritDoc
*/
UB.virtualStores.fileVirtual.fillResponse = function (handler) {
return this.fillFileResponse(handler)
}
/**
* Fill handler.request body from file storage
* @param {TubDocumentHandlerCustom} handler
* @return {boolean}
*/
UB.virtualStores.fileVirtual.loadBodyFromEntity = function (handler) {
return this.loadBodyFromFile(handler)
}
/**
* Returns config of selected file revision
* @param {TubDocumentHandlerCustom} handler
* @param {Number} aRevision
* @param {String} aRelPath
* @return {String} JSON config
*/
UB.virtualStores.fileVirtual.getRevisionConfig = function (handler, aRevision, aRelPath) {
return this.getRevisionConfigFromFileStore(handler, aRevision, aRelPath)
}
/**
* Change isPermanent flag of revision
* @param {Object} params parameters object
* @param {String} params.entity
* @param {String} params.attribute
* @param {Number} params.id
* @param {Number} params.revision
* @param {Boolean} params.isPermanent
*/
UB.virtualStores.fileVirtual.setRevisionIsPermanent = function (params) {
var request = new TubDocumentRequest(),
path = require('path'),
fs = require('fs'),
fnUbfti,
ubfti,
handler
request.entity = params.entity
request.attribute = params.attribute
request.id = params.id
handler = request.createHandlerObject(true)
handler.getLastRevisionContent(false, handler.content)
fnUbfti = handler.storeConfig.path + handler.content.relPath +
handler.content.fName.slice(0, -path.extname(handler.content.fName).length) + '\\' + params.revision + '.ubfti'
ubfti = JSON.parse(fs.readFileSync(fnUbfti))
if (ubfti.isPermanent !== params.isPermanent) {
ubfti.isPermanent = params.isPermanent
fs.writeFileSync(fnUbfti, ubfti)
}
}
/**
* Is temp content exists.
* @param {TubDocumentHandlerCustom} handler
* @return {Boolean}
*/
UB.virtualStores.fileVirtual.tempContentExists = function (handler) {
return this.tempFileContentExists(handler)
}