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 16 package ohos; 17 18 import java.util.HashMap; 19 import java.util.List; 20 import java.util.ArrayList; 21 import java.util.Map; 22 23 /** 24 * collection of method for ModuleAdaption. 25 * 26 */ 27 class 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 */ convertToUncompressResult(ModuleResult moduleResult)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 */ convertToAppInfo(ModuleAppInfo moduleAppInfo)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 return appInfo; 100 } 101 102 /** 103 * convert moduleAppInfo deviceTypes to DeviceConfig function. 104 * 105 * @param moduleAppInfo for module.json app result 106 * @return Map<String, DeviceConfig> 107 */ convertToDeviceConfig(ModuleAppInfo moduleAppInfo)108 Map<String, DeviceConfig> convertToDeviceConfig(ModuleAppInfo moduleAppInfo) { 109 Map<String, DeviceConfig> deviceConfigMap = new HashMap<>(); 110 if (moduleAppInfo == null) { 111 return deviceConfigMap; 112 } 113 for(Map.Entry<String, ModuleDeviceType> entrty : moduleAppInfo.deviceTypes.entrySet()) { 114 DeviceConfig deviceConfig = new DeviceConfig(); 115 deviceConfig.distributedNotificationEnabled = entrty.getValue().distributedNotificationEnabled; 116 deviceConfigMap.put(entrty.getKey(), deviceConfig); 117 } 118 return deviceConfigMap; 119 } 120 121 /** 122 * convert moduleInfo to HapInfo function. 123 * 124 * @param moduleInfo for module.json module result 125 * @return HapInfo 126 */ convertToHapInfo(ModuleInfo moduleInfo)127 HapInfo convertToHapInfo(ModuleInfo moduleInfo) { 128 HapInfo hapInfo = new HapInfo(); 129 if (moduleInfo == null) { 130 LOG.error("convertToHapInfo failed: moduleInfo is null"); 131 return hapInfo; 132 } 133 hapInfo.name = moduleInfo.name; 134 hapInfo.distro = new Distro(); 135 hapInfo.distro.moduleName = moduleInfo.name; 136 hapInfo.distro.moduleType = moduleInfo.type; 137 hapInfo.distro.installationFree = moduleInfo.installationFree; 138 hapInfo.distro.virtualMachine = moduleInfo.virtualMachine; 139 hapInfo.distro.deliveryWithInstall = moduleInfo.deliveryWithInstall; 140 hapInfo.srcEntrance = moduleInfo.srcEntrance; 141 hapInfo.description = moduleInfo.description; 142 hapInfo.setDescriptions(moduleInfo.getDescriptions()); 143 hapInfo.process = moduleInfo.process; 144 hapInfo.mainElement = moduleInfo.mainElement; 145 hapInfo.deviceType = moduleInfo.deviceTypes; 146 hapInfo.uiSyntax = moduleInfo.uiSyntax; 147 // convert pages 148 hapInfo.pages = moduleInfo.pages; 149 // convert moduleshortcut to short 150 hapInfo.shortcuts = convertToShortcut(moduleInfo.moduleShortcuts); 151 // convert metadata 152 hapInfo.metaData = convertToMetadata(moduleInfo.moduleMetadataInfos); 153 // convert abilities 154 hapInfo.abilities = convertToAbilityInfo(moduleInfo.abilities); 155 // convert extension abilities to abilities 156 hapInfo.extensionAbilityInfos = moduleInfo.extensionAbilityInfos; 157 // convert request permissions 158 hapInfo.reqPermissions = moduleInfo.requestPermissions; 159 // convert distrofilter 160 hapInfo.distroFilter = moduleInfo.distroFilter; 161 hapInfo.formInfos = moduleInfo.abilityFormInfos; 162 hapInfo.commonEvents = moduleInfo.commonEvents; 163 hapInfo.definePermissions = moduleInfo.definePermissions; 164 hapInfo.moduleAtomicService = moduleInfo.moduleAtomicService; 165 hapInfo.appModel = moduleInfo.appModel; 166 hapInfo.dependencies = moduleInfo.dependenies; 167 return hapInfo; 168 } 169 170 /** 171 * convert moduleShortcuts to HapInfo Shortcut. 172 * 173 * @param moduleShortcuts for module.json shortcut result 174 * @return List<Shortcut> 175 */ convertToShortcut(List<ModuleShortcut> moduleShortcuts)176 List<Shortcut> convertToShortcut(List<ModuleShortcut> moduleShortcuts) { 177 List<Shortcut> shortcuts = new ArrayList<>(); 178 for (ModuleShortcut value : moduleShortcuts) { 179 Shortcut shortcut = new Shortcut(); 180 shortcut.shortcutId = value.getShortcutId(); 181 shortcut.label = value.getLabel(); 182 shortcut.icon = value.getIcon(); 183 shortcut.intents = new ArrayList<>(); 184 for (int j = 0; j < value.getWants().size(); ++j) { 185 Want want = value.getWants().get(j); 186 IntentInfo intentInfo = new IntentInfo(); 187 intentInfo.targetBundle = want.bundleName; 188 intentInfo.targetClass = want.abilityName; 189 shortcut.intents.add(intentInfo); 190 } 191 shortcuts.add(shortcut); 192 } 193 return shortcuts; 194 } 195 196 /** 197 * convert metadataInfos to MetaData function. 198 * 199 * @param metadataInfos for module.json metadata result 200 * @return MetaData 201 */ convertToMetadata(List<ModuleMetadataInfo> metadataInfos)202 MetaData convertToMetadata(List<ModuleMetadataInfo> metadataInfos) { 203 MetaData metaData = new MetaData(); 204 List<CustomizeData> customizeDatas = new ArrayList<>(); 205 for (ModuleMetadataInfo metadataInfo : metadataInfos) { 206 CustomizeData customizeData = new CustomizeData(); 207 customizeData.name = metadataInfo.name; 208 customizeData.value = metadataInfo.value; 209 customizeData.extra = metadataInfo.resource; 210 customizeDatas.add(customizeData); 211 } 212 metaData.customizeDatas = customizeDatas; 213 return metaData; 214 } 215 216 /** 217 * convert ModuleAbilityInfo to AbilityInfo function. 218 * 219 * @param moduleAbilityInfos for module.json ability result 220 * @return List<AbilityInfo> 221 */ convertToAbilityInfo(List<ModuleAbilityInfo> moduleAbilityInfos)222 List<AbilityInfo> convertToAbilityInfo(List<ModuleAbilityInfo> moduleAbilityInfos) { 223 List<AbilityInfo> abilityInfos = new ArrayList<>(); 224 for (ModuleAbilityInfo info : moduleAbilityInfos) { 225 AbilityInfo abilityInfo = new AbilityInfo(); 226 abilityInfo.type = "page"; 227 abilityInfo.name = info.name; 228 abilityInfo.srcEntrance = info.srcEntrance; 229 abilityInfo.description = info.description; 230 abilityInfo.setDescriptions(info.getDescriptions()); 231 abilityInfo.launchType = info.launchType; 232 abilityInfo.icon = info.icon; 233 abilityInfo.iconPath = info.icon; 234 abilityInfo.label = info.label; 235 abilityInfo.setLabels(info.getLabels()); 236 abilityInfo.labelRes = info.label; 237 abilityInfo.permissions = info.permissions; 238 abilityInfo.visible = info.visible; 239 abilityInfo.continuable = info.continuable; 240 // convert metadata 241 abilityInfo.metaData = convertToMetadata(info.metadata); 242 // convert skillInfo 243 abilityInfo.skills = info.skills; 244 // convert configchanges 245 abilityInfo.backgroundModes = info.backgroundModes; 246 abilityInfos.add(abilityInfo); 247 } 248 return abilityInfos; 249 } 250 } 251