From d627c4fed8558fdd353e71183d6a0fb6290c9ef9 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Thu, 8 Feb 2018 14:32:17 +0100 Subject: [PATCH] reaction contains kinetic law info --- .../src/main/js/map/data/KineticLaw.js | 31 +++++++ frontend-js/src/main/js/map/data/Reaction.js | 20 ++++- .../src/test/js/map/data/KineticLaw-test.js | 25 ++++++ .../src/test/js/map/data/Reaction-test.js | 82 +++++++++++-------- 4 files changed, 121 insertions(+), 37 deletions(-) create mode 100644 frontend-js/src/main/js/map/data/KineticLaw.js create mode 100644 frontend-js/src/test/js/map/data/KineticLaw-test.js diff --git a/frontend-js/src/main/js/map/data/KineticLaw.js b/frontend-js/src/main/js/map/data/KineticLaw.js new file mode 100644 index 0000000000..81133f5dc6 --- /dev/null +++ b/frontend-js/src/main/js/map/data/KineticLaw.js @@ -0,0 +1,31 @@ +"use strict"; + +function KineticLaw(jsonObject) { + var self = this; + self.setParameterIds(jsonObject.parameterIds); + self.setFunctionIds(jsonObject.functionIds); + self.setDefinition(jsonObject.definition); +} + +KineticLaw.prototype.setParameterIds = function (parameterIds) { + this._parameterIds = parameterIds; +}; +KineticLaw.prototype.getParameterIds = function () { + return this._parameterIds; +}; + +KineticLaw.prototype.setFunctionIds = function (functionIds) { + this._functionIds = functionIds; +}; +KineticLaw.prototype.getFunctionIds = function () { + return this._functionIds; +}; + +KineticLaw.prototype.setDefinition = function (definition) { + this._definition = definition; +}; +KineticLaw.prototype.getDefinition = function () { + return this._definition; +}; + +module.exports = KineticLaw; diff --git a/frontend-js/src/main/js/map/data/Reaction.js b/frontend-js/src/main/js/map/data/Reaction.js index e43e94c88b..a8883197e8 100644 --- a/frontend-js/src/main/js/map/data/Reaction.js +++ b/frontend-js/src/main/js/map/data/Reaction.js @@ -4,6 +4,7 @@ var Alias = require('./Alias'); var BioEntity = require("./BioEntity"); +var KineticLaw = require("./KineticLaw"); var logger = require('../../logger'); @@ -79,7 +80,7 @@ Reaction.prototype.getEndLines = function () { Reaction.prototype.setCenter = function (center) { if (center === null || center === undefined) { - throw new Error("Setting undefined center: ", center); + throw new Error("Setting undefined center: " + center); } this._center = center; }; @@ -103,22 +104,26 @@ Reaction.prototype.update = function (javaObject) { this.setReferences(javaObject.references); this.setType(javaObject.type); - if (javaObject.reactants !== "") { + if (javaObject.reactants !== "" && javaObject.reactants !== undefined) { this.setReactants(javaObject.reactants.split(",")); } else { this.setReactants([]); } - if (javaObject.products !== "") { + if (javaObject.products !== "" && javaObject.products !== undefined) { this.setProducts(javaObject.products.split(",")); } else { this.setProducts([]); } - if (javaObject.modifiers !== "") { + if (javaObject.modifiers !== "" && javaObject.modifiers !== undefined) { this.setModifiers(javaObject.modifiers.split(",")); } else { this.setModifiers([]); } + if (javaObject.kineticLaw !== undefined && javaObject.kineticLaw !== null) { + this.setKineticLaw(new KineticLaw(javaObject.kineticLaw)); + } + this.setHierarchyVisibilityLevel(javaObject.hierarchyVisibilityLevel); this.setIsComplete(true); }; @@ -219,4 +224,11 @@ Reaction.prototype.getModifiers = function () { return this._modifiers; }; +Reaction.prototype.setKineticLaw = function (kineticLaw) { + this._kineticLaw = kineticLaw; +}; +Reaction.prototype.getKineticLaw = function () { + return this._kineticLaw; +}; + module.exports = Reaction; diff --git a/frontend-js/src/test/js/map/data/KineticLaw-test.js b/frontend-js/src/test/js/map/data/KineticLaw-test.js new file mode 100644 index 0000000000..ea819abb40 --- /dev/null +++ b/frontend-js/src/test/js/map/data/KineticLaw-test.js @@ -0,0 +1,25 @@ +"use strict"; + +var KineticLaw = require('../../../../main/js/map/data/KineticLaw'); +var chai = require('chai'); +var assert = chai.assert; +var logger = require('../../logger'); + +describe('Comment', function () { + beforeEach(function () { + logger.flushBuffer(); + }); + + it("constructor", function () { + var kineticLaw = new KineticLaw({ + "parameterIds": [], + "definition": '<math xmlns="http://www.w3.org/1998/Math/MathML">' + + '<apply xmlns="http://www.w3.org/1998/Math/MathML">' + + '<divide/><apply><times/><ci>ca1</ci><apply><plus/><ci>sa1</ci><ci>sa2</ci></apply></apply><cn type=\"integer\"> 2 </cn>' + + '</apply></math>', + "functionIds": [] + }); + assert.ok(kineticLaw); + assert.ok(kineticLaw.getDefinition().indexOf("apply") >= 0); + }); +}); diff --git a/frontend-js/src/test/js/map/data/Reaction-test.js b/frontend-js/src/test/js/map/data/Reaction-test.js index c1d97443cd..f6050668e5 100644 --- a/frontend-js/src/test/js/map/data/Reaction-test.js +++ b/frontend-js/src/test/js/map/data/Reaction-test.js @@ -3,47 +3,63 @@ require("../../mocha-config.js"); var Reaction = require('../../../../main/js/map/data/Reaction'); +var KineticLaw = require('../../../../main/js/map/data/KineticLaw'); var assert = require('assert'); var logger = require('../../logger'); describe('Reaction', function () { - it("constructor from invalid", function () { - var javaObject = { - lines: [{ - start: Object, - end: Object, - type: "UNK" - }] - - }; - try { - new Reaction(javaObject); - } catch (exception) { - assert.ok(exception.message.indexOf("Unknown line type") >= 0); - } - }); - it("constructor from invalid 2", function () { - var javaObject = { - lines: [] + describe("constructor", function () { + it("invalid line type", function () { + var javaObject = { + lines: [{ + start: Object, + end: Object, + type: "UNK" + }] + }; + try { + new Reaction(javaObject); + } catch (exception) { + assert.ok(exception.message.indexOf("Unknown line type") >= 0); + } + }); + it("invalid center point", function () { + var javaObject = { + lines: [] + }; + try { + new Reaction(javaObject); + } catch (exception) { + assert.ok(exception.message.indexOf("undefined center") >= 0); + } + }); - }; - try { - new Reaction(javaObject); - } catch (exception) { - assert.ok(exception.message.indexOf("undefined center") >= 0); - } - }); - it("constructor from Reaction", function () { - var reaction = helper.createReaction(); - var reaction2 = new Reaction(reaction); - assert.equal(reaction2.getId(), reaction.getId()); - assert.equal(reaction2.getCenter(), reaction.getCenter()); - assert.equal(reaction2.getModelId(), reaction.getModelId()); - assert.deepEqual(reaction2.getLines(), reaction.getLines()); - assert.equal(logger.getWarnings().length, 0); + it("from Reaction", function () { + var reaction = helper.createReaction(); + var reaction2 = new Reaction(reaction); + assert.equal(reaction2.getId(), reaction.getId()); + assert.equal(reaction2.getCenter(), reaction.getCenter()); + assert.equal(reaction2.getModelId(), reaction.getModelId()); + assert.deepEqual(reaction2.getLines(), reaction.getLines()); + assert.equal(logger.getWarnings().length, 0); + }); + + it("with empty Kinetics", function () { + var javaObject = { + reactionId: "re1", + references: [], + type: "", + lines: [], + centerPoint: {x: 0, y: 0}, + kineticLaw: {} + }; + var reaction = new Reaction(javaObject); + assert.ok(reaction.getKineticLaw() instanceof KineticLaw); + }); + }); }); -- GitLab