2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017, 2019 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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
20 angular.module('abs').factory('item', ['$http', '$q', 'policyManagerConfig', function($http, $q, policyManagerConfig) {
22 var Item = function(model, path) {
24 name: model && model.name || '',
25 subScopename: model && model.subScopename || '',
27 type: model && model.type || 'file',
28 size: model && parseInt(model.size || 0),
29 date: model && model.date,
30 version: model && model.version || '',
31 createdBy: model && model.createdBy || '',
32 modifiedBy: model && model.modifiedBy || '',
33 roleType: model && model.roleType || '',
34 content: model && model.content || '',
37 return Math.round(this.size / 1024, 1);
39 fullPath: function() {
40 if(this.version == ""){
41 return ('/' + this.path.join('/') + '/' + this.name).replace(/\/\//, '/');
43 return ('/' + this.path.join('/') + '/' + this.name + '.' + this.version + '.xml').replace(/\/\//, '/');
49 this.inprocess = false;
51 this.model = angular.copy(rawModel);
52 this.tempModel = angular.copy(rawModel);
54 function parseMySQLDate(mysqlDate) {
55 var d = (mysqlDate || '').toString().split(/[- :]/);
56 return new Date(d[0], d[1] - 1, d[2], d[3], d[4], d[5]);
60 Item.prototype.update = function() {
61 angular.extend(this.model, angular.copy(this.tempModel));
64 Item.prototype.revert = function() {
65 angular.extend(this.tempModel, angular.copy(this.model));
69 Item.prototype.deferredHandler = function(data, deferred, defaultMsg) {
70 if (!data || typeof data !== 'object') {
71 this.error = 'Bridge response error, please check the docs';
73 if (data.result && data.result.error) {
74 this.error = data.result.error;
76 if (!this.error && data.error) {
77 this.error = data.error.message;
79 if (!this.error && defaultMsg) {
80 this.error = defaultMsg;
83 return deferred.reject(data);
86 return deferred.resolve(data);
89 Item.prototype.createFolder = function() {
91 var deferred = $q.defer();
94 path: self.tempModel.path.join('/'),
95 name: self.tempModel.name
98 self.inprocess = true;
100 $http.post(policyManagerConfig.createFolderUrl, data).success(function(data) {
101 self.deferredHandler(data, deferred);
102 }).error(function(data) {
103 self.deferredHandler(data, deferred, 'Error Occured While Creating Scope');
104 })['finally'](function() {
105 self.inprocess = false;
108 return deferred.promise;
111 Item.prototype.rename = function() {
113 var deferred = $q.defer();
114 var data = {params: {
116 path: self.model.fullPath(),
117 newPath: self.tempModel.fullPath()
119 self.inprocess = true;
121 $http.post(policyManagerConfig.renameUrl, data).success(function(data) {
122 self.deferredHandler(data, deferred);
123 }).error(function(data) {
124 self.deferredHandler(data, deferred, 'Error Occured While Renaming');
125 })['finally'](function() {
126 self.inprocess = false;
128 return deferred.promise;
132 Item.prototype.move = function() {
134 var deferred = $q.defer();
135 var data = {params: {
137 path: self.model.fullPath(),
138 newPath: self.tempModel.fullPath()
140 self.inprocess = true;
142 $http.post(policyManagerConfig.renameUrl, data).success(function(data) {
143 if(data.result.error != undefined){
144 var value = data.result.error;
145 value = value.replace("rename" , "move");
146 data.result.error = value;
148 self.deferredHandler(data, deferred);
149 }).error(function(data) {
150 self.deferredHandler(data, deferred, 'Error Occured While Moving');
151 })['finally'](function() {
152 self.inprocess = false;
154 return deferred.promise;
157 Item.prototype.copy = function() {
159 var deferred = $q.defer();
160 var data = {params: {
162 path: self.model.fullPath(),
163 newPath: self.tempModel.fullPath()
166 self.inprocess = true;
168 $http.post(policyManagerConfig.copyUrl, data).success(function(data) {
169 self.deferredHandler(data, deferred);
170 }).error(function(data) {
171 self.deferredHandler(data, deferred, 'Error Occured While Cloning');
172 })['finally'](function() {
173 self.inprocess = false;
175 return deferred.promise;
179 Item.prototype.getContent = function(policyNavigator) {
181 var deferred = $q.defer();
182 var data = {params: {
184 path: self.tempModel.fullPath()
187 self.inprocess = true;
189 $http.post(policyManagerConfig.getContentUrl, data).success(function(data) {
190 self.tempModel.content = self.model.content = data.result;
191 var json = data.result;
192 var policy = JSON.parse(json);
193 self.policy = policy;
194 self.itemContent = policyNavigator;
196 self.deferredHandler(data, deferred);
197 }).error(function(data) {
198 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Policy Data');
199 })['finally'](function() {
200 self.inprocess = false;
202 return deferred.promise;
205 Item.prototype.getViewPolicyContent = function() {
207 var deferred = $q.defer();
208 var data = {params: {
210 path: self.tempModel.fullPath()
213 self.inprocess = true;
215 $http.post(policyManagerConfig.viewPolicyUrl, data).success(function(data) {
216 self.tempModel.content = self.model.content = data.result;
217 var json = data.result;
218 var policy = JSON.parse(json);
219 self.policy = policy;
220 console.log(data.result);
222 self.deferredHandler(data, deferred);
223 }).error(function(data) {
224 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Policy Data');
225 })['finally'](function() {
226 self.inprocess = false;
228 return deferred.promise;
231 Item.prototype.getSwitchVersionContent = function() {
233 var deferred = $q.defer();
234 var data = {params: {
235 mode: 'SWITCHVERSION',
236 path: self.tempModel.fullPath(),
237 activeVersion : self.tempModel.content.activeVersion,
238 highestVersion : self.tempModel.content.highestVersion
241 self.inprocess = true;
243 $http.post(policyManagerConfig.switchVersionUrl, data).success(function(data) {
244 self.tempModel.content = self.model.content = data;
245 self.deferredHandler(data, deferred);
246 }).error(function(data) {
247 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Switch Version Data');
248 })['finally'](function() {
249 self.inprocess = false;
251 return deferred.promise;
254 Item.prototype.getDescribePolicyContent = function() {
256 var deferred = $q.defer();
257 var data = {params: {
258 mode: 'DESCRIBEPOLICYFILE',
259 path: self.tempModel.fullPath()
262 self.inprocess = true;
264 $http.post(policyManagerConfig.describePolicyUrl, data).success(function(data) {
265 self.tempModel.content = self.model.content = data.html;
266 var describeTemplate = self.tempModel.content;
268 self.deferredHandler(data, deferred);
269 }).error(function(data) {
270 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Policy Data to Describe');
271 })['finally'](function() {
272 self.inprocess = false;
274 return deferred.promise;
277 Item.prototype.getScopeContent = function() {
279 var deferred = $q.defer();
280 var data = {params: {
282 name: self.tempModel.name,
283 subScopename: self.tempModel.subScopename,
284 path: self.tempModel.fullPath()
287 self.inprocess = true;
289 $http.post(policyManagerConfig.addSubScopeUrl, data).success(function(data) {
290 self.deferredHandler(data, deferred);
291 }).error(function(data) {
292 self.deferredHandler(data, deferred, 'Error Occured While Creating the Sub Scope');
293 })['finally'](function() {
294 self.inprocess = false;
296 return deferred.promise;
299 Item.prototype.remove = function() {
301 var deferred = $q.defer();
302 var data = {params: {
304 path: self.tempModel.fullPath(),
305 deleteVersion : self.model.versions
308 self.inprocess = true;
310 $http.post(policyManagerConfig.removeUrl, data).success(function(data) {
311 self.deferredHandler(data, deferred);
312 }).error(function(data) {
313 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Deleting Scope');
314 })['finally'](function() {
315 self.inprocess = false;
317 return deferred.promise;
320 Item.prototype.removePolicy = function() {
322 var deferred = $q.defer();
323 var data = {params: {
325 path: self.tempModel.fullPath(),
326 deleteVersion : self.model.versions
329 self.inprocess = true;
331 $http.post(policyManagerConfig.removeUrl, data).success(function(data) {
332 self.deferredHandler(data, deferred);
333 }).error(function(data) {
334 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Deleting Policy');
335 })['finally'](function() {
336 self.inprocess = false;
338 return deferred.promise;
341 Item.prototype.isFolder = function() {
342 return this.model.type === 'dir';
345 Item.prototype.isEditable = function() {
346 return !this.isFolder() && policyManagerConfig.isEditableFilePattern.test(this.model.name);