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=========================================================
21 (function(window, angular, $) {
23 angular.module('abs').factory('item', ['$http', '$q', '$translate', 'fileManagerConfig', function($http, $q, $translate, fileManagerConfig) {
25 var Item = function(model, path) {
27 name: model && model.name || '',
28 subScopename: model && model.subScopename || '',
30 type: model && model.type || 'file',
31 size: model && parseInt(model.size || 0),
32 date: parseMySQLDate(model && model.date),
33 version: model && model.version || '',
34 createdBy: model && model.createdBy || '',
35 modifiedBy: model && model.modifiedBy || '',
36 content: model && model.content || '',
39 return Math.round(this.size / 1024, 1);
41 fullPath: function() {
42 if(this.version == ""){
43 return ('/' + this.path.join('/') + '/' + this.name).replace(/\/\//, '/');
45 return ('/' + this.path.join('/') + '/' + this.name + '.' + this.version + '.xml').replace(/\/\//, '/');
51 this.inprocess = false;
53 this.model = angular.copy(rawModel);
54 this.tempModel = angular.copy(rawModel);
56 function parseMySQLDate(mysqlDate) {
57 var d = (mysqlDate || '').toString().split(/[- :]/);
58 return new Date(d[0], d[1] - 1, d[2], d[3], d[4], d[5]);
62 Item.prototype.update = function() {
63 angular.extend(this.model, angular.copy(this.tempModel));
66 Item.prototype.revert = function() {
67 angular.extend(this.tempModel, angular.copy(this.model));
71 Item.prototype.deferredHandler = function(data, deferred, defaultMsg) {
72 if (!data || typeof data !== 'object') {
73 this.error = 'Bridge response error, please check the docs';
75 if (data.result && data.result.error) {
76 this.error = data.result.error;
78 if (!this.error && data.error) {
79 this.error = data.error.message;
81 if (!this.error && defaultMsg) {
82 this.error = defaultMsg;
85 return deferred.reject(data);
88 return deferred.resolve(data);
91 Item.prototype.createFolder = function() {
93 var deferred = $q.defer();
96 path: self.tempModel.path.join('/'),
97 name: self.tempModel.name
100 self.inprocess = true;
102 $http.post(fileManagerConfig.createFolderUrl, data).success(function(data) {
103 self.deferredHandler(data, deferred);
104 }).error(function(data) {
105 self.deferredHandler(data, deferred, $translate.instant('error_creating_folder'));
106 })['finally'](function() {
107 self.inprocess = false;
110 return deferred.promise;
113 Item.prototype.rename = function() {
115 var deferred = $q.defer();
116 var data = {params: {
118 path: self.model.fullPath(),
119 newPath: self.tempModel.fullPath()
121 self.inprocess = true;
123 $http.post(fileManagerConfig.renameUrl, data).success(function(data) {
124 self.deferredHandler(data, deferred);
125 }).error(function(data) {
126 self.deferredHandler(data, deferred, $translate.instant('error_renaming'));
127 })['finally'](function() {
128 self.inprocess = false;
130 return deferred.promise;
134 Item.prototype.move = function() {
136 var deferred = $q.defer();
137 var data = {params: {
139 path: self.model.fullPath(),
140 newPath: self.tempModel.fullPath()
142 self.inprocess = true;
144 $http.post(fileManagerConfig.renameUrl, data).success(function(data) {
145 self.deferredHandler(data, deferred);
146 }).error(function(data) {
147 self.deferredHandler(data, deferred, $translate.instant('error_moving'));
148 })['finally'](function() {
149 self.inprocess = false;
151 return deferred.promise;
154 Item.prototype.copy = function() {
156 var deferred = $q.defer();
157 var data = {params: {
159 path: self.model.fullPath(),
160 newPath: self.tempModel.fullPath()
163 self.inprocess = true;
165 $http.post(fileManagerConfig.copyUrl, data).success(function(data) {
166 self.deferredHandler(data, deferred);
167 }).error(function(data) {
168 self.deferredHandler(data, deferred, $translate.instant('error_copying'));
169 })['finally'](function() {
170 self.inprocess = false;
172 return deferred.promise;
176 Item.prototype.getContent = function() {
178 var deferred = $q.defer();
179 var data = {params: {
181 path: self.tempModel.fullPath()
184 self.inprocess = true;
186 $http.post(fileManagerConfig.getContentUrl, data).success(function(data) {
187 self.tempModel.content = self.model.content = data.result;
188 var json = data.result;
189 var policy = JSON.parse(json);
190 self.policy = policy;
192 self.deferredHandler(data, deferred);
193 }).error(function(data) {
194 self.deferredHandler(data, deferred, $translate.instant('error_getting_content'));
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(fileManagerConfig.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, $translate.instant('error_getting_content'));
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(fileManagerConfig.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, $translate.instant('error_getting_content'));
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(fileManagerConfig.describePolicyUrl, data).success(function(data) {
261 self.tempModel.content = self.model.content = data.html;
262 var describeTemplate = self.tempModel.content;
264 self.deferredHandler(data, deferred);
265 }).error(function(data) {
266 self.deferredHandler(data, deferred, $translate.instant('error_getting_content'));
267 })['finally'](function() {
268 self.inprocess = false;
270 return deferred.promise;
273 Item.prototype.getScopeContent = function() {
275 var deferred = $q.defer();
276 var data = {params: {
278 name: self.tempModel.name,
279 subScopename: self.tempModel.subScopename,
280 path: self.tempModel.fullPath()
283 self.inprocess = true;
285 $http.post(fileManagerConfig.addSubScopeUrl, data).success(function(data) {
286 self.deferredHandler(data, deferred);
287 }).error(function(data) {
288 self.deferredHandler(data, deferred, $translate.instant('error_adding_Scope'));
289 })['finally'](function() {
290 self.inprocess = false;
292 return deferred.promise;
295 Item.prototype.remove = function() {
297 var deferred = $q.defer();
298 var data = {params: {
300 path: self.tempModel.fullPath(),
301 deleteVersion : self.model.versions
304 self.inprocess = true;
306 $http.post(fileManagerConfig.removeUrl, data).success(function(data) {
307 self.deferredHandler(data, deferred);
308 }).error(function(data) {
309 self.deferredHandler(data, deferred, $translate.instant('error_deleting'));
310 })['finally'](function() {
311 self.inprocess = false;
313 return deferred.promise;
316 Item.prototype.removePolicy = function() {
318 var deferred = $q.defer();
319 var data = {params: {
321 path: self.tempModel.fullPath(),
322 deleteVersion : self.model.versions
325 self.inprocess = true;
327 $http.post(fileManagerConfig.removeUrl, data).success(function(data) {
328 self.deferredHandler(data, deferred);
329 }).error(function(data) {
330 self.deferredHandler(data, deferred, $translate.instant('error_deleting'));
331 })['finally'](function() {
332 self.inprocess = false;
334 return deferred.promise;
337 Item.prototype.isFolder = function() {
338 return this.model.type === 'dir';
341 Item.prototype.isEditable = function() {
342 return !this.isFolder() && fileManagerConfig.isEditableFilePattern.test(this.model.name);
345 Item.prototype.isImage = function() {
346 return fileManagerConfig.isImageFilePattern.test(this.model.name);
351 })(window, angular, jQuery);