[POLICY-73] replace openecomp for policy-engine
[policy/engine.git] / POLICY-SDK-APP / src / main / webapp / app / policyApp / policy-models / Editor / js / entities / item.js
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP Policy Engine
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20 angular.module('abs').factory('item', ['$http', '$q', 'policyManagerConfig', function($http, $q, policyManagerConfig) {
21
22         var Item = function(model, path) {
23             var rawModel = {
24                 name: model && model.name || '',
25                 subScopename: model && model.subScopename || '',
26                 path: path || [],
27                 type: model && model.type || 'file',
28                 size: model && parseInt(model.size || 0),
29                 date: parseMySQLDate(model && model.date),
30                 version: model && model.version || '',
31                 createdBy: model && model.createdBy || '',
32                 modifiedBy: model && model.modifiedBy || '',
33                 content: model && model.content || '',
34                 recursive: false,
35                 sizeKb: function() {
36                     return Math.round(this.size / 1024, 1);
37                 },
38                 fullPath: function() {
39                     if(this.version == ""){
40                         return ('/' + this.path.join('/') + '/' + this.name).replace(/\/\//, '/');
41                     }else{
42                         return ('/' + this.path.join('/') + '/' + this.name + '.' + this.version + '.xml').replace(/\/\//, '/');
43                     }
44                 }
45             };
46
47             this.error = '';
48             this.inprocess = false;
49
50             this.model = angular.copy(rawModel);
51             this.tempModel = angular.copy(rawModel);
52
53             function parseMySQLDate(mysqlDate) {
54                 var d = (mysqlDate || '').toString().split(/[- :]/);
55                 return new Date(d[0], d[1] - 1, d[2], d[3], d[4], d[5]);
56             }
57         };
58
59         Item.prototype.update = function() {
60             angular.extend(this.model, angular.copy(this.tempModel));
61         };
62
63         Item.prototype.revert = function() {
64             angular.extend(this.tempModel, angular.copy(this.model));
65             this.error = '';
66         };
67
68         Item.prototype.deferredHandler = function(data, deferred, defaultMsg) {
69             if (!data || typeof data !== 'object') {
70                 this.error = 'Bridge response error, please check the docs';
71             }
72             if (data.result && data.result.error) {
73                 this.error = data.result.error;
74             }
75             if (!this.error && data.error) {
76                 this.error = data.error.message;
77             }
78             if (!this.error && defaultMsg) {
79                 this.error = defaultMsg;
80             }
81             if (this.error) {
82                 return deferred.reject(data);
83             }
84             this.update();
85             return deferred.resolve(data);
86         };
87                 
88         Item.prototype.createFolder = function() {
89             var self = this;
90             var deferred = $q.defer();
91             var data = {params: {
92                 mode: 'ADDFOLDER',
93                 path: self.tempModel.path.join('/'),
94                 name: self.tempModel.name
95             }};
96
97             self.inprocess = true;
98             self.error = '';
99             $http.post(policyManagerConfig.createFolderUrl, data).success(function(data) {
100                 self.deferredHandler(data, deferred);
101             }).error(function(data) {
102                 self.deferredHandler(data, deferred, 'Error Occured While Creating Scope');
103             })['finally'](function() {
104                 self.inprocess = false;
105             });
106         
107             return deferred.promise;
108         };
109
110         Item.prototype.rename = function() {
111             var self = this;
112             var deferred = $q.defer();
113             var data = {params: {
114                 mode: 'RENAME',
115                 path: self.model.fullPath(),
116                 newPath: self.tempModel.fullPath()
117             }};
118             self.inprocess = true;
119             self.error = '';
120             $http.post(policyManagerConfig.renameUrl, data).success(function(data) {
121                 self.deferredHandler(data, deferred);
122             }).error(function(data) {
123                 self.deferredHandler(data, deferred, 'Error Occured While Renaming');
124             })['finally'](function() {
125                 self.inprocess = false;
126             });
127             return deferred.promise;
128         };
129
130         
131         Item.prototype.move = function() {
132             var self = this;
133             var deferred = $q.defer();
134             var data = {params: {
135                 mode: 'RENAME',
136                 path: self.model.fullPath(),
137                 newPath: self.tempModel.fullPath()
138             }};
139             self.inprocess = true;
140             self.error = '';
141             $http.post(policyManagerConfig.renameUrl, data).success(function(data) {
142                 self.deferredHandler(data, deferred);
143             }).error(function(data) {
144                 self.deferredHandler(data, deferred, 'Error Occured While Moving');
145             })['finally'](function() {
146                 self.inprocess = false;
147             });
148             return deferred.promise;
149         };
150         
151         Item.prototype.copy = function() {
152             var self = this;
153             var deferred = $q.defer();
154             var data = {params: {
155                 mode: 'COPY',
156                 path: self.model.fullPath(),
157                 newPath: self.tempModel.fullPath()
158             }};
159
160             self.inprocess = true;
161             self.error = '';
162             $http.post(policyManagerConfig.copyUrl, data).success(function(data) {
163                 self.deferredHandler(data, deferred);
164             }).error(function(data) {
165                 self.deferredHandler(data, deferred, 'Error Occured While Cloning');
166             })['finally'](function() {
167                 self.inprocess = false;
168             });
169             return deferred.promise;
170         };
171
172         
173         Item.prototype.getContent = function(policyNavigator) {
174             var self = this;
175             var deferred = $q.defer();
176             var data = {params: {
177                 mode: 'EDITFILE',
178                 path: self.tempModel.fullPath()
179             }};
180
181             self.inprocess = true;
182             self.error = '';
183             $http.post(policyManagerConfig.getContentUrl, data).success(function(data) {
184                 self.tempModel.content =  self.model.content = data.result;
185                 var json = data.result;
186                 var policy = JSON.parse(json);
187                 self.policy = policy;
188                 self.itemContent = policyNavigator;
189                 console.log(policy);
190                 self.deferredHandler(data, deferred);
191             }).error(function(data) {
192                 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Policy Data');
193             })['finally'](function() {
194                 self.inprocess = false;
195             });
196             return deferred.promise;
197         };
198
199         Item.prototype.getViewPolicyContent = function() {
200             var self = this;
201             var deferred = $q.defer();
202             var data = {params: {
203                 mode: 'VIEWPOLICY',
204                 path: self.tempModel.fullPath()
205             }};
206
207             self.inprocess = true;
208             self.error = '';
209             $http.post(policyManagerConfig.viewPolicyUrl, data).success(function(data) {
210                 self.tempModel.content =  self.model.content = data.result;
211                 var json = data.result;
212                 var policy = JSON.parse(json);
213                 self.policy = policy;
214                 console.log(data.result);
215                 console.log(policy);
216                 self.deferredHandler(data, deferred);
217             }).error(function(data) {
218                 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Policy Data');
219             })['finally'](function() {
220                 self.inprocess = false;
221             });
222             return deferred.promise;
223         };
224
225         Item.prototype.getSwitchVersionContent = function() {
226             var self = this;
227             var deferred = $q.defer();
228             var data = {params: {
229                 mode: 'SWITCHVERSION',
230                 path: self.tempModel.fullPath(),
231                 activeVersion : self.tempModel.content.activeVersion,
232                 highestVersion : self.tempModel.content.highestVersion
233             }};
234
235             self.inprocess = true;
236             self.error = '';
237             $http.post(policyManagerConfig.switchVersionUrl, data).success(function(data) {
238                 self.tempModel.content =  self.model.content = data;
239                 self.deferredHandler(data, deferred);
240             }).error(function(data) {
241                 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Switch Version Data');
242             })['finally'](function() {
243                 self.inprocess = false;
244             });
245             return deferred.promise;
246         };
247         
248         Item.prototype.getDescribePolicyContent = function() {
249             var self = this;
250             var deferred = $q.defer();
251             var data = {params: {
252                 mode: 'DESCRIBEPOLICYFILE',
253                 path: self.tempModel.fullPath()
254             }};
255
256             self.inprocess = true;
257             self.error = '';
258             $http.post(policyManagerConfig.describePolicyUrl, data).success(function(data) {
259                 self.tempModel.content =  self.model.content = data.html;
260                 var describeTemplate =  self.tempModel.content;
261              
262                 self.deferredHandler(data, deferred);
263             }).error(function(data) {
264                 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Policy Data to Describe');
265             })['finally'](function() {
266                 self.inprocess = false;
267             });
268             return deferred.promise;
269         };
270
271         Item.prototype.getScopeContent = function() {
272             var self = this;
273             var deferred = $q.defer();
274             var data = {params: {
275                 mode: 'ADDSUBSCOPE',
276                 name: self.tempModel.name,
277                 subScopename: self.tempModel.subScopename,
278                 path: self.tempModel.fullPath()
279             }};
280
281             self.inprocess = true;
282             self.error = '';
283             $http.post(policyManagerConfig.addSubScopeUrl, data).success(function(data) {
284                 self.deferredHandler(data, deferred);
285             }).error(function(data) {
286                 self.deferredHandler(data, deferred, 'Error Occured While Creating the Sub Scope');
287             })['finally'](function() {
288                 self.inprocess = false;
289             });
290             return deferred.promise;
291         };
292
293         Item.prototype.remove = function() {
294             var self = this;
295             var deferred = $q.defer();
296             var data = {params: {
297                 mode: 'DELETE',
298                 path: self.tempModel.fullPath(),
299                 deleteVersion : self.model.versions
300             }};
301
302             self.inprocess = true;
303             self.error = '';
304             $http.post(policyManagerConfig.removeUrl, data).success(function(data) {
305                 self.deferredHandler(data, deferred);
306             }).error(function(data) {
307                 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Deleting Scope');
308             })['finally'](function() {
309                 self.inprocess = false;
310             });
311             return deferred.promise;
312         };
313         
314         Item.prototype.removePolicy = function() {
315             var self = this;
316             var deferred = $q.defer();
317             var data = {params: {
318                 mode: 'DELETE',
319                 path: self.tempModel.fullPath(),
320                 deleteVersion : self.model.versions
321             }};
322
323             self.inprocess = true;
324             self.error = '';
325             $http.post(policyManagerConfig.removeUrl, data).success(function(data) {
326                 self.deferredHandler(data, deferred);
327             }).error(function(data) {
328                 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Deleting Policy');
329             })['finally'](function() {
330                 self.inprocess = false;
331             });
332             return deferred.promise;
333         };
334
335         Item.prototype.isFolder = function() {
336             return this.model.type === 'dir';
337         };
338
339         Item.prototype.isEditable = function() {
340             return !this.isFolder() && policyManagerConfig.isEditableFilePattern.test(this.model.name);
341         };
342
343         return Item;
344     }]);