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);
56 Item.prototype.update = function() {
57 angular.extend(this.model, angular.copy(this.tempModel));
60 Item.prototype.revert = function() {
61 angular.extend(this.tempModel, angular.copy(this.model));
65 Item.prototype.deferredHandler = function(data, deferred, defaultMsg) {
66 if (!data || typeof data !== 'object') {
67 this.error = 'Bridge response error, please check the docs';
69 if (data.result && data.result.error) {
70 this.error = data.result.error;
72 if (!this.error && data.error) {
73 this.error = data.error.message;
75 if (!this.error && defaultMsg) {
76 this.error = defaultMsg;
79 return deferred.reject(data);
82 return deferred.resolve(data);
85 Item.prototype.createFolder = function() {
87 var deferred = $q.defer();
90 path: self.tempModel.path.join('/'),
91 name: self.tempModel.name
94 self.inprocess = true;
96 $http.post(policyManagerConfig.createFolderUrl, data).success(function(data) {
97 self.deferredHandler(data, deferred);
98 }).error(function(data) {
99 self.deferredHandler(data, deferred, 'Error Occured While Creating Scope');
100 })['finally'](function() {
101 self.inprocess = false;
104 return deferred.promise;
107 Item.prototype.rename = function() {
109 var deferred = $q.defer();
110 var data = {params: {
112 path: self.model.fullPath(),
113 newPath: self.tempModel.fullPath()
115 self.inprocess = true;
117 $http.post(policyManagerConfig.renameUrl, data).success(function(data) {
118 self.deferredHandler(data, deferred);
119 }).error(function(data) {
120 self.deferredHandler(data, deferred, 'Error Occured While Renaming');
121 })['finally'](function() {
122 self.inprocess = false;
124 return deferred.promise;
128 Item.prototype.move = function() {
130 var deferred = $q.defer();
131 var data = {params: {
133 path: self.model.fullPath(),
134 newPath: self.tempModel.fullPath()
136 self.inprocess = true;
138 $http.post(policyManagerConfig.renameUrl, data).success(function(data) {
139 if(data.result.error != undefined){
140 var value = data.result.error;
141 value = value.replace("rename" , "move");
142 data.result.error = value;
144 self.deferredHandler(data, deferred);
145 }).error(function(data) {
146 self.deferredHandler(data, deferred, 'Error Occured While Moving');
147 })['finally'](function() {
148 self.inprocess = false;
150 return deferred.promise;
153 Item.prototype.copy = function() {
155 var deferred = $q.defer();
156 var data = {params: {
158 path: self.model.fullPath(),
159 newPath: self.tempModel.fullPath()
162 self.inprocess = true;
164 $http.post(policyManagerConfig.copyUrl, data).success(function(data) {
165 self.deferredHandler(data, deferred);
166 }).error(function(data) {
167 self.deferredHandler(data, deferred, 'Error Occured While Cloning');
168 })['finally'](function() {
169 self.inprocess = false;
171 return deferred.promise;
175 Item.prototype.getContent = function(policyNavigator) {
177 var deferred = $q.defer();
178 var data = {params: {
180 path: self.tempModel.fullPath()
183 self.inprocess = true;
185 $http.post(policyManagerConfig.getContentUrl, data).success(function(data) {
186 self.tempModel.content = self.model.content = data.result;
187 var json = data.result;
188 var policy = JSON.parse(json);
189 self.policy = policy;
190 self.itemContent = policyNavigator;
192 self.deferredHandler(data, deferred);
193 }).error(function(data) {
194 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Policy Data');
195 })['finally'](function() {
196 self.inprocess = false;
198 return deferred.promise;
201 Item.prototype.getViewPolicyContent = function() {
203 var deferred = $q.defer();
204 var data = {params: {
206 path: self.tempModel.fullPath()
209 self.inprocess = true;
211 $http.post(policyManagerConfig.viewPolicyUrl, data).success(function(data) {
212 self.tempModel.content = self.model.content = data.result;
213 var json = data.result;
214 var policy = JSON.parse(json);
215 self.policy = policy;
216 console.log(data.result);
218 self.deferredHandler(data, deferred);
219 }).error(function(data) {
220 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Policy Data');
221 })['finally'](function() {
222 self.inprocess = false;
224 return deferred.promise;
227 Item.prototype.getSwitchVersionContent = function() {
229 var deferred = $q.defer();
230 var data = {params: {
231 mode: 'SWITCHVERSION',
232 path: self.tempModel.fullPath(),
233 activeVersion : self.tempModel.content.activeVersion,
234 highestVersion : self.tempModel.content.highestVersion
237 self.inprocess = true;
239 $http.post(policyManagerConfig.switchVersionUrl, data).success(function(data) {
240 self.tempModel.content = self.model.content = data;
241 self.deferredHandler(data, deferred);
242 }).error(function(data) {
243 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Switch Version Data');
244 })['finally'](function() {
245 self.inprocess = false;
247 return deferred.promise;
250 Item.prototype.getDescribePolicyContent = function() {
252 var deferred = $q.defer();
253 var data = {params: {
254 mode: 'DESCRIBEPOLICYFILE',
255 path: self.tempModel.fullPath()
258 self.inprocess = true;
260 $http.post(policyManagerConfig.describePolicyUrl, data).success(function(data) {
261 self.tempModel.content = self.model.content = data.html;
263 self.deferredHandler(data, deferred);
264 }).error(function(data) {
265 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Policy Data to Describe');
266 })['finally'](function() {
267 self.inprocess = false;
269 return deferred.promise;
272 Item.prototype.getScopeContent = function() {
274 var deferred = $q.defer();
275 var data = {params: {
277 name: self.tempModel.name,
278 subScopename: self.tempModel.subScopename,
279 path: self.tempModel.fullPath()
282 self.inprocess = true;
284 $http.post(policyManagerConfig.addSubScopeUrl, data).success(function(data) {
285 self.deferredHandler(data, deferred);
286 }).error(function(data) {
287 self.deferredHandler(data, deferred, 'Error Occured While Creating the Sub Scope');
288 })['finally'](function() {
289 self.inprocess = false;
291 return deferred.promise;
294 Item.prototype.remove = function() {
296 var deferred = $q.defer();
297 var data = {params: {
299 path: self.tempModel.fullPath(),
300 deleteVersion : self.model.versions
303 self.inprocess = true;
305 $http.post(policyManagerConfig.removeUrl, data).success(function(data) {
306 self.deferredHandler(data, deferred);
307 }).error(function(data) {
308 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Deleting Scope');
309 })['finally'](function() {
310 self.inprocess = false;
312 return deferred.promise;
315 Item.prototype.removePolicy = function() {
317 var deferred = $q.defer();
318 var data = {params: {
320 path: self.tempModel.fullPath(),
321 deleteVersion : self.model.versions
324 self.inprocess = true;
326 $http.post(policyManagerConfig.removeUrl, data).success(function(data) {
327 self.deferredHandler(data, deferred);
328 }).error(function(data) {
329 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Deleting Policy');
330 })['finally'](function() {
331 self.inprocess = false;
333 return deferred.promise;
336 Item.prototype.isFolder = function() {
337 return this.model.type === 'dir';
340 Item.prototype.isEditable = function() {
341 return !this.isFolder() && policyManagerConfig.isEditableFilePattern.test(this.model.name);