summaryrefslogtreecommitdiffstats
path: root/js-old/service/Resource.js
diff options
context:
space:
mode:
Diffstat (limited to 'js-old/service/Resource.js')
-rw-r--r--js-old/service/Resource.js90
1 files changed, 90 insertions, 0 deletions
diff --git a/js-old/service/Resource.js b/js-old/service/Resource.js
new file mode 100644
index 000000000..b5be87cb7
--- /dev/null
+++ b/js-old/service/Resource.js
@@ -0,0 +1,90 @@
+/**
+ * Nextcloud - News
+ *
+ * This file is licensed under the Affero General Public License version 3 or
+ * later. See the COPYING file.
+ *
+ * @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @copyright Bernhard Posselt 2014
+ */
+app.factory('Resource', function () {
+ 'use strict';
+
+ var Resource = function (http, BASE_URL, id) {
+ this.id = id || 'id';
+ this.values = [];
+ this.hashMap = {};
+ this.http = http;
+ this.BASE_URL = BASE_URL;
+ };
+
+
+ Resource.prototype.receive = function (objs) {
+ var self = this;
+ objs.forEach(function (obj) {
+ self.add(obj);
+ });
+ };
+
+
+ Resource.prototype.add = function (obj) {
+ var existing = this.hashMap[obj[this.id]];
+
+ if (existing === undefined) {
+ this.values.push(obj);
+ this.hashMap[obj[this.id]] = obj;
+ } else {
+ // copy values from new to old object if it exists already
+ Object.keys(obj).forEach(function (key) {
+ existing[key] = obj[key];
+ });
+ }
+ };
+
+
+ Resource.prototype.size = function () {
+ return this.values.length;
+ };
+
+
+ Resource.prototype.get = function (id) {
+ return this.hashMap[id];
+ };
+
+
+ Resource.prototype.delete = function (id) {
+ // find index of object that should be deleted
+ var self = this;
+ var deleteAtIndex = this.values.findIndex(function (element) {
+ return element[self.id] === id;
+ });
+
+ if (deleteAtIndex !== undefined) {
+ this.values.splice(deleteAtIndex, 1);
+ }
+
+ if (this.hashMap[id] !== undefined) {
+ delete this.hashMap[id];
+ }
+ };
+
+
+ Resource.prototype.clear = function () {
+ this.hashMap = {};
+
+ // http://stackoverflow.com/questions/1232040
+ // this is the fastes way to empty an array when you want to keep
+ // the reference around
+ while (this.values.length > 0) {
+ this.values.pop();
+ }
+ };
+
+
+ Resource.prototype.getAll = function () {
+ return this.values;
+ };
+
+
+ return Resource;
+}); \ No newline at end of file