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() {
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;
189 self.deferredHandler(data, deferred);
190 }).error(function(data) {
191 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Policy Data');
192 })['finally'](function() {
193 self.inprocess = false;
195 return deferred.promise;
198 Item.prototype.getViewPolicyContent = function() {
200 var deferred = $q.defer();
201 var data = {params: {
203 path: self.tempModel.fullPath()
206 self.inprocess = true;
208 $http.post(policyManagerConfig.viewPolicyUrl, data).success(function(data) {
209 self.tempModel.content = self.model.content = data.result;
210 var json = data.result;
211 var policy = JSON.parse(json);
212 self.policy = policy;
213 console.log(data.result);
215 self.deferredHandler(data, deferred);
216 }).error(function(data) {
217 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Policy Data');
218 })['finally'](function() {
219 self.inprocess = false;
221 return deferred.promise;
224 Item.prototype.getSwitchVersionContent = function() {
226 var deferred = $q.defer();
227 var data = {params: {
228 mode: 'SWITCHVERSION',
229 path: self.tempModel.fullPath(),
230 activeVersion : self.tempModel.content.activeVersion,
231 highestVersion : self.tempModel.content.highestVersion
234 self.inprocess = true;
236 $http.post(policyManagerConfig.switchVersionUrl, data).success(function(data) {
237 self.tempModel.content = self.model.content = data;
238 self.deferredHandler(data, deferred);
239 }).error(function(data) {
240 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Switch Version Data');
241 })['finally'](function() {
242 self.inprocess = false;
244 return deferred.promise;
247 Item.prototype.getDescribePolicyContent = function() {
249 var deferred = $q.defer();
250 var data = {params: {
251 mode: 'DESCRIBEPOLICYFILE',
252 path: self.tempModel.fullPath()
255 self.inprocess = true;
257 $http.post(policyManagerConfig.describePolicyUrl, data).success(function(data) {
258 self.tempModel.content = self.model.content = data.html;
259 var describeTemplate = self.tempModel.content;
261 self.deferredHandler(data, deferred);
262 }).error(function(data) {
263 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Policy Data to Describe');
264 })['finally'](function() {
265 self.inprocess = false;
267 return deferred.promise;
270 Item.prototype.getScopeContent = function() {
272 var deferred = $q.defer();
273 var data = {params: {
275 name: self.tempModel.name,
276 subScopename: self.tempModel.subScopename,
277 path: self.tempModel.fullPath()
280 self.inprocess = true;
282 $http.post(policyManagerConfig.addSubScopeUrl, data).success(function(data) {
283 self.deferredHandler(data, deferred);
284 }).error(function(data) {
285 self.deferredHandler(data, deferred, 'Error Occured While Creating the Sub Scope');
286 })['finally'](function() {
287 self.inprocess = false;
289 return deferred.promise;
292 Item.prototype.remove = function() {
294 var deferred = $q.defer();
295 var data = {params: {
297 path: self.tempModel.fullPath(),
298 deleteVersion : self.model.versions
301 self.inprocess = true;
303 $http.post(policyManagerConfig.removeUrl, data).success(function(data) {
304 self.deferredHandler(data, deferred);
305 }).error(function(data) {
306 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Deleting Scope');
307 })['finally'](function() {
308 self.inprocess = false;
310 return deferred.promise;
313 Item.prototype.removePolicy = function() {
315 var deferred = $q.defer();
316 var data = {params: {
318 path: self.tempModel.fullPath(),
319 deleteVersion : self.model.versions
322 self.inprocess = true;
324 $http.post(policyManagerConfig.removeUrl, data).success(function(data) {
325 self.deferredHandler(data, deferred);
326 }).error(function(data) {
327 self.deferredHandler(data, deferred, 'Error Occured While retrieving the Deleting Policy');
328 })['finally'](function() {
329 self.inprocess = false;
331 return deferred.promise;
334 Item.prototype.isFolder = function() {
335 return this.model.type === 'dir';
338 Item.prototype.isEditable = function() {
339 return !this.isFolder() && policyManagerConfig.isEditableFilePattern.test(this.model.name);
342 /*Item.prototype.isImage = function() {
343 return policyManagerConfig.isImageFilePattern.test(this.model.name);