stack_mapper.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. /**
  2. * Licensed to the Apache Software Foundation (ASF) under one
  3. * or more contributor license agreements. See the NOTICE file
  4. * distributed with this work for additional information
  5. * regarding copyright ownership. The ASF licenses this file
  6. * to you under the Apache License, Version 2.0 (the
  7. * "License"); you may not use this file except in compliance
  8. * with the License. You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an "AS IS" BASIS,
  14. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. * See the License for the specific language governing permissions and
  16. * limitations under the License.
  17. */
  18. var App = require('app');
  19. App.stackMapper = App.QuickDataMapper.create({
  20. modelStack: App.Stack,
  21. modelOS: App.OperatingSystem,
  22. modelRepo: App.Repository,
  23. configStack: {
  24. id: 'id',
  25. stack_name: 'stack_name',
  26. stack_version: 'stack_version',
  27. active: 'active',
  28. parent_stack_version: 'parent_stack_version',
  29. min_upgrade_version: 'min_upgrade_version',
  30. min_jdk_version: 'min_jdk',
  31. max_jdk_version: 'max_jdk',
  32. is_selected: 'is_selected',
  33. config_types: 'config_types',
  34. operating_systems_key: 'operating_systems',
  35. operating_systems_type: 'array',
  36. operating_systems: {
  37. item: 'id'
  38. }
  39. },
  40. configOS: {
  41. id: 'id',
  42. os_type: 'os_type',
  43. stack_name: 'stack_name',
  44. stack_version: 'stack_version',
  45. stack_id: 'stack_id',
  46. repositories_key: 'repositories',
  47. repositories_type: 'array',
  48. repositories: {
  49. item: 'id'
  50. }
  51. },
  52. configRepository: {
  53. id: 'id',
  54. base_url: 'base_url',
  55. default_base_url: 'default_base_url',
  56. latest_base_url: 'latest_base_url',
  57. mirrors_list: 'mirrors_list',
  58. os_type: 'os_type',
  59. repo_id: 'repo_id',
  60. repo_name: 'repo_name',
  61. stack_name: 'stack_name',
  62. stack_version: 'stack_version',
  63. operating_system_id: 'os_id'
  64. },
  65. map: function(json) {
  66. var modelStack = this.get('modelStack');
  67. var modelOS = this.get('modelOS');
  68. var modelRepo = this.get('modelRepo');
  69. var resultStack = [];
  70. var resultOS = [];
  71. var resultRepo = [];
  72. var stackVersions = json.items.filterProperty('Versions.active');
  73. stackVersions.sortProperty('Versions.stack_version').reverse().forEach(function(item) {
  74. var stack = item.Versions;
  75. var operatingSystemsArray = [];
  76. stack.id = stack.stack_name + "-" + stack.stack_version;
  77. item.operating_systems.forEach(function(ops) {
  78. var operatingSystems = ops.OperatingSystems;
  79. var repositoriesArray = [];
  80. ops.repositories.forEach(function(repo) {
  81. repo.Repositories.id = [repo.Repositories.stack_name, repo.Repositories.stack_version, repo.Repositories.os_type, repo.Repositories.repo_id].join('-');
  82. repo.Repositories.os_id = [repo.Repositories.stack_name, repo.Repositories.stack_version, repo.Repositories.os_type].join('-');
  83. resultRepo.push(this.parseIt(repo.Repositories, this.get('configRepository')));
  84. repositoriesArray.pushObject(repo.Repositories);
  85. }, this);
  86. operatingSystems.id = operatingSystems.stack_name + "-" + operatingSystems.stack_version + "-" + operatingSystems.os_type;
  87. operatingSystems.stack_id = operatingSystems.stack_name + "-" + operatingSystems.stack_version;
  88. operatingSystems.repositories = repositoriesArray;
  89. resultOS.push(this.parseIt(operatingSystems, this.get('configOS')));
  90. operatingSystemsArray.pushObject(operatingSystems);
  91. }, this);
  92. stack.operating_systems = operatingSystemsArray;
  93. resultStack.push(this.parseIt(stack, this.get('configStack')));
  94. }, this);
  95. App.store.commit();
  96. App.store.loadMany(modelRepo, resultRepo);
  97. App.store.loadMany(modelOS, resultOS);
  98. App.store.loadMany(modelStack, resultStack);
  99. }
  100. });