1b8a72a62Sopenharmony_ci/* 2b8a72a62Sopenharmony_ci * Copyright (c) 2022-2023 Huawei Device Co., Ltd. 3b8a72a62Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4b8a72a62Sopenharmony_ci * you may not use this file except in compliance with the License. 5b8a72a62Sopenharmony_ci * You may obtain a copy of the License at 6b8a72a62Sopenharmony_ci * 7b8a72a62Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8b8a72a62Sopenharmony_ci * 9b8a72a62Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10b8a72a62Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11b8a72a62Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12b8a72a62Sopenharmony_ci * See the License for the specific language governing permissions and 13b8a72a62Sopenharmony_ci * limitations under the License. 14b8a72a62Sopenharmony_ci */ 15b8a72a62Sopenharmony_ci 16b8a72a62Sopenharmony_cipackage ohos; 17b8a72a62Sopenharmony_ci 18b8a72a62Sopenharmony_ciimport java.util.HashMap; 19b8a72a62Sopenharmony_ciimport java.util.List; 20b8a72a62Sopenharmony_ciimport java.util.ArrayList; 21b8a72a62Sopenharmony_ciimport java.util.Map; 22b8a72a62Sopenharmony_ci 23b8a72a62Sopenharmony_ci/** 24b8a72a62Sopenharmony_ci * collection of method for ModuleAdaption. 25b8a72a62Sopenharmony_ci * 26b8a72a62Sopenharmony_ci */ 27b8a72a62Sopenharmony_ciclass ModuleAdaption { 28b8a72a62Sopenharmony_ci 29b8a72a62Sopenharmony_ci private static final Log LOG = new Log(ModuleAdaption.class.toString()); 30b8a72a62Sopenharmony_ci /** 31b8a72a62Sopenharmony_ci * convert moduleResult to uncompressResult function. 32b8a72a62Sopenharmony_ci * 33b8a72a62Sopenharmony_ci * @param moduleResult for module.json result 34b8a72a62Sopenharmony_ci * @return UncomperssResult 35b8a72a62Sopenharmony_ci */ 36b8a72a62Sopenharmony_ci UncompressResult convertToUncompressResult(ModuleResult moduleResult) { 37b8a72a62Sopenharmony_ci UncompressResult uncomperssResult = new UncompressResult(); 38b8a72a62Sopenharmony_ci uncomperssResult.setResult(moduleResult.getResult()); 39b8a72a62Sopenharmony_ci uncomperssResult.setMessage(moduleResult.getMessage()); 40b8a72a62Sopenharmony_ci for (String moduelProfile : moduleResult.moduleProfileStr) { 41b8a72a62Sopenharmony_ci uncomperssResult.addProfileInfoStr(moduelProfile); 42b8a72a62Sopenharmony_ci } 43b8a72a62Sopenharmony_ci // adapt pack.info 44b8a72a62Sopenharmony_ci uncomperssResult.setPackInfos(moduleResult.packInfos); 45b8a72a62Sopenharmony_ci // adapt profileInfos 46b8a72a62Sopenharmony_ci for (int i = 0; i < moduleResult.moduleProfileInfos.size(); ++i) { 47b8a72a62Sopenharmony_ci ModuleProfileInfo moduleProfileInfo = moduleResult.moduleProfileInfos.get(i); 48b8a72a62Sopenharmony_ci ProfileInfo profileInfo = new ProfileInfo(); 49b8a72a62Sopenharmony_ci profileInfo.hapName = moduleProfileInfo.hapName; 50b8a72a62Sopenharmony_ci // adapt appInfo 51b8a72a62Sopenharmony_ci profileInfo.appInfo = convertToAppInfo(moduleProfileInfo.moduleAppInfo); 52b8a72a62Sopenharmony_ci //adapt deviceconfig 53b8a72a62Sopenharmony_ci profileInfo.deviceConfig = convertToDeviceConfig(moduleProfileInfo.moduleAppInfo); 54b8a72a62Sopenharmony_ci // adapt hapInfo 55b8a72a62Sopenharmony_ci profileInfo.hapInfo = convertToHapInfo(moduleProfileInfo.moduleInfo); 56b8a72a62Sopenharmony_ci uncomperssResult.addProfileInfo(profileInfo); 57b8a72a62Sopenharmony_ci } 58b8a72a62Sopenharmony_ci for (ModuleProfileInfo profileInfo : moduleResult.moduleProfileInfos) { 59b8a72a62Sopenharmony_ci if (profileInfo.moduleAppInfo != null) { 60b8a72a62Sopenharmony_ci uncomperssResult.setLabel(profileInfo.moduleAppInfo.label); 61b8a72a62Sopenharmony_ci uncomperssResult.setIcon(profileInfo.moduleAppInfo.icon); 62b8a72a62Sopenharmony_ci } 63b8a72a62Sopenharmony_ci } 64b8a72a62Sopenharmony_ci return uncomperssResult; 65b8a72a62Sopenharmony_ci } 66b8a72a62Sopenharmony_ci 67b8a72a62Sopenharmony_ci /** 68b8a72a62Sopenharmony_ci * convert ModuleAppInfo to AppInfo function. 69b8a72a62Sopenharmony_ci * 70b8a72a62Sopenharmony_ci * @param moduleAppInfo for module.json app result 71b8a72a62Sopenharmony_ci * @return AppInfo 72b8a72a62Sopenharmony_ci */ 73b8a72a62Sopenharmony_ci AppInfo convertToAppInfo(ModuleAppInfo moduleAppInfo) { 74b8a72a62Sopenharmony_ci AppInfo appInfo = new AppInfo(); 75b8a72a62Sopenharmony_ci if (moduleAppInfo == null) { 76b8a72a62Sopenharmony_ci LOG.error("convertToAppInfo failed: moduleAppInfo is null"); 77b8a72a62Sopenharmony_ci return appInfo; 78b8a72a62Sopenharmony_ci } 79b8a72a62Sopenharmony_ci appInfo.bundleName = moduleAppInfo.bundleName; 80b8a72a62Sopenharmony_ci appInfo.debug = moduleAppInfo.debug; 81b8a72a62Sopenharmony_ci appInfo.icon = moduleAppInfo.icon; 82b8a72a62Sopenharmony_ci appInfo.label = moduleAppInfo.label; 83b8a72a62Sopenharmony_ci appInfo.setLabels(moduleAppInfo.getLabels()); 84b8a72a62Sopenharmony_ci appInfo.description = moduleAppInfo.description; 85b8a72a62Sopenharmony_ci appInfo.setDescriptions(moduleAppInfo.getDescriptions()); 86b8a72a62Sopenharmony_ci appInfo.vendor = moduleAppInfo.vendor; 87b8a72a62Sopenharmony_ci appInfo.versionCode = String.valueOf(moduleAppInfo.versionCode); 88b8a72a62Sopenharmony_ci appInfo.versionName = moduleAppInfo.versionName; 89b8a72a62Sopenharmony_ci appInfo.minCompatibleVersionCode = moduleAppInfo.minCompatibleVersionCode; 90b8a72a62Sopenharmony_ci appInfo.compatibleApiVersion = moduleAppInfo.minAPIVersion; 91b8a72a62Sopenharmony_ci appInfo.targetApiVersion = moduleAppInfo.targetAPIVersion; 92b8a72a62Sopenharmony_ci appInfo.releaseType = moduleAppInfo.apiReleaseType; 93b8a72a62Sopenharmony_ci appInfo.distributedNotificationEnabled = moduleAppInfo.distributedNotificationEnabled; 94b8a72a62Sopenharmony_ci appInfo.appName = moduleAppInfo.appName; 95b8a72a62Sopenharmony_ci appInfo.appNameEN = moduleAppInfo.appNameEN; 96b8a72a62Sopenharmony_ci appInfo.setBundleType(moduleAppInfo.getBundleType()); 97b8a72a62Sopenharmony_ci appInfo.setCompileSdkType(moduleAppInfo.getCompileSdkType()); 98b8a72a62Sopenharmony_ci appInfo.setCompileSdkVersion(moduleAppInfo.getCompileSdkVersion()); 99b8a72a62Sopenharmony_ci appInfo.setTargetBundleName(moduleAppInfo.getTargetBundleName()); 100b8a72a62Sopenharmony_ci appInfo.setTargetPriority(moduleAppInfo.getTargetPriority()); 101b8a72a62Sopenharmony_ci return appInfo; 102b8a72a62Sopenharmony_ci } 103b8a72a62Sopenharmony_ci 104b8a72a62Sopenharmony_ci /** 105b8a72a62Sopenharmony_ci * convert moduleAppInfo deviceTypes to DeviceConfig function. 106b8a72a62Sopenharmony_ci * 107b8a72a62Sopenharmony_ci * @param moduleAppInfo for module.json app result 108b8a72a62Sopenharmony_ci * @return Map<String, DeviceConfig> 109b8a72a62Sopenharmony_ci */ 110b8a72a62Sopenharmony_ci Map<String, DeviceConfig> convertToDeviceConfig(ModuleAppInfo moduleAppInfo) { 111b8a72a62Sopenharmony_ci Map<String, DeviceConfig> deviceConfigMap = new HashMap<>(); 112b8a72a62Sopenharmony_ci if (moduleAppInfo == null) { 113b8a72a62Sopenharmony_ci return deviceConfigMap; 114b8a72a62Sopenharmony_ci } 115b8a72a62Sopenharmony_ci for(Map.Entry<String, ModuleDeviceType> entrty : moduleAppInfo.deviceTypes.entrySet()) { 116b8a72a62Sopenharmony_ci DeviceConfig deviceConfig = new DeviceConfig(); 117b8a72a62Sopenharmony_ci deviceConfig.distributedNotificationEnabled = entrty.getValue().distributedNotificationEnabled; 118b8a72a62Sopenharmony_ci deviceConfigMap.put(entrty.getKey(), deviceConfig); 119b8a72a62Sopenharmony_ci } 120b8a72a62Sopenharmony_ci return deviceConfigMap; 121b8a72a62Sopenharmony_ci } 122b8a72a62Sopenharmony_ci 123b8a72a62Sopenharmony_ci /** 124b8a72a62Sopenharmony_ci * convert moduleInfo to HapInfo function. 125b8a72a62Sopenharmony_ci * 126b8a72a62Sopenharmony_ci * @param moduleInfo for module.json module result 127b8a72a62Sopenharmony_ci * @return HapInfo 128b8a72a62Sopenharmony_ci */ 129b8a72a62Sopenharmony_ci HapInfo convertToHapInfo(ModuleInfo moduleInfo) { 130b8a72a62Sopenharmony_ci HapInfo hapInfo = new HapInfo(); 131b8a72a62Sopenharmony_ci if (moduleInfo == null) { 132b8a72a62Sopenharmony_ci LOG.error("convertToHapInfo failed: moduleInfo is null"); 133b8a72a62Sopenharmony_ci return hapInfo; 134b8a72a62Sopenharmony_ci } 135b8a72a62Sopenharmony_ci hapInfo.name = moduleInfo.name; 136b8a72a62Sopenharmony_ci hapInfo.distro = new Distro(); 137b8a72a62Sopenharmony_ci hapInfo.distro.moduleName = moduleInfo.name; 138b8a72a62Sopenharmony_ci hapInfo.distro.moduleType = moduleInfo.type; 139b8a72a62Sopenharmony_ci hapInfo.distro.installationFree = moduleInfo.installationFree; 140b8a72a62Sopenharmony_ci hapInfo.distro.virtualMachine = moduleInfo.virtualMachine; 141b8a72a62Sopenharmony_ci hapInfo.distro.deliveryWithInstall = moduleInfo.deliveryWithInstall; 142b8a72a62Sopenharmony_ci hapInfo.srcEntrance = moduleInfo.srcEntrance; 143b8a72a62Sopenharmony_ci hapInfo.description = moduleInfo.description; 144b8a72a62Sopenharmony_ci hapInfo.setDescriptions(moduleInfo.getDescriptions()); 145b8a72a62Sopenharmony_ci hapInfo.process = moduleInfo.process; 146b8a72a62Sopenharmony_ci hapInfo.mainElement = moduleInfo.mainElement; 147b8a72a62Sopenharmony_ci hapInfo.deviceType = moduleInfo.deviceTypes; 148b8a72a62Sopenharmony_ci hapInfo.uiSyntax = moduleInfo.uiSyntax; 149b8a72a62Sopenharmony_ci // convert pages 150b8a72a62Sopenharmony_ci hapInfo.pages = moduleInfo.pages; 151b8a72a62Sopenharmony_ci // convert moduleshortcut to short 152b8a72a62Sopenharmony_ci hapInfo.shortcuts = convertToShortcut(moduleInfo.moduleShortcuts); 153b8a72a62Sopenharmony_ci // convert metadata 154b8a72a62Sopenharmony_ci hapInfo.metaData = convertToMetadata(moduleInfo.moduleMetadataInfos); 155b8a72a62Sopenharmony_ci // convert abilities 156b8a72a62Sopenharmony_ci hapInfo.abilities = convertToAbilityInfo(moduleInfo.abilities); 157b8a72a62Sopenharmony_ci // convert extension abilities to abilities 158b8a72a62Sopenharmony_ci hapInfo.extensionAbilityInfos = moduleInfo.extensionAbilityInfos; 159b8a72a62Sopenharmony_ci // convert request permissions 160b8a72a62Sopenharmony_ci hapInfo.reqPermissions = moduleInfo.requestPermissions; 161b8a72a62Sopenharmony_ci // convert distrofilter 162b8a72a62Sopenharmony_ci hapInfo.distroFilter = moduleInfo.distroFilter; 163b8a72a62Sopenharmony_ci hapInfo.formInfos = moduleInfo.abilityFormInfos; 164b8a72a62Sopenharmony_ci hapInfo.commonEvents = moduleInfo.commonEvents; 165b8a72a62Sopenharmony_ci hapInfo.definePermissions = moduleInfo.definePermissions; 166b8a72a62Sopenharmony_ci hapInfo.moduleAtomicService = moduleInfo.moduleAtomicService; 167b8a72a62Sopenharmony_ci hapInfo.appModel = moduleInfo.appModel; 168b8a72a62Sopenharmony_ci hapInfo.dependencies = moduleInfo.dependenies; 169b8a72a62Sopenharmony_ci hapInfo.proxyData = moduleInfo.proxyData; 170b8a72a62Sopenharmony_ci return hapInfo; 171b8a72a62Sopenharmony_ci } 172b8a72a62Sopenharmony_ci 173b8a72a62Sopenharmony_ci /** 174b8a72a62Sopenharmony_ci * convert moduleShortcuts to HapInfo Shortcut. 175b8a72a62Sopenharmony_ci * 176b8a72a62Sopenharmony_ci * @param moduleShortcuts for module.json shortcut result 177b8a72a62Sopenharmony_ci * @return List<Shortcut> 178b8a72a62Sopenharmony_ci */ 179b8a72a62Sopenharmony_ci List<Shortcut> convertToShortcut(List<ModuleShortcut> moduleShortcuts) { 180b8a72a62Sopenharmony_ci List<Shortcut> shortcuts = new ArrayList<>(); 181b8a72a62Sopenharmony_ci for (ModuleShortcut value : moduleShortcuts) { 182b8a72a62Sopenharmony_ci Shortcut shortcut = new Shortcut(); 183b8a72a62Sopenharmony_ci shortcut.shortcutId = value.getShortcutId(); 184b8a72a62Sopenharmony_ci shortcut.label = value.getLabel(); 185b8a72a62Sopenharmony_ci shortcut.icon = value.getIcon(); 186b8a72a62Sopenharmony_ci shortcut.intents = new ArrayList<>(); 187b8a72a62Sopenharmony_ci for (int j = 0; j < value.getWants().size(); ++j) { 188b8a72a62Sopenharmony_ci Want want = value.getWants().get(j); 189b8a72a62Sopenharmony_ci IntentInfo intentInfo = new IntentInfo(); 190b8a72a62Sopenharmony_ci intentInfo.targetBundle = want.bundleName; 191b8a72a62Sopenharmony_ci intentInfo.targetClass = want.abilityName; 192b8a72a62Sopenharmony_ci shortcut.intents.add(intentInfo); 193b8a72a62Sopenharmony_ci } 194b8a72a62Sopenharmony_ci shortcuts.add(shortcut); 195b8a72a62Sopenharmony_ci } 196b8a72a62Sopenharmony_ci return shortcuts; 197b8a72a62Sopenharmony_ci } 198b8a72a62Sopenharmony_ci 199b8a72a62Sopenharmony_ci /** 200b8a72a62Sopenharmony_ci * convert metadataInfos to MetaData function. 201b8a72a62Sopenharmony_ci * 202b8a72a62Sopenharmony_ci * @param metadataInfos for module.json metadata result 203b8a72a62Sopenharmony_ci * @return MetaData 204b8a72a62Sopenharmony_ci */ 205b8a72a62Sopenharmony_ci MetaData convertToMetadata(List<ModuleMetadataInfo> metadataInfos) { 206b8a72a62Sopenharmony_ci MetaData metaData = new MetaData(); 207b8a72a62Sopenharmony_ci List<CustomizeData> customizeDatas = new ArrayList<>(); 208b8a72a62Sopenharmony_ci for (ModuleMetadataInfo metadataInfo : metadataInfos) { 209b8a72a62Sopenharmony_ci CustomizeData customizeData = new CustomizeData(); 210b8a72a62Sopenharmony_ci customizeData.name = metadataInfo.name; 211b8a72a62Sopenharmony_ci customizeData.value = metadataInfo.value; 212b8a72a62Sopenharmony_ci customizeData.extra = metadataInfo.resource; 213b8a72a62Sopenharmony_ci customizeDatas.add(customizeData); 214b8a72a62Sopenharmony_ci } 215b8a72a62Sopenharmony_ci metaData.customizeDatas = customizeDatas; 216b8a72a62Sopenharmony_ci return metaData; 217b8a72a62Sopenharmony_ci } 218b8a72a62Sopenharmony_ci 219b8a72a62Sopenharmony_ci /** 220b8a72a62Sopenharmony_ci * convert ModuleAbilityInfo to AbilityInfo function. 221b8a72a62Sopenharmony_ci * 222b8a72a62Sopenharmony_ci * @param moduleAbilityInfos for module.json ability result 223b8a72a62Sopenharmony_ci * @return List<AbilityInfo> 224b8a72a62Sopenharmony_ci */ 225b8a72a62Sopenharmony_ci List<AbilityInfo> convertToAbilityInfo(List<ModuleAbilityInfo> moduleAbilityInfos) { 226b8a72a62Sopenharmony_ci List<AbilityInfo> abilityInfos = new ArrayList<>(); 227b8a72a62Sopenharmony_ci for (ModuleAbilityInfo info : moduleAbilityInfos) { 228b8a72a62Sopenharmony_ci AbilityInfo abilityInfo = new AbilityInfo(); 229b8a72a62Sopenharmony_ci abilityInfo.type = "page"; 230b8a72a62Sopenharmony_ci abilityInfo.name = info.name; 231b8a72a62Sopenharmony_ci abilityInfo.srcEntrance = info.srcEntrance; 232b8a72a62Sopenharmony_ci abilityInfo.description = info.description; 233b8a72a62Sopenharmony_ci abilityInfo.setDescriptions(info.getDescriptions()); 234b8a72a62Sopenharmony_ci abilityInfo.launchType = info.launchType; 235b8a72a62Sopenharmony_ci abilityInfo.icon = info.icon; 236b8a72a62Sopenharmony_ci abilityInfo.iconPath = info.icon; 237b8a72a62Sopenharmony_ci abilityInfo.label = info.label; 238b8a72a62Sopenharmony_ci abilityInfo.setLabels(info.getLabels()); 239b8a72a62Sopenharmony_ci abilityInfo.labelRes = info.label; 240b8a72a62Sopenharmony_ci abilityInfo.permissions = info.permissions; 241b8a72a62Sopenharmony_ci abilityInfo.visible = info.visible; 242b8a72a62Sopenharmony_ci abilityInfo.continuable = info.continuable; 243b8a72a62Sopenharmony_ci // convert metadata 244b8a72a62Sopenharmony_ci abilityInfo.metaData = convertToMetadata(info.metadata); 245b8a72a62Sopenharmony_ci // convert skillInfo 246b8a72a62Sopenharmony_ci abilityInfo.skills = info.skills; 247b8a72a62Sopenharmony_ci // convert configchanges 248b8a72a62Sopenharmony_ci abilityInfo.backgroundModes = info.backgroundModes; 249b8a72a62Sopenharmony_ci abilityInfos.add(abilityInfo); 250b8a72a62Sopenharmony_ci } 251b8a72a62Sopenharmony_ci return abilityInfos; 252b8a72a62Sopenharmony_ci } 253b8a72a62Sopenharmony_ci} 254