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