importPackage(Packages.java.io); importPackage(Packages.de.elo.ix.client); //@include lib_Class.js //@include lib_sol.common.ix.ServiceBase.js //@include lib_handlebars.js var logger = sol.create("sol.Logger", { scope: "sol.common.ix.services.ScriptVersionReportValidate" }); /** * Validates a given script version report based on scripts that are in the current system. * * Reports can be generated by `sol.common.ix.services.ScriptVersionReportCreate`. * * # As IX function call * * sol.common.IxUtils.execute('RF_sol_common_service_ScriptVersionReportValidate', { * jsonScriptVersionList: jsonSVL * }); * * # Example for jsonSVL * * The service requires a script version report defined by the following data structure. * * { * date: "20150623105541", * files: [{ * refPath: "¶Administration¶Business Solutions¶connector_xml¶resources", * name: "doc_import_example", * filehash: "9F0FF55B9F675DBD3CE42E9B3B337DA3", * guid: "(B22ECD56-1537-3B3B-CBBA-5DAE2A66DA81)", * version: "6", * editor: "James Bond", * date: "20150414141537", * deleted: false * }, { * refPath: "¶Administration¶Business Solutions¶connector_xml¶resources", * name: "standard_import_example", * filehash: "6F35A6E25C927442CFD484EBBF6ECAE2", * guid: "(04089DB6-E667-EDDE-DB86-5FCB6E5F4DFB)", * version: "1", * editor: "Batman Superman", * date: "20150402162230", * deleted: false * }] * } * * # Returns data as followed * * The given data structure is extended by a property `modified` and contains the new information for `filehash`, `version`, `editor`, `date` and `deleted`. * * { * date: "20150623105541", * files: [{ * refPath: "¶Administration¶Business Solutions¶connector_xml¶resources", * name: "doc_import_example", * filehash: "9F0FF55B9F675DBD3CE42E9B3B337DA3", * guid: "(B22ECD56-1537-3B3B-CBBA-5DAE2A66DA81)", * version: "6", * editor: "James Bond", * date: "20150414141537", * deleted: false, * modified: true * }, { * refPath: "¶Administration¶Business Solutions¶connector_xml¶resources", * name: "standard_import_example", * filehash: "6F35A6E25C927442CFD484EBBF6ECAE2", * guid: "(04089DB6-E667-EDDE-DB86-5FCB6E5F4DFB)", * version: "1", * editor: "Batman Superman", * date: "20150402162230", * deleted: false, * modified: false * }] * } * * @author JHR, ELO Digital Office GmbH * @version 1.0 * * @eloix * @requires sol.Logger * @requires sol.common.JsonUtils * @requires sol.common.ix.RfUtils * @requires sol.common.ix.ServiceBase * */ sol.define("sol.common.ix.services.ScriptVersionReportValidate", { extend: "sol.common.ix.ServiceBase", /** * @cfg {Object} jsonScriptVersionList (required) * Version information of documents. Data structure that was created by ScriptVersionReportCreate. */ jsonScriptVersionList: undefined, initialize: function (config) { var me = this; me.$super("sol.common.ix.ServiceBase", "initialize", [config]); me.checkMandatoryProperties("jsonScriptVersionList"); }, /** * Validates the Version Script List in JSON-Format for modified documents, returns the Version Script List in JSON-Format with modification info. * @return {Object} */ process: function () { var me = this, files, jsonScriptVersionList = me.jsonScriptVersionList, i, fileentry, guid, filehashOld, ed, sord, dv; try { files = jsonScriptVersionList.files; for (i = 0; i < files.length; i++) { fileentry = files[i]; guid = fileentry.guid; filehashOld = fileentry.filehash; ed = ixConnect.ix().checkoutSord(guid, EditInfoC.mbOnlyId, LockC.NO); sord = ed.sord; ed = ixConnect.ix().checkoutDoc(sord.id, -1, EditInfoC.mbDocument, LockC.NO); dv = me.getWorkVersion(ed.document.docs); fileentry.filehash = dv.md5; fileentry.version = dv.version; fileentry.editor = dv.ownerName; fileentry.date = dv.updateDateIso; fileentry.deleted = dv.deleted; fileentry.modified = (filehashOld != fileentry.filehash); } } catch (e) { me.logger.debug(["function ScriptVersionReportValidate(jsonScriptVersionList) catch (e) name: '{0}' message: '{1}'", e.name, e.message]); jsonScriptVersionList = {}; } return jsonScriptVersionList; }, getWorkVersion: function (docs) { var dv, i; dv = null; for (i = 0; i < docs.length; i++) { dv = docs[i]; if (dv.workVersion) { return dv; } } return dv; } }); /** * @member sol.common.ix.services.ScriptVersionReportValidate * @method RF_sol_common_service_ScriptVersionReportValidate * @static * @inheritdoc sol.common.ix.ServiceBase#RF_ServiceBaseName */ function RF_sol_common_service_ScriptVersionReportValidate(iXSEContext, args) { logger.enter("RF_sol_common_service_ScriptVersionReportValidate", args); var params, module, jsonScriptVersionList; params = sol.common.ix.RfUtils.parseAndCheckParams(iXSEContext, arguments.callee.name, args, "jsonScriptVersionList"); module = sol.create("sol.common.ix.services.ScriptVersionReportValidate", params); jsonScriptVersionList = module.process(); logger.exit("RF_sol_common_service_ScriptVersionReportValidate"); return sol.common.ix.RfUtils.stringify(jsonScriptVersionList); }