diff --git a/html/admin/js/modules/org/arangodb/graph.js b/html/admin/js/modules/org/arangodb/graph.js index 6c9a747d7f..48528e3fc6 100644 --- a/html/admin/js/modules/org/arangodb/graph.js +++ b/html/admin/js/modules/org/arangodb/graph.js @@ -1,6 +1,6 @@ module.define("org/arangodb/graph", function(exports, module) { /*jslint indent: 2, nomen: true, maxlen: 100, sloppy: true, plusplus: true */ -/*global require, WeakDictionary, exports */ +/*global require, exports */ //////////////////////////////////////////////////////////////////////////////// /// @brief Graph functionality @@ -1218,9 +1218,9 @@ function Graph(name, vertices, edges) { this._vertices = vertices; this._edges = edges; - // and weak dictionary for vertices and edges - this._weakVertices = new WeakDictionary(); - this._weakEdges = new WeakDictionary(); + // and dictionary for vertices and edges + this._verticesCache = {}; + this._edgesCache = {}; // and store the cashes this.predecessors = {}; @@ -1812,10 +1812,10 @@ Graph.prototype.normalizedMeasurement = function (measurement) { //////////////////////////////////////////////////////////////////////////////// Graph.prototype.constructVertex = function (id) { - var vertex = this._weakVertices[id]; + var vertex = this._verticesCache[id]; if (vertex === undefined) { - this._weakVertices[id] = vertex = new Vertex(this, id); + this._verticesCache[id] = vertex = new Vertex(this, id); } return vertex; @@ -1826,10 +1826,10 @@ Graph.prototype.constructVertex = function (id) { //////////////////////////////////////////////////////////////////////////////// Graph.prototype.constructEdge = function (id) { - var edge = this._weakEdges[id]; + var edge = this._edgesCache[id]; if (edge === undefined) { - this._weakEdges[id] = edge = new Edge(this, id); + this._edgesCache[id] = edge = new Edge(this, id); } return edge; diff --git a/js/common/modules/org/arangodb/graph.js b/js/common/modules/org/arangodb/graph.js index b84cdf8e3c..3567e0bf92 100644 --- a/js/common/modules/org/arangodb/graph.js +++ b/js/common/modules/org/arangodb/graph.js @@ -1,5 +1,5 @@ -/*jslint indent: 2, nomen: true, maxlen: 100, sloppy: true, plusplus: true */ -/*global require, WeakDictionary, exports */ +/*jslint indent: 2, nomen: true, maxlen: 100, sloppy: true, white: true, plusplus: true */ +/*global require, exports */ //////////////////////////////////////////////////////////////////////////////// /// @brief Graph functionality @@ -51,7 +51,8 @@ var findOrCreateCollectionByName = function (name) { if (col === null) { col = db._create(name); - } else if (! (col instanceof ArangoCollection) || col.type() != ArangoCollection.TYPE_DOCUMENT) { + } + else if (!(col instanceof ArangoCollection) || col.type() !== ArangoCollection.TYPE_DOCUMENT) { throw "<" + name + "> must be a document collection"; } @@ -71,7 +72,8 @@ var findOrCreateEdgeCollectionByName = function (name) { if (col === null) { col = db._createEdgeCollection(name); - } else if (!(col instanceof ArangoCollection) || col.type() != ArangoCollection.TYPE_EDGE) { + } + else if (!(col instanceof ArangoCollection) || col.type() !== ArangoCollection.TYPE_EDGE) { throw "<" + name + "> must be an edge collection"; } @@ -218,11 +220,11 @@ Edge.prototype.getOutVertex = function () { //////////////////////////////////////////////////////////////////////////////// Edge.prototype.getPeerVertex = function (vertex) { - if (vertex._id == this._properties._to) { + if (vertex._id === this._properties._to) { return this._graph.constructVertex(this._properties._from); } - if (vertex._id == this._properties._from) { + if (vertex._id === this._properties._from) { return this._graph.constructVertex(this._properties._to); } @@ -669,7 +671,7 @@ Vertex.prototype.commonNeighborsWith = function (target_vertex, options) { return neighbor.id; }; - if (typeof(target_vertex) != 'object') { + if (typeof(target_vertex) !== 'object') { throw " must be a vertex object"; } @@ -680,10 +682,12 @@ Vertex.prototype.commonNeighborsWith = function (target_vertex, options) { if ((options.listed !== undefined) && (options.listed === true)) { return_value = common_neighbors; - } else if ((options.normalized !== undefined) && (options.normalized === true)) { + } + else if ((options.normalized !== undefined) && (options.normalized === true)) { all_neighbors = neighbor_set_one.unite(neighbor_set_two); return_value = (common_neighbors.length / all_neighbors.length); - } else { + } + else { return_value = common_neighbors.length; } @@ -736,7 +740,7 @@ Vertex.prototype.commonPropertiesWith = function (other_vertex, options) { //////////////////////////////////////////////////////////////////////////////// Vertex.prototype.pathTo = function (target_vertex, options) { - if (typeof(target_vertex) != 'object') { + if (typeof(target_vertex) !== 'object') { throw " must be an object"; } var predecessors = target_vertex.determinePredecessors(this, options || {}); @@ -1169,7 +1173,8 @@ function Graph(name, vertices, edges) { try { graphProperties = gdb.document(name); - } catch (e) { + } + catch (e1) { graphProperties = null; } @@ -1217,9 +1222,9 @@ function Graph(name, vertices, edges) { this._vertices = vertices; this._edges = edges; - // and weak dictionary for vertices and edges - this._weakVertices = new WeakDictionary(); - this._weakEdges = new WeakDictionary(); + // and dictionary for vertices and edges + this._verticesCache = {}; + this._edgesCache = {}; // and store the cashes this.predecessors = {}; @@ -1381,16 +1386,19 @@ Graph.prototype.getVertex = function (id) { try { ref = this._vertices.document(id); - } catch (e) { + } + catch (e) { ref = null; } if (ref !== null) { vertex = this.constructVertex(ref._id); - } else { + } + else { try { vertex = this.constructVertex(id); - } catch (e) { + } + catch (e1) { vertex = null; } } @@ -1484,7 +1492,7 @@ Graph.prototype.getEdge = function (id) { } else { try { edge = this.constructEdge(id); - } catch (e) { + } catch (e1) { edge = null; } } @@ -1811,10 +1819,10 @@ Graph.prototype.normalizedMeasurement = function (measurement) { //////////////////////////////////////////////////////////////////////////////// Graph.prototype.constructVertex = function (id) { - var vertex = this._weakVertices[id]; + var vertex = this._verticesCache[id]; if (vertex === undefined) { - this._weakVertices[id] = vertex = new Vertex(this, id); + this._verticesCache[id] = vertex = new Vertex(this, id); } return vertex; @@ -1825,10 +1833,10 @@ Graph.prototype.constructVertex = function (id) { //////////////////////////////////////////////////////////////////////////////// Graph.prototype.constructEdge = function (id) { - var edge = this._weakEdges[id]; + var edge = this._edgesCache[id]; if (edge === undefined) { - this._weakEdges[id] = edge = new Edge(this, id); + this._edgesCache[id] = edge = new Edge(this, id); } return edge; diff --git a/js/server/version-check.js b/js/server/version-check.js index 954b672485..873acd18e6 100644 --- a/js/server/version-check.js +++ b/js/server/version-check.js @@ -1,4 +1,5 @@ /*jslint indent: 2, nomen: true, maxlen: 100, sloppy: true, vars: true, white: true, plusplus: true, stupid: true */ +/*global require, exports */ //////////////////////////////////////////////////////////////////////////////// /// @brief version check at the start of the server, will optionally perform @@ -61,7 +62,7 @@ function collectionExists (name) { var collection = getCollection(name); - return (collection != undefined) && (collection != null) && (collection.name() == name); + return (collection !== undefined) && (collection !== null) && (collection.name() === name); } function createSystemCollection (name, attributes) { @@ -70,7 +71,7 @@ } var realAttributes = attributes || { }; - realAttributes['isSystem'] = true; + realAttributes.isSystem = true; if (db._create(name, realAttributes)) { return true; @@ -98,7 +99,7 @@ // VERSION file exists, read its contents var versionInfo = internal.read(versionFile); - if (versionInfo != '') { + if (versionInfo !== '') { var versionValues = JSON.parse(versionInfo); if (versionValues && versionValues.version && ! isNaN(versionValues.version)) { @@ -111,7 +112,8 @@ } } - console.log("Starting upgrade from version " + (lastVersion || "unknown") + " to " + internal.db._version()); + console.log("Starting upgrade from version " + (lastVersion || "unknown") + + " to " + internal.db._version()); // -------------------------------------------------------------------------- // the actual upgrade tasks. all tasks defined here should be "re-entrant" @@ -123,16 +125,18 @@ }); // create a unique index on username attribute in _users - addTask("createUsersIndex", "create index on username attribute in _users collection", function () { - var users = getCollection("_users"); - if (! users) { - return false; - } + addTask("createUsersIndex", + "create index on username attribute in _users collection", + function () { + var users = getCollection("_users"); + if (! users) { + return false; + } - users.ensureUniqueConstraint("username"); + users.ensureUniqueConstraint("username"); - return true; - }); + return true; + }); // add a default root user with no passwd addTask("addDefaultUser", "add default root user", function () { @@ -141,7 +145,7 @@ return false; } - if (users.count() == 0) { + if (users.count() === 0) { // only add account if user has not created his/her own accounts already users.save({ user: "root", password: internal.encodePassword(""), active: true }); } @@ -155,67 +159,72 @@ }); // create a unique index on name attribute in _graphs - addTask("createGraphsIndex", "create index on name attribute in _graphs collection", function () { - var graphs = getCollection("_graphs"); + addTask("createGraphsIndex", + "create index on name attribute in _graphs collection", + function () { + var graphs = getCollection("_graphs"); - if (! graphs) { - return false; - } - - graphs.ensureUniqueConstraint("name"); - - return true; - }); - - // make distinction between document and edge collections - addTask("addCollectionVersion", "set new collection type for edge collections and update collection version", function () { - var collections = db._collections(); - - for (var i in collections) { - var collection = collections[i]; - - try { - if (collection.version() > 1) { - // already upgraded - continue; - } - - if (collection.type() == 3) { - // already an edge collection - collection.setAttribute("version", 2); - continue; - } - - if (collection.count() > 0) { - var isEdge = true; - // check the 1st 50 documents from a collection - var documents = collection.ALL(0, 50); - - for (var j in documents) { - var doc = documents[j]; - - // check if documents contain both _from and _to attributes - if (! doc.hasOwnProperty("_from") || ! doc.hasOwnProperty("_to")) { - isEdge = false; - break; - } - } - - if (isEdge) { - collection.setAttribute("type", 3); - console.log("made collection '" + collection.name() + " an edge collection"); - } - } - collection.setAttribute("version", 2); - } - catch (e) { - console.error("could not upgrade collection '" + collection.name() + "'"); + if (! graphs) { return false; } - } - return true; - }); + graphs.ensureUniqueConstraint("name"); + + return true; + }); + + // make distinction between document and edge collections + addTask("addCollectionVersion", + "set new collection type for edge collections and update collection version", + function () { + var collections = db._collections(); + var i; + + for (i in collections) { + var collection = collections[i]; + + try { + if (collection.version() > 1) { + // already upgraded + continue; + } + + if (collection.type() == 3) { + // already an edge collection + collection.setAttribute("version", 2); + continue; + } + + if (collection.count() > 0) { + var isEdge = true; + // check the 1st 50 documents from a collection + var documents = collection.ALL(0, 50); + + for (var j in documents) { + var doc = documents[j]; + + // check if documents contain both _from and _to attributes + if (! doc.hasOwnProperty("_from") || ! doc.hasOwnProperty("_to")) { + isEdge = false; + break; + } + } + + if (isEdge) { + collection.setAttribute("type", 3); + console.log("made collection '" + collection.name() + " an edge collection"); + } + } + collection.setAttribute("version", 2); + } + catch (e) { + console.error("could not upgrade collection '" + collection.name() + "'"); + return false; + } + } + + return true; + }); // create the _modules collection addTask("createModules", "setup _modules collection", function () {