summaryrefslogtreecommitdiff
path: root/frontend/delta/js/Clipperz/PM/DataModel/User.Header.Legacy.js
Unidiff
Diffstat (limited to 'frontend/delta/js/Clipperz/PM/DataModel/User.Header.Legacy.js') (more/less context) (ignore whitespace changes)
-rw-r--r--frontend/delta/js/Clipperz/PM/DataModel/User.Header.Legacy.js182
1 files changed, 182 insertions, 0 deletions
diff --git a/frontend/delta/js/Clipperz/PM/DataModel/User.Header.Legacy.js b/frontend/delta/js/Clipperz/PM/DataModel/User.Header.Legacy.js
new file mode 100644
index 0000000..cda5a41
--- a/dev/null
+++ b/frontend/delta/js/Clipperz/PM/DataModel/User.Header.Legacy.js
@@ -0,0 +1,182 @@
1/*
2
3Copyright 2008-2013 Clipperz Srl
4
5This file is part of Clipperz, the online password manager.
6For further information about its features and functionalities please
7refer to http://www.clipperz.com.
8
9* Clipperz is free software: you can redistribute it and/or modify it
10 under the terms of the GNU Affero General Public License as published
11 by the Free Software Foundation, either version 3 of the License, or
12 (at your option) any later version.
13
14* Clipperz is distributed in the hope that it will be useful, but
15 WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 See the GNU Affero General Public License for more details.
18
19* You should have received a copy of the GNU Affero General Public
20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21
22*/
23
24try { if (typeof(Clipperz.PM.DataModel.User) == 'undefined') { throw ""; }} catch (e) {
25 throw "Clipperz.PM.DataModel.User.Header.Legacy depends on Clipperz.PM.DataModel.User!";
26}
27
28if (typeof(Clipperz.PM.DataModel.User.Header) == 'undefined') { Clipperz.PM.DataModel.User.Header = {}; }
29
30Clipperz.PM.DataModel.User.Header.Legacy = function(args) {
31 //args = args || {};
32 Clipperz.PM.DataModel.User.Header.Legacy.superclass.constructor.apply(this, arguments);
33
34 this._retrieveRecordDetailFunction = args.retrieveRecordDetailFunction|| Clipperz.Base.exception.raise('MandatoryParameter');
35 this._records = null;
36 //this._directLogins = null;
37
38 return this;
39}
40
41
42Clipperz.Base.extend(Clipperz.PM.DataModel.User.Header.Legacy, Clipperz.PM.DataModel.EncryptedRemoteObject, {
43
44 'toString': function() {
45 return "Clipperz.PM.DataModel.User.Header.Legacy";
46 },
47
48 //-------------------------------------------------------------------------
49
50 'retrieveRecordDetailFunction': function () {
51 return this._retrieveRecordDetailFunction;
52 },
53
54 //-------------------------------------------------------------------------
55
56 'getRecordKey': function (aRecordReference) {
57 var deferredResult;
58
59 deferredResult = new Clipperz.Async.Deferred("User.Header.Legacy.getRecordKey", {trace:false});
60 deferredResult.addMethod(this, 'getRecordIndexData');
61 deferredResult.addCallback(MochiKit.Base.itemgetter('key'))
62 deferredResult.callback();
63
64 return deferredResult;
65 },
66
67 //=========================================================================
68
69 'getRecordIndexData': function (aRecordReference) {
70 return this.getValue('records.' + aRecordReference);
71 },
72
73 'updateRecordIndexData': function (aRecordReference, aKey, aValue) {
74 return this.setValue('records.' + aRecordReference + "." + aKey, aValue);
75 },
76
77 //-------------------------------------------------------------------------
78
79 'getDirectLoginIndexData': function (aDirectLoginReference) {
80 return this.getValue('directLogins.' + aDirectLoginReference);
81 },
82
83 'setDirectLoginIndexData': function (aDirectLoginReference, aKey, aValue) {
84 return this.setValue('directLogins.' + aDirectLoginReference + '.' + aKey, aValue);
85 },
86
87 'removeDirectLoginIndexData': function (aDirectLoginReference) {
88 return this.removeValue('directLogins.' + aDirectLoginReference);
89 },
90
91 //=========================================================================
92
93 'records': function () {
94 vardeferredResult;
95 var deferredLock;
96
97 deferredLock = this.getDeferredLockForKey('records');
98
99 deferredResult = new Clipperz.Async.Deferred("User.Header.Legacy.records", {trace:false});
100 deferredResult.acquireLock(deferredLock);
101 deferredResult.addCallback(MochiKit.Base.bind(function () {
102 var innerDeferredResult;
103
104 if (this._records == null) {
105 innerDeferredResult = new Clipperz.Async.Deferred("User.Header.Legacy.records <inner deferred>", {trace:false});
106 innerDeferredResult.collectResults({
107 'header': [
108 // MochiKit.Base.method(this, 'getObjectDataStore'),
109 // MochiKit.Base.methodcaller('values')
110 MochiKit.Base.method(this, 'values')
111 ],
112 'recordsStats': [
113 MochiKit.Base.method(this, 'getRemoteData'),
114 MochiKit.Base.itemgetter('recordsStats')
115 ]
116 });
117 innerDeferredResult.addCallback(MochiKit.Base.bind(function (someObjectData) {
118 var reference;
119
120 this._records = {};
121 // this._directLogins = {};
122
123 for (reference in someObjectData['header']['records']) {
124 varrecord;
125
126 record = new Clipperz.PM.DataModel.Record({
127 'reference': reference,
128 'retrieveKeyFunction': MochiKit.Base.method(this, 'getRecordKey'),
129 'retrieveRemoteDataFunction':this.retrieveRecordDetailFunction(),
130 // 'encryptedDataKeypath': 'data',
131 // 'encryptedVersionKeypath': 'version',
132
133 'retrieveIndexDataFunction':MochiKit.Base.method(this, 'getRecordIndexData'),
134 'updateIndexDataFunction': MochiKit.Base.method(this, 'updateRecordIndexData'),
135 'updateDate': someObjectData['recordsStats'][reference]['updateDate'],
136
137 'retrieveDirectLoginIndexDataFunction':MochiKit.Base.method(this, 'getDirectLoginIndexData'),
138 'setDirectLoginIndexDataFunction': MochiKit.Base.method(this, 'setDirectLoginIndexData'),
139 'removeDirectLoginIndexDataFunction':MochiKit.Base.method(this, 'removeDirectLoginIndexData')
140 });
141
142 this._records[reference] = record;
143 }
144
145 for (reference in someObjectData['header']['directLogins']) {
146 vardirectLogin;
147 var record;
148
149 record = this._records[someObjectData['header']['directLogins'][reference]['record']];
150 if (record != null) {
151 directLogin = new Clipperz.PM.DataModel.DirectLogin({
152 'reference': reference,
153 'record': record//,
154 // 'retrieveIndexDataFunction':MochiKit.Base.method(this, 'getDirectLoginIndexData'),
155 // 'setIndexDataFunction': MochiKit.Base.method(this, 'setDirectLoginIndexData'),
156 // 'removeIndexDataFunction': MochiKit.Base.method(this, 'removeDirectLoginIndexData')
157 });
158 } else {
159Clipperz.log("WARNING: DIRECT LOGIN without a matching RECORD!!");
160 }
161 }
162
163 return this._records;
164 }, this));
165 innerDeferredResult.callback();
166 } else {
167 innerDeferredResult = MochiKit.Async.succeed(this._records);
168 }
169
170 return innerDeferredResult;
171 }, this));
172 deferredResult.releaseLock(deferredLock);
173 deferredResult.callback();
174
175 return deferredResult;
176 },
177
178 //=========================================================================
179 __syntaxFix__: "syntax fix"
180});
181
182