2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END============================================
20 * ===================================================================
26 'inputInfoUpgradeClass',
28 console.log("////UpgradeSchemaCtrl");
32 link : function(scope, element, attrs) {
36 scope.infoType.schemaElements,
37 function(value, key) {
38 scope.schemaElement = value;
39 if (scope.schemaElement.complexType != null) {
40 if (scope.currentElementName == '') {
41 scope.currentElementName = scope.schemaElement.complexType.name;
43 scope.ParentKey = scope.parentName + '_'
44 + scope.currentElementName;
45 if (scope.schemaElement.repeatableHierarchicalPrefix != null) {
46 scope.ParentKey = scope.ParentKey
47 + scope.schemaElement.repeatableHierarchicalPrefix;
49 scope.parElement = scope.schemaElement;
50 scope.tableStyle = 'table-level' + scope.heirarchyLevel
52 scope.tdLabelStyle = 'td-level' + scope.heirarchyLevel
54 scope.heirLevel = scope.heirarchyLevel;
55 elementHTML = elementHTML
56 + '<div ng-show="schemaElement.complexType != null">';
57 elementHTML = elementHTML
58 + '<table class="{{tableStyle}}"> <tr>';
59 elementHTML = elementHTML + '<td class="{{tdLabelStyle}}">';
60 elementHTML = elementHTML
61 + '<span class="pull-left" ng-click="showUTMViewMsgHeader=!showUTMViewMsgHeader">';
62 elementHTML = elementHTML
63 + '<i ng-class="showUTMViewMsgHeader == true ?\'fa fa-plus-circle\':\'fa fa-minus-circle\'"></i>';
64 elementHTML = elementHTML + '</span>';
65 elementHTML = elementHTML + '<b>{{currentElementName}}</b>';
66 elementHTML = elementHTML + '</td>';
67 elementHTML = elementHTML + '<td class="td-tree"></td>';
68 elementHTML = elementHTML
69 + '<td class="td-default_value-tree"> </td>';
70 elementHTML = elementHTML + '</tr></table>';
71 elementHTML = elementHTML
72 + '<div style="margin-left: 10px" ng-class="{hidden:showUTMViewMsgHeader,chaldean:showUTMViewMsgHeader}">';
73 elementHTML = elementHTML
74 + '<div class="inputInfoUpgradeClassMember" style="margin-left: 10px" ng-repeat="schemaElement in schemaElement.elements"></div>';
75 elementHTML = elementHTML + '</div>';
76 elementHTML = elementHTML + '</div>';
77 var x = angular.element(elementHTML);
87 'inputInfoUpgradeClassMember',
91 link : function(scope, element, attrs) {
93 scope.currentElementName = scope.objectName;
94 scope.parentName = scope.ParentKey;
95 scope.parentElement = scope.parElement;
96 scope.heirarchyLevel = scope.heirLevel + 1;
97 if (scope.schemaElement.element.name != null) {
98 scope.elementKey = scope.parentName + '_'
99 + scope.schemaElement.element.name;
100 if (scope.schemaElement.repeatableHierarchicalPrefix != null) {
101 scope.elementKey = scope.elementKey
102 + scope.schemaElement.repeatableHierarchicalPrefix;
104 scope.tableStyle = 'table-level' + scope.heirarchyLevel + '-tree';
105 scope.tdLabelStyle = 'td-level' + scope.heirarchyLevel
107 if (scope.schemaElement.type.complexType != null) {
108 scope.showUTMViewMsgHeader = false;
110 scope.showUTMViewMsgHeader = true;
112 elementHTML = elementHTML
113 + '<div ng-show="schemaElement.element.name != null">';
114 elementHTML = elementHTML + '<table class="{{tableStyle}}"> ';
115 elementHTML = elementHTML + '<tr>';
116 elementHTML = elementHTML
117 + '<td style="text-align: left;vertical-align: top;" class="{{tdLabelStyle}}">';
118 elementHTML = elementHTML
119 + '<span class="pull-left" ng-click="showUTMViewMsgHeader=!showUTMViewMsgHeader">';
120 elementHTML = elementHTML + '<div style="display:inline">';
121 elementHTML = elementHTML
122 + '<input type="radio" name={{radioName}} id="{{elementKey}}" value={{schemaElement.element.name}}>';
123 elementHTML = elementHTML + '</div>';
124 elementHTML = elementHTML
125 + '<i expandable ng-class="showUTMViewMsgHeader == true ?\'fa fa-minus-circle\':\'fa fa-plus-circle\'"></i>';
126 elementHTML = elementHTML + '{{schemaElement.element.name}} ';
127 elementHTML = elementHTML + '';
128 elementHTML = elementHTML + '';
129 elementHTML = elementHTML + '';
130 elementHTML = elementHTML + '';
131 elementHTML = elementHTML + '</span>';
132 elementHTML = elementHTML
133 + '<div ng-init="complexMapElements(elementKey,schemaElement,radioName)"></div>';
134 elementHTML = elementHTML + '</td>';
135 elementHTML = elementHTML + '</tr>';
136 elementHTML = elementHTML + '</table>';
137 elementHTML = elementHTML + '';
138 elementHTML = elementHTML + '';
139 elementHTML = elementHTML + '</div>';
140 var x = angular.element(elementHTML);
143 if (scope.schemaElement.type.complexType != null) {
144 var elementHTML2 = '<div ng-show="schemaElement.type.complexType != null">'
145 elementHTML2 = elementHTML2
146 + '<div ng-init="parKey=parentName + \'_\' + schemaElement.element.name + (schemaElement.repeatableHierarchicalPrefix != null ? schemaElement.repeatableHierarchicalPrefix : \'\'); heirLevel=heirarchyLevel; parElement=schemaElement; ParentKey=ParentKey+\'_\'+schemaElement.element.name + (schemaElement.repeatableHierarchicalPrefix != null ? schemaElement.repeatableHierarchicalPrefix : \'\')">'
147 elementHTML2 = elementHTML2
148 + '<div style="margin-left: 10px" ng-class="{hidden:!showUTMViewMsgHeader,chaldean:!showUTMViewMsgHeader}">'
149 elementHTML2 = elementHTML2
150 + '<div class="{{sourceExplorer+\'_\'+parKey}}"></div>'
151 elementHTML2 = elementHTML2 + '</div>'
152 elementHTML2 = elementHTML2 + '</div>'
153 elementHTML2 = elementHTML2 + '</div>';
154 var x = angular.element(elementHTML2);
170 function($scope, $rootScope, $uibModalInstance, dialogs) {
171 $rootScope.Currentmappedvalues = [];
172 $scope.utmSchemaExts = {};
173 $scope.callFromMap = false;
174 $scope.oldMapValFlag = false;
175 $scope.complexMappedValuesOld = {};
176 $scope.complexMappedValuesNew = {};
177 var allCurrentElementKeyArray = [];
178 $scope.checkedValues = {};
179 var checkedElementValueArray = [];
180 $scope.complexMapElements = function(elementKey, schemaElement, radioName) {
181 if (schemaElement.complexType != null
182 || (schemaElement.type != null && schemaElement.type.complexType != null)) {
183 if (radioName == "oldChk")
184 $scope.complexMappedValuesOld[elementKey] = schemaElement;
185 else if (radioName == "newChk")
186 $scope.complexMappedValuesNew[elementKey] = schemaElement;
188 if (elementKey != null)
189 allCurrentElementKeyArray.push(elementKey);
191 $scope.mapElements = function() {
192 var oldVal = $('input[name=oldChk]:checked').val();
193 var newVal = $('input[name=newChk]:checked').val();
194 var oldId = $('input[name=oldChk]:checked').attr('id');
195 var newId = $('input[name=newChk]:checked').attr('id');
196 $scope.mappedvalues = {};
197 $scope.checkedValues.oldVal = oldVal;
198 $scope.checkedValues.newVal = newVal;
199 checkedElementValueArray.push($scope.checkedValues);
200 $scope.oldMappedvaluesKeyArray = [];
201 $scope.newMappedvaluesKeyArray = [];
202 $scope.oldmappedvaluesArray = [];
203 $scope.newMappedvaluesArray = [];
204 if ($scope.complexMappedValuesOld[oldId] != null
205 && $scope.complexMappedValuesNew[newId] != null) {
206 $scope.matchType = '';
207 $scope.matchType = $scope.compareElements(
208 $scope.complexMappedValuesOld[oldId],
209 $scope.complexMappedValuesNew[newId]);
210 if ($scope.matchType == "true") {
212 .log("Element Type Matches and eligible for upgrade schema");
213 $scope.callFromMap = true;
214 for (var i = 0; i < $scope.complexMappedValuesOld[oldId].type.elements.length; i++) {
215 $scope.oldMapValFlag = true;
216 getElementkeys(oldId,
217 $scope.complexMappedValuesOld[oldId].type.elements[i]);
219 for (var j = 0; j < $scope.complexMappedValuesNew[newId].type.elements.length; j++) {
220 $scope.oldMapValFlag = false;
221 getElementkeys(newId,
222 $scope.complexMappedValuesNew[newId].type.elements[j]);
224 for (var k = 0; k < $scope.oldmappedvaluesArray.length; k++) {
225 $scope.mappedvalues = {};
226 $scope.mappedvalues.oldvalue = $scope.oldmappedvaluesArray[k];
227 $scope.mappedvalues.newvalue = $scope.newMappedvaluesArray[k];
228 $scope.mappedvalues.oldidvalue = $scope.oldMappedvaluesKeyArray[k];
229 $scope.mappedvalues.newidvalue = $scope.newMappedvaluesKeyArray[k];
230 $rootScope.Currentmappedvalues.push($scope.mappedvalues);
232 } else if ($scope.matchType == "false") {
235 'Invalid Selection Error',
236 'The mapping of the selected elements is invalid. Please select valid complex elements for Upgrade Schema');
238 } else if (($scope.complexMappedValuesOld[oldId] == null && $scope.complexMappedValuesNew[newId] != null)
239 || ($scope.complexMappedValuesOld[oldId] != null && $scope.complexMappedValuesNew[newId] == null)) {
242 'Invalid Selection Error',
243 'The mapping of the selected elements is invalid. Please select valid complex elements for Upgrade Schema');
245 $scope.mappedvalues.oldvalue = oldVal;
246 $scope.mappedvalues.newvalue = newVal;
247 $scope.mappedvalues.oldidvalue = oldId;
248 $scope.mappedvalues.newidvalue = newId;
249 $rootScope.Currentmappedvalues.push($scope.mappedvalues);
251 $rootScope.checkRepeatable = false;
253 // Utility Method to compare Object Structure of Complex Type Elements
254 // before upgrade schema
255 $scope.compareElements = function(oldElement, newElement) {
256 if (oldElement.type.complexType != null
257 && newElement.type.complexType != null) {
258 if (oldElement.type.elements.length == newElement.type.elements.length) {
259 for (var i = 0; i < oldElement.type.elements.length; i++) {
260 if (oldElement.type.elements[i].type.complexType != null
261 && newElement.type.elements[i].type.complexType != null) {
262 $scope.compareElements(oldElement.type.elements[i],
263 newElement.type.elements[i]);
264 } else if (oldElement.type.elements[i].type.complexType == null
265 && newElement.type.elements[i].type.complexType != null) {
266 $scope.matchType = "false";
267 return $scope.matchType;
269 if ($scope.matchType == "false")
270 return $scope.matchType;
272 for (var i = 0; i < newElement.type.elements.length; i++) {
273 if (newElement.type.elements[i].type.complexType != null
274 && oldElement.type.elements[i].type.complexType != null) {
275 $scope.compareElements(newElement.type.elements[i],
276 oldElement.type.elements[i]);
277 } else if (newElement.type.elements[i].type.complexType == null
278 && oldElement.type.elements[i].type.complexType != null) {
279 $scope.matchType = "false";
280 return $scope.matchType;
282 if ($scope.matchType == "false")
283 return $scope.matchType;
285 $scope.matchType = "true";
286 return $scope.matchType;
288 $scope.matchType = "false";
289 return $scope.matchType;
292 $scope.checkRepeatableElement = function(elementKey, key) {
293 if (elementKey != key)
294 $rootScope.checkRepeatable = true;
296 $scope.upgradeSchema = function() {
297 // console.log("List Model Path Details before Upgrade Schema :: " +
298 // JSON.stringify(list_model_path_details[selected_model]));
299 $scope.callFromMap = false;
300 $rootScope.isHorR = true;
301 $rootScope.repeatableHeirarchicalElementMap = map_model_repeatable_heirarchical_elements[selected_model];
302 // Checking Repeatable Hierarchical elements mapping and changing
303 // elementkey if repeatable hierarchical is mapped
304 for ( var key in $rootScope.repeatableHeirarchicalElementMap) {
305 for (var i = 0; i < allCurrentElementKeyArray.length; i++) {
306 if (allCurrentElementKeyArray[i].indexOf(key) > -1)
307 elementKeys.push(allCurrentElementKeyArray[i]);
309 for (var j = 0; j < checkedElementValueArray.length; j++) {
310 var currentCheckedMappedvalue = checkedElementValueArray[j];
311 if (key.indexOf(currentCheckedMappedvalue.oldVal) > -1) {
313 .stringify($rootScope.repeatableHeirarchicalElementMap);
314 var oldvalue = currentCheckedMappedvalue.oldVal;
315 var newvalue = currentCheckedMappedvalue.newVal;
316 var modObject = newObject.replace(oldvalue, newvalue);
317 $rootScope.repeatableHeirarchicalElementMap = angular
318 .fromJson(modObject);
322 $scope.oldSchemaLocation = $rootScope.wsdlInfo.schemaLocation;
323 $rootScope.wsdlInfo = $rootScope.updateWsdlInfo;
324 $rootScope.wsdlInfo.schemaUpgradedFlag = true;
325 $rootScope.wsdlInfo.oldSchemaLocation = $scope.oldSchemaLocation;
326 $rootScope.serviceInfo = $rootScope.updateServiceInfo;
327 $rootScope.schemaLocation = $rootScope.updateWsdlInfo.schemaLocation;
328 $rootScope.serviceInput = $rootScope.updateServiceInput;
329 $rootScope.serviceInputPartInfo = $rootScope.updateServiceInputPartInfo;
330 $rootScope.inputSchemaServiceInputPartInfo = [];
331 $rootScope.inputSchemaServiceOutputPartInfo = [];
332 $rootScope.inputSchemaServicefaultPartInfo = [];
333 angular.copy($rootScope.serviceInputPartInfo,
334 $rootScope.inputSchemaServiceInputPartInfo);
335 angular.copy($rootScope.serviceOutputPartInfo,
336 $rootScope.inputSchemaServiceOutputPartInfo);
337 angular.copy($rootScope.servicefaultPartInfo,
338 $rootScope.inputSchemaServicefaultPartInfo);
339 // Form all the element keys of the Upgraded Schema so that to know the
341 for (var i = 0; i < $rootScope.serviceInputPartInfo.length; i++) {
342 for (var j = 0; j < $rootScope.serviceInputPartInfo[i].schemaElements.length; j++) {
343 getElementkeys('ServiceInput',
344 $rootScope.serviceInputPartInfo[i].schemaElements[j]);
347 $rootScope.serviceOutput = $rootScope.updateServiceOutput;
348 $rootScope.serviceOutputPartInfo = $rootScope.updateServiceOutputPartInfo;
349 for (var i = 0; i < $rootScope.serviceOutputPartInfo.length; i++) {
350 for (var j = 0; j < $rootScope.serviceOutputPartInfo[i].schemaElements.length; j++) {
351 getElementkeys('ServiceOutput',
352 $rootScope.serviceOutputPartInfo[i].schemaElements[j]);
355 $rootScope.servicefault = $rootScope.updateServicefault;
356 $rootScope.servicefaultPartInfo = $rootScope.updateServicefaultPartInfo;
357 for (var i = 0; i < $rootScope.servicefaultPartInfo.length; i++) {
358 for (var j = 0; j < $rootScope.servicefaultPartInfo[i].schemaElements.length; j++) {
359 getElementkeys('ServiceFault',
360 $rootScope.servicefaultPartInfo[i].schemaElements[j]);
363 console.log("mapped values of current"
364 + JSON.stringify($rootScope.Currentmappedvalues));
365 // For each model in the project
366 // a) For the mapped elements
367 // i) replace the old ids with new ids for the Schema Extensions
368 // ii) replace the old ids with new ids for the Path Details
369 // b) For the deleted attributes in the Upgraded schema
370 // i) Remove the ids from Schema Extensions
371 // ii) Remove the ids from Path Details
372 for (var modelIndex = 0; modelIndex < $rootScope.models.length; modelIndex++) {
373 var current_model = $rootScope.models[modelIndex];
374 $scope.utmSchemaExts = list_model_schema_extensions[current_model].utmSchemaExtentionMap;
375 $scope.pathDetailsArray = list_model_path_details[current_model];
376 for (var i = 0; i < $rootScope.Currentmappedvalues.length; i++) {
377 $scope.mappedvalues = $rootScope.Currentmappedvalues[i];
378 if ($scope.utmSchemaExts != null) {
379 $scope.utmSchemaExts[$scope.mappedvalues.newidvalue] = $scope.utmSchemaExts[$scope.mappedvalues.oldidvalue];
380 if ($scope.mappedvalues.newidvalue != $scope.mappedvalues.oldidvalue)
381 delete $scope.utmSchemaExts[$scope.mappedvalues.oldidvalue];
383 if ($scope.pathDetailsArray != null
384 && $scope.pathDetailsArray.length > 0) {
385 for (var k = 0; k < $scope.pathDetailsArray.length; k++) {
386 $scope.pathDetails = $scope.pathDetailsArray[k];
387 if ($scope.pathDetails != null) {
388 for (var j = 0; j < $scope.pathDetails.decisionIdentifiers.length; j++) {
389 if ($scope.pathDetails.decisionIdentifiers[j].elementValues[$scope.mappedvalues.oldidvalue] != null)
390 $scope.pathDetails.decisionIdentifiers[j].elementValues[$scope.mappedvalues.newidvalue] = $scope.pathDetails.decisionIdentifiers[j].elementValues[$scope.mappedvalues.oldidvalue];
391 if ($scope.mappedvalues.newidvalue != $scope.mappedvalues.oldidvalue)
392 delete $scope.pathDetails.decisionIdentifiers[j].elementValues[$scope.mappedvalues.oldidvalue];
398 $scope.schemenExts = angular.copy($scope.utmSchemaExts);
399 // If an attribute is removed from upgraded schema, remove that
400 // attribute related details from SchemaExtensions
401 Object.keys($scope.schemenExts).forEach(function(key) {
402 var key_isavailable = false;
403 for (var j = 0; j < elementKeys.length; j++) {
404 if (elementKeys[j] === key) {
405 key_isavailable = true;
408 if (!key_isavailable) {
409 // Implement this later. Commented this as this is wiping
410 // out all the Repeatable/Heirarchical values
411 // delete $scope.utmSchemaExts[key];
414 // If an attribute is removed from upgraded schema, remove that
415 // attribute related details from PathDetails
416 if ($scope.pathDetailsArray != null
417 && $scope.pathDetailsArray.length > 0) {
418 for (var k = 0; k < $scope.pathDetailsArray.length; k++) {
419 $scope.pathDetails = $scope.pathDetailsArray[k];
420 for (var j = 0; j < $scope.pathDetails.decisionIdentifiers.length; j++) {
421 $scope.decisionElementValues = angular
422 .copy($scope.pathDetails.decisionIdentifiers[j].elementValues);
423 Object.keys($scope.decisionElementValues).forEach(
425 var key_isavailable = false;
426 for (var l = 0; l < elementKeys.length; l++) {
427 if (elementKeys[l] === key) {
428 key_isavailable = true;
431 if (!key_isavailable) {
432 // Implement this later. Commented this as this
433 // is wiping out all the Repeatable/Heirarchical
436 // $scope.pathDetails.decisionIdentifiers[j].elementValues[key];
443 $uibModalInstance.close("closed");
445 $scope.close = function() {
446 $uibModalInstance.close("closed");
448 function getElementkeys(parentname, schemaelement) {
449 if (schemaelement.complexType != null) {
450 var parentkey = parentname + "_" + schemaelement.complexType.name;
451 for (var i = 0; i < schemaelement.elements.length; i++) {
452 getElementkeys(parentkey, schemaelement.elements[i]);
455 if (schemaelement.element != null && schemaelement.element.name != null) {
456 var elementKey = parentname + '_' + schemaelement.element.name;
457 if (!$scope.callFromMap) {
458 elementKeys.push(elementKey);
460 if ($scope.oldMapValFlag) {
461 $scope.oldmappedvaluesArray
462 .push(schemaelement.element.name);
463 $scope.oldMappedvaluesKeyArray.push(elementKey);
465 $scope.newMappedvaluesArray
466 .push(schemaelement.element.name);
467 $scope.newMappedvaluesKeyArray.push(elementKey);
471 if (schemaelement.type != null
472 && schemaelement.type.complexType != null) {
473 var parentkey = parentname + '_' + schemaelement.element.name;
474 for (var i = 0; i < schemaelement.type.elements.length; i++) {
475 getElementkeys(parentkey, schemaelement.type.elements[i]);