importPackage(Packages.de.elo.ix.client); //@include lib_Class.js //@include lib_sol.common.DateUtils.js //@include lib_sol.common.ObjectUtils.js //@include lib_sol.common.ObjectFormatter.js //@include lib_sol.common.Injection.js //@include lib_sol.common.IxUtils.js //@include lib_sol.common.ix.ServiceBase.js //@include lib_sol.common.ix.RfUtils.js //@include lib_sol.common.RepoUtils.js //@include lib_sol.common.SordUtils.js //@include lib_sol.common.Template.js //@include lib_sol.common_monitoring.ix.TimedEventUtils.js //@include sol.common.ix.services.GetNamespacedConfigs.js /** * * @author ELO Digital Office GmbH * @version 1.0 * * @eloix * * @requires sol.common.DateUtils * @requires sol.common.ObjectUtils * @requires sol.common.ObjectFormatter * @requires sol.common.Injection * @requires sol.common.IxUtils * @requires sol.common.ix.ServiceBase * @requires sol.common.ix.RfUtils * @requires sol.common.RepoUtils * @requires sol.common.SordUtils * @requires sol.common.Template * @requires sol.common_monitoring.ix.TimedEventUtils * @requires sol.common.ix.services.GetNamespacedConfigs * */ sol.define("sol.common_monitoring.ix.services.SearchTimedEvents", { extend: "sol.common.ix.ServiceBase", logger: sol.create("sol.Logger", { scope: "sol.common_monitoring.ix.services.SearchTimedEvents" }), utils: sol.create("sol.common_monitoring.ix.TimedEventUtils"), messages: { missingSearchTemplate: "sol.common_monitoring.error.message.missing_search_template", missingResult: "sol.common_monitoring.error.message.missing_result" }, optimize: {}, initialize: function (config) { var me = this; if (config) { me.setupConfig(config); me.setupInjection(config); } me.$super(me.extend, "initialize", [config]); me.messages = me.utils.translateMap(me.messages); }, setupConfig: function (config) { var me = this; me.params = config; me.inject = me.inject || {}; me.inject.params = { prop: "params" }; }, setupInjection: function (config) { var me = this, injections; injections = me.utils.getInjections(config); if (injections && injections.$configRelation && injections.inject) { me.$configRelation = sol.common.ObjectUtils.mergeObjects({}, [me.$configRelation || {}, injections.$configRelation], true); me.inject = sol.common.ObjectUtils.mergeObjects({}, [me.inject || {}, injections.inject], true); sol.create("sol.common.Injection").inject(me); } }, getSource: function (params) { var me = this; return me.utils.getSourceDirectly(params) || me.utils.getSourceFromSourceId(params); }, getSearchTemplate: function (params) { params = params || {}; return params.search ? params.referenceId && params.search.reference ? params.search.reference : params.configId && params.configNamespace && params.search.config ? params.search.config : params.search : null; }, renderSearchTemplate: function (template, params) { var me = this; return me.utils.renderRequestParams(template, params); }, getIdsFromResult: function (result) { var me = this; return ((result || {}).sords || []) .map(me.getSomeId) .filter(function (id) { return id != null; }); }, getSomeId: function (obj) { return sol.common.ObjectUtils.type(obj, 'string') ? obj : ["id", "objId", "guid"] .map(function (idCandidateKey) { return obj[idCandidateKey]; }) .filter(function (idCandidate) { return idCandidate; })[0]; }, process: function (_params) { var me = this, params; params = sol.common.ObjectUtils.mergeObjects(params, [(me.config || {}), (me.params || {}), (_params || {})]) || {}; params.source = me.getSource(params); params.searchTemplate = me.getSearchTemplate(params); if (!params.searchTemplate) { me.logger.info(me.messages.missingSearchTemplate, { params: params }); return []; } params.search = me.renderSearchTemplate(params.searchTemplate, params); params.searchResult = me.utils.optimizedExecute(me, params.search); // an empty array is a valid result if (!params.searchResult) { me.logger.info(me.messages.missingResult, { params: params }); return []; } return me.getIdsFromResult(params.searchResult); } }); /** * @member sol.common_monitoring.ix.services.SearchTimedEvents * @method RF_sol_common_monitoring_ix_service_SearchTimedEvents * @static * @inheritdoc sol.common.ix.FunctionBase#RF_FunctionName */ function RF_sol_common_monitoring_ix_service_SearchTimedEvents(iXSEContext, args) { var rfArgs, fun; rfArgs = sol.common.ix.RfUtils.parseAndCheckParams(iXSEContext, arguments.callee.name, args); fun = sol.create("sol.common_monitoring.ix.services.SearchTimedEvents", rfArgs); return JSON.stringify(fun.process()); }