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: 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 if(data.result.error != undefined){
143 var value = data.result.error;
144 value = value.replace("rename" , "move");
145 data.result.error = value;
147 self.deferredHandler(data, deferred);
148 }).error(function(data) {
149 self.deferredHandler(data, deferred, 'Error Occured While Moving');
150 })['finally'](function() {
151 self.inprocess = false;
153 return deferred.promise;
156 Item.prototype.copy = function() {
158 var deferred = $q.defer();
159 var data = {params: {
161 path: self.model.fullPath(),
162 newPath: self.tempModel.fullPath()
165 self.inprocess = true;
167 $http.post(policyManagerConfig.copyUrl, data).success(function(data) {
168 self.deferredHandler(data, deferred);
169 }).error(function(data) {
170 self.deferredHandler(data, deferred, 'Error Occured While Cloning');
171 })['finally'](function() {
172 self.inprocess = false;
174 return deferred.promise;
178 Item.prototype.getContent = function(policyNavigator) {
180 var deferred = $q.defer();
181 var data = {params: {
183 path: self.tempModel.fullPath()
186 self.inprocess = true;
188 $http.post(policyManagerConfig.getContentUrl, data).success(function(data) {
189 self.tempModel.content = self.model.content = data.result;
190 var json = data.result;
191 var policy = JSON.parse(json);
192 self.policy = policy;
193 self.itemContent = policyNavigator;
195 self.deferredHandler(data, deferred);
196 }).error(function(data) {
197 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Policy Data');
198 })['finally'](function() {
199 self.inprocess = false;
201 return deferred.promise;
204 Item.prototype.getViewPolicyContent = function() {
206 var deferred = $q.defer();
207 var data = {params: {
209 path: self.tempModel.fullPath()
212 self.inprocess = true;
214 $http.post(policyManagerConfig.viewPolicyUrl, data).success(function(data) {
215 self.tempModel.content = self.model.content = data.result;
216 var json = data.result;
217 var policy = JSON.parse(json);
218 self.policy = policy;
219 console.log(data.result);
221 self.deferredHandler(data, deferred);
222 }).error(function(data) {
223 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Policy Data');
224 })['finally'](function() {
225 self.inprocess = false;
227 return deferred.promise;
230 Item.prototype.getSwitchVersionContent = function() {
232 var deferred = $q.defer();
233 var data = {params: {
234 mode: 'SWITCHVERSION',
235 path: self.tempModel.fullPath(),
236 activeVersion : self.tempModel.content.activeVersion,
237 highestVersion : self.tempModel.content.highestVersion
240 self.inprocess = true;
242 $http.post(policyManagerConfig.switchVersionUrl, data).success(function(data) {
243 self.tempModel.content = self.model.content = data;
244 self.deferredHandler(data, deferred);
245 }).error(function(data) {
246 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Switch Version Data');
247 })['finally'](function() {
248 self.inprocess = false;
250 return deferred.promise;
253 Item.prototype.getDescribePolicyContent = function() {
255 var deferred = $q.defer();
256 var data = {params: {
257 mode: 'DESCRIBEPOLICYFILE',
258 path: self.tempModel.fullPath()
261 self.inprocess = true;
263 $http.post(policyManagerConfig.describePolicyUrl, data).success(function(data) {
264 self.tempModel.content = self.model.content = data.html;
265 var describeTemplate = self.tempModel.content;
267 self.deferredHandler(data, deferred);
268 }).error(function(data) {
269 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Policy Data to Describe');
270 })['finally'](function() {
271 self.inprocess = false;
273 return deferred.promise;
276 Item.prototype.getScopeContent = function() {
278 var deferred = $q.defer();
279 var data = {params: {
281 name: self.tempModel.name,
282 subScopename: self.tempModel.subScopename,
283 path: self.tempModel.fullPath()
286 self.inprocess = true;
288 $http.post(policyManagerConfig.addSubScopeUrl, data).success(function(data) {
289 self.deferredHandler(data, deferred);
290 }).error(function(data) {
291 self.deferredHandler(data, deferred, 'Error Occured While Creating the Sub Scope');
292 })['finally'](function() {
293 self.inprocess = false;
295 return deferred.promise;
298 Item.prototype.remove = function() {
300 var deferred = $q.defer();
301 var data = {params: {
303 path: self.tempModel.fullPath(),
304 deleteVersion : self.model.versions
307 self.inprocess = true;
309 $http.post(policyManagerConfig.removeUrl, data).success(function(data) {
310 self.deferredHandler(data, deferred);
311 }).error(function(data) {
312 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Deleting Scope');
313 })['finally'](function() {
314 self.inprocess = false;
316 return deferred.promise;
319 Item.prototype.removePolicy = function() {
321 var deferred = $q.defer();
322 var data = {params: {
324 path: self.tempModel.fullPath(),
325 deleteVersion : self.model.versions
328 self.inprocess = true;
330 $http.post(policyManagerConfig.removeUrl, data).success(function(data) {
331 self.deferredHandler(data, deferred);
332 }).error(function(data) {
333 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Deleting Policy');
334 })['finally'](function() {
335 self.inprocess = false;
337 return deferred.promise;
340 Item.prototype.isFolder = function() {
341 return this.model.type === 'dir';
344 Item.prototype.isEditable = function() {
345 return !this.isFolder() && policyManagerConfig.isEditableFilePattern.test(this.model.name);