2 * ============LICENSE_START=======================================================
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
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: parseMySQLDate(model && model.date),
30 version: model && model.version || '',
31 createdBy: model && model.createdBy || '',
32 modifiedBy: model && model.modifiedBy || '',
33 content: model && model.content || '',
36 return Math.round(this.size / 1024, 1);
38 fullPath: function() {
39 if(this.version == ""){
40 return ('/' + this.path.join('/') + '/' + this.name).replace(/\/\//, '/');
42 return ('/' + this.path.join('/') + '/' + this.name + '.' + this.version + '.xml').replace(/\/\//, '/');
48 this.inprocess = false;
50 this.model = angular.copy(rawModel);
51 this.tempModel = angular.copy(rawModel);
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]);
59 Item.prototype.update = function() {
60 angular.extend(this.model, angular.copy(this.tempModel));
63 Item.prototype.revert = function() {
64 angular.extend(this.tempModel, angular.copy(this.model));
68 Item.prototype.deferredHandler = function(data, deferred, defaultMsg) {
69 if (!data || typeof data !== 'object') {
70 this.error = 'Bridge response error, please check the docs';
72 if (data.result && data.result.error) {
73 this.error = data.result.error;
75 if (!this.error && data.error) {
76 this.error = data.error.message;
78 if (!this.error && defaultMsg) {
79 this.error = defaultMsg;
82 return deferred.reject(data);
85 return deferred.resolve(data);
88 Item.prototype.createFolder = function() {
90 var deferred = $q.defer();
93 path: self.tempModel.path.join('/'),
94 name: self.tempModel.name
97 self.inprocess = true;
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;
107 return deferred.promise;
110 Item.prototype.rename = function() {
112 var deferred = $q.defer();
113 var data = {params: {
115 path: self.model.fullPath(),
116 newPath: self.tempModel.fullPath()
118 self.inprocess = true;
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;
127 return deferred.promise;
131 Item.prototype.move = function() {
133 var deferred = $q.defer();
134 var data = {params: {
136 path: self.model.fullPath(),
137 newPath: self.tempModel.fullPath()
139 self.inprocess = true;
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;
148 return deferred.promise;
151 Item.prototype.copy = function() {
153 var deferred = $q.defer();
154 var data = {params: {
156 path: self.model.fullPath(),
157 newPath: self.tempModel.fullPath()
160 self.inprocess = true;
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;
169 return deferred.promise;
173 Item.prototype.getContent = function(policyNavigator) {
175 var deferred = $q.defer();
176 var data = {params: {
178 path: self.tempModel.fullPath()
181 self.inprocess = true;
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;
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;
196 return deferred.promise;
199 Item.prototype.getViewPolicyContent = function() {
201 var deferred = $q.defer();
202 var data = {params: {
204 path: self.tempModel.fullPath()
207 self.inprocess = true;
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);
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;
222 return deferred.promise;
225 Item.prototype.getSwitchVersionContent = function() {
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
235 self.inprocess = true;
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;
245 return deferred.promise;
248 Item.prototype.getDescribePolicyContent = function() {
250 var deferred = $q.defer();
251 var data = {params: {
252 mode: 'DESCRIBEPOLICYFILE',
253 path: self.tempModel.fullPath()
256 self.inprocess = true;
258 $http.post(policyManagerConfig.describePolicyUrl, data).success(function(data) {
259 self.tempModel.content = self.model.content = data.html;
260 var describeTemplate = self.tempModel.content;
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;
268 return deferred.promise;
271 Item.prototype.getScopeContent = function() {
273 var deferred = $q.defer();
274 var data = {params: {
276 name: self.tempModel.name,
277 subScopename: self.tempModel.subScopename,
278 path: self.tempModel.fullPath()
281 self.inprocess = true;
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;
290 return deferred.promise;
293 Item.prototype.remove = function() {
295 var deferred = $q.defer();
296 var data = {params: {
298 path: self.tempModel.fullPath(),
299 deleteVersion : self.model.versions
302 self.inprocess = true;
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;
311 return deferred.promise;
314 Item.prototype.removePolicy = function() {
316 var deferred = $q.defer();
317 var data = {params: {
319 path: self.tempModel.fullPath(),
320 deleteVersion : self.model.versions
323 self.inprocess = true;
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;
332 return deferred.promise;
335 Item.prototype.isFolder = function() {
336 return this.model.type === 'dir';
339 Item.prototype.isEditable = function() {
340 return !this.isFolder() && policyManagerConfig.isEditableFilePattern.test(this.model.name);