UNPKG

webgme-engine

Version:

WebGME server and Client API without a GUI

203 lines (181 loc) 6.3 kB
/*globals define*/ /*eslint-env node, browser*/ /** * A module representing a PluginResult. * * @author lattmann / https://github.com/lattmann */ (function (factory) { if (typeof define === 'function' && define.amd) { define(['plugin/PluginMessage', 'plugin/PluginResultBase'], factory); } else if (typeof module === 'object' && module.exports) { module.exports = factory(require('./PluginMessage'), require('./PluginResultBase')); } }(function (PluginMessage, PluginResultBase) { 'use strict'; /** * Initializes a new instance of a plugin result object. * * Note: this object is JSON serializable see serialize method. * * @param config - deserializes an existing configuration to this object. * @constructor * @augments PluginResultBase * @alias PluginResult */ var PluginResult = function (config) { var pluginMessage, i; if (config) { this.success = config.success; this.pluginName = config.pluginName; this.pluginId = config.pluginId; this.startTime = config.startTime; this.finishTime = config.finishTime; this.messages = []; this.artifacts = config.artifacts; this.error = config.error; this.commits = config.commits; this.projectId = config.projectId; for (i = 0; i < config.messages.length; i += 1) { if (config.messages[i] instanceof PluginMessage) { pluginMessage = config.messages[i]; } else { pluginMessage = new PluginMessage(config.messages[i]); } this.messages.push(pluginMessage); } } else { this.success = false; this.messages = []; // array of PluginMessages this.artifacts = []; // array of hashes this.pluginName = 'PluginName N/A'; this.startTime = null; this.finishTime = null; this.error = null; this.projectId = null; this.pluginId = null; this.commits = []; } }; // Prototypical inheritance from PluginResultBase. PluginResult.prototype = Object.create(PluginResultBase.prototype); PluginResult.prototype.constructor = PluginResult; /** * * @param {object} commitData * @param {string} commitData.commitHash - hash of the commit. * @param {string} commitData.status - storage.constants./SYNCED/FORKED/MERGED * @param {string} commitData.branchName - name of branch that got updated with the commitHash. */ PluginResult.prototype.addCommit = function (commitData) { this.commits.push(commitData); }; //------------------------------------------------------------------------------------------------------------------ //--------------- Methods used by the plugin manager /** * Sets the name of the plugin to which the result object belongs to. * * @param {string} pluginName - name of the plugin */ PluginResult.prototype.setPluginName = function (pluginName) { this.pluginName = pluginName; }; /** * Sets the name of the plugin to which the result object belongs to. * * @param {string} pluginName - name of the plugin */ PluginResult.prototype.setPluginId = function (pluginId) { this.pluginId = pluginId; }; /** * Sets the name of the projectId the result was generated from. * * @param {string} projectId - id of the project */ PluginResult.prototype.setProjectId = function (projectId) { this.projectId = projectId; }; /** * Gets the ISO 8601 representation of the time when the plugin started its execution. * * @returns {string} */ PluginResult.prototype.getStartTime = function () { return this.startTime; }; /** * Sets the ISO 8601 representation of the time when the plugin started its execution. * * @param {string} time */ PluginResult.prototype.setStartTime = function (time) { this.startTime = time; }; /** * Gets the ISO 8601 representation of the time when the plugin finished its execution. * * @returns {string} */ PluginResult.prototype.getFinishTime = function () { return this.finishTime; }; /** * Sets the ISO 8601 representation of the time when the plugin finished its execution. * * @param {string} time */ PluginResult.prototype.setFinishTime = function (time) { this.finishTime = time; }; /** * Gets error if any error occured during execution. * FIXME: should this be an Error object? * @returns {string} */ PluginResult.prototype.getError = function () { return this.error; }; /** * Sets the error string if any error occured during execution. * FIXME: should this be an Error object? * @param {string} time */ PluginResult.prototype.setError = function (error) { if (this.error) { // Do not overwrite user defined error. return; } if (error instanceof Error) { this.error = error.message; } else { this.error = error; } }; /** * Serializes this object to a JSON representation. * * @returns {{success: boolean, messages: plugin.PluginMessage[], pluginName: string, finishTime: stirng}} */ PluginResult.prototype.serialize = function () { var result = { success: this.success, projectId: this.projectId, messages: [], commits: this.commits, artifacts: this.artifacts, pluginName: this.pluginName, pluginId: this.pluginId, startTime: this.startTime, finishTime: this.finishTime, error: this.error }, i; for (i = 0; i < this.messages.length; i += 1) { result.messages.push(this.messages[i].serialize()); } return result; }; return PluginResult; }));