importPackage(Packages.de.elo.ix.client); //@include lib_Class.js //@include lib_handlebars.js //@include lib_sol.common.Template.js //@include lib_sol.common.ObjectFormatter.js //@include lib_sol.common.ix.FunctionBase.js var logger = sol.create("sol.Logger", { scope: "sol.common.ix.function.CreateFromTemplate" }); /** * Renders a template string or template document * * # As IX function call: * Loads a template from the repository, applys the data of a given sord and * saves the result as a new document into the repository. * * sol.common.IxUtils.execute("RF_sol_common_functions_CreateFromTemplate", { * templateObjId: "111", * objId: "222", * saveToRepoConfig: { parentId: "ARCPATH:/Test", "name": "FilledTemplate1" } * }); * * @author MW, ELO Digital Office GmbH * @version 1.0 * * @eloix * @requires sol.Logger * @requires sol.common.JsonUtils * @requires sol.common.ix.RfUtils * @requires sol.common.ix.FunctionBase * */ sol.define("sol.common.ix.functions.CreateFromTemplate", { extend: "sol.common.ix.FunctionBase", /** * @cfg {String} templateObjId (required) * Object ID of the template */ /** * @cfg {String} templateString (required) * String that contains placeholders */ initialize: function (config) { var me = this; me.$super("sol.Base", "initialize", [config]); }, /** * Fills the template * @return {Object} * @return {String} return.result Result */ process: function () { var me = this, json = sol.common.JsonUtils, template, result; if (!me.templateObjId && !me.templateString) { throw "Template object ID or template string must be set."; } template = sol.create("sol.common.Template", {}); if (me.templateObjId) { template.load(me.templateObjId); } else { template.setSource(me.templateString); } if (me.objId) { template.applySord(me.objId); } else { template.apply(me.data); } result = template.getResult(); if (me.saveToRepoConfig) { return json.stringifyAll(me.saveResult(result, me.saveToRepoConfig)); } else { return json.stringifyAll({ result: result }); } }, saveResult: function (result, saveToRepoConfig) { var objId; saveToRepoConfig = saveToRepoConfig || {}; saveToRepoConfig.ext = saveToRepoConfig.ext || ".txt"; saveToRepoConfig.file = java.io.File.createTempFile("Template_", saveToRepoConfig.ext); Packages.org.apache.commons.io.FileUtils.writeStringToFile(saveToRepoConfig.file, result, "UTF-8"); objId = sol.common.RepoUtils.saveToRepo(saveToRepoConfig); return { objId: objId }; } }); /** * @member sol.common.ix.functions.CreateFromTemplate * @method RF_sol_common_functions_CreateFromTemplate * @static * @inheritdoc sol.common.ix.FunctionBase#RF_FunctionName */ function RF_sol_common_functions_CreateFromTemplate(iXSEContext, args) { logger.enter("RF_sol_common_functions_CreateFromTemplate", args); var params, module, result; params = sol.common.ix.RfUtils.parseAndCheckParams(iXSEContext, arguments.callee.name, args); module = sol.create("sol.common.ix.functions.CreateFromTemplate", params); result = module.process(); logger.exit("RF_sol_common_functions_CreateFromTemplate"); return result; }