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