1c36cf2e9Sopenharmony_ci/*
2c36cf2e9Sopenharmony_ci * Copyright (c) 2023-2023 Huawei Device Co., Ltd.
3c36cf2e9Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4c36cf2e9Sopenharmony_ci * you may not use this file except in compliance with the License.
5c36cf2e9Sopenharmony_ci * You may obtain a copy of the License at
6c36cf2e9Sopenharmony_ci *
7c36cf2e9Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8c36cf2e9Sopenharmony_ci *
9c36cf2e9Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10c36cf2e9Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11c36cf2e9Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12c36cf2e9Sopenharmony_ci * See the License for the specific language governing permissions and
13c36cf2e9Sopenharmony_ci * limitations under the License.
14c36cf2e9Sopenharmony_ci */
15c36cf2e9Sopenharmony_ci
16c36cf2e9Sopenharmony_ciimport { Constants } from '../model/Constants';
17c36cf2e9Sopenharmony_ciimport { GlobalThisHelper } from '../model/GlobalThisHelper';
18c36cf2e9Sopenharmony_ciimport { GlobalThisStorageKey} from '../model/GlobalThisStorageKey';
19c36cf2e9Sopenharmony_ciimport type common from '@ohos.app.ability.common';
20c36cf2e9Sopenharmony_ciimport CheckEmptyUtils from './CheckEmptyUtils';
21c36cf2e9Sopenharmony_ciimport { Log } from './Log';
22c36cf2e9Sopenharmony_ci
23c36cf2e9Sopenharmony_ciexport class StringUtil {
24c36cf2e9Sopenharmony_ci  private static readonly DEFAULT_LEN_OF_COMMON_STR: number = 6;
25c36cf2e9Sopenharmony_ci  private static readonly HALF_LEN_OF_COMMON_STR: number = 3;
26c36cf2e9Sopenharmony_ci  private static readonly LINK_OF_COMMON_STR: string = '****';
27c36cf2e9Sopenharmony_ci  /**
28c36cf2e9Sopenharmony_ci   * Get String from resources.
29c36cf2e9Sopenharmony_ci   *
30c36cf2e9Sopenharmony_ci   * @param {string} name - name of string.json
31c36cf2e9Sopenharmony_ci   * @return {string} - string from res
32c36cf2e9Sopenharmony_ci   */
33c36cf2e9Sopenharmony_ci  public static getString(name: string, ...args: Array<string | number>): string {
34c36cf2e9Sopenharmony_ci    let abilityContext = GlobalThisHelper.getValue<common.UIExtensionContext>(GlobalThisStorageKey.KEY_MAIN_ABILITY_CONTEXT);
35c36cf2e9Sopenharmony_ci    Log.info('getString abilityContext: ' +abilityContext)
36c36cf2e9Sopenharmony_ci    if (abilityContext !== undefined && !CheckEmptyUtils.checkStrIsEmpty(name)) {
37c36cf2e9Sopenharmony_ci      return <string> abilityContext?.resourceManager?.getStringByNameSync(name, ...args) ?? '';
38c36cf2e9Sopenharmony_ci    }
39c36cf2e9Sopenharmony_ci    return '';
40c36cf2e9Sopenharmony_ci  }
41c36cf2e9Sopenharmony_ci  /**
42c36cf2e9Sopenharmony_ci   * Get String from resources.
43c36cf2e9Sopenharmony_ci   *
44c36cf2e9Sopenharmony_ci   * @param name string code
45c36cf2e9Sopenharmony_ci   * @param context context
46c36cf2e9Sopenharmony_ci   * @param args variable args
47c36cf2e9Sopenharmony_ci   * @returns string value
48c36cf2e9Sopenharmony_ci   */
49c36cf2e9Sopenharmony_ci  public static getStringByName(name: string, context: common.Context,  ...args: Array<string | number>): string {
50c36cf2e9Sopenharmony_ci    if (CheckEmptyUtils.isEmpty(context) || CheckEmptyUtils.checkStrIsEmpty(name)) {
51c36cf2e9Sopenharmony_ci      return '';
52c36cf2e9Sopenharmony_ci    }
53c36cf2e9Sopenharmony_ci    return context!.resourceManager?.getStringByNameSync(name, ...args) ?? '';
54c36cf2e9Sopenharmony_ci  }
55c36cf2e9Sopenharmony_ci  /**
56c36cf2e9Sopenharmony_ci   * get anonymization string
57c36cf2e9Sopenharmony_ci   *
58c36cf2e9Sopenharmony_ci   * @param {string} originStr - string
59c36cf2e9Sopenharmony_ci   * @return {string} - anonymization string
60c36cf2e9Sopenharmony_ci   */
61c36cf2e9Sopenharmony_ci  public static encodeCommonString(originStr: string):string {
62c36cf2e9Sopenharmony_ci    if (!originStr) {
63c36cf2e9Sopenharmony_ci      return originStr;
64c36cf2e9Sopenharmony_ci    }
65c36cf2e9Sopenharmony_ci    if (originStr.length <= this.DEFAULT_LEN_OF_COMMON_STR) {
66c36cf2e9Sopenharmony_ci      return originStr;
67c36cf2e9Sopenharmony_ci    }
68c36cf2e9Sopenharmony_ci    return originStr.substring(0, this.HALF_LEN_OF_COMMON_STR) +
69c36cf2e9Sopenharmony_ci    this.LINK_OF_COMMON_STR +
70c36cf2e9Sopenharmony_ci    originStr.substring(originStr.length - this.HALF_LEN_OF_COMMON_STR);
71c36cf2e9Sopenharmony_ci  }
72c36cf2e9Sopenharmony_ci
73c36cf2e9Sopenharmony_ci  /**
74c36cf2e9Sopenharmony_ci   * get split mac
75c36cf2e9Sopenharmony_ci   *
76c36cf2e9Sopenharmony_ci   * @param {string} str - string
77c36cf2e9Sopenharmony_ci   * @return {string} - anonymization mac string
78c36cf2e9Sopenharmony_ci   */
79c36cf2e9Sopenharmony_ci  public static splitMac(str: string):string {
80c36cf2e9Sopenharmony_ci    if (!str) {
81c36cf2e9Sopenharmony_ci      return str;
82c36cf2e9Sopenharmony_ci    }
83c36cf2e9Sopenharmony_ci    let strSplit = str.split('://');
84c36cf2e9Sopenharmony_ci    if (strSplit.length > 1) {
85c36cf2e9Sopenharmony_ci      return strSplit[0] + '://' + this.encodeCommonString(strSplit[1]);
86c36cf2e9Sopenharmony_ci    } else if (str.length > this.DEFAULT_LEN_OF_COMMON_STR) {
87c36cf2e9Sopenharmony_ci      return this.encodeCommonString(str);
88c36cf2e9Sopenharmony_ci    } else {
89c36cf2e9Sopenharmony_ci      return str;
90c36cf2e9Sopenharmony_ci    }
91c36cf2e9Sopenharmony_ci  }
92c36cf2e9Sopenharmony_ci
93c36cf2e9Sopenharmony_ci  public static getNetTypeByPrintId(printId: string):string {
94c36cf2e9Sopenharmony_ci    if (!printId) {
95c36cf2e9Sopenharmony_ci      return printId;
96c36cf2e9Sopenharmony_ci    }
97c36cf2e9Sopenharmony_ci    let printIdSplit = printId.split(':');
98c36cf2e9Sopenharmony_ci    let minLength = 2;
99c36cf2e9Sopenharmony_ci    if (printIdSplit.length > minLength) {
100c36cf2e9Sopenharmony_ci      return printIdSplit[1];
101c36cf2e9Sopenharmony_ci    } else {
102c36cf2e9Sopenharmony_ci      return '';
103c36cf2e9Sopenharmony_ci    }
104c36cf2e9Sopenharmony_ci  }
105c36cf2e9Sopenharmony_ci
106c36cf2e9Sopenharmony_ci}