• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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