• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 Huawei Device Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package ohos;
18 
19 import java.math.BigDecimal;
20 import java.util.regex.Pattern;
21 
22 /**
23  * scanVerify info
24  *
25  * @since 2023/11/23
26  */
27 
28 public class ScanVerify {
29 
30     static final String HAP = ".hap";
31     static final String HSP = ".hsp";
32     static final String APP = ".app";
33     private static final String EMPTY_STRING = "";
34     private static final Pattern PATTERN = Pattern.compile("[0-9]*");
35     private static final Long MAX_VALUE = 4294967295L;
36 
37     private static final Log LOG = new Log(ScanVerify.class.toString());
38 
39     /**
40      * if args valid.
41      *
42      * @param utility common data
43      * @return commandVerify if command valid.
44      */
commandVerify(Utility utility)45     public static boolean commandVerify(Utility utility) {
46         if (utility == null) {
47             LOG.error(ScanErrorEnum.SCAN_VERIFY_UTILITY_EMPTY_ERROR.toString());
48             return false;
49         }
50 
51         if (utility.getInput().isEmpty()) {
52             LOG.error(ScanErrorEnum.SCAN_VERIFY_INPUT_EMPTY_ERROR.toString());
53             return false;
54         }
55 
56         if (!(utility.getInput().endsWith(HAP) || utility.getInput().endsWith(HSP)
57                 || utility.getInput().endsWith(APP))) {
58             LOG.error(ScanErrorEnum.SCAN_VERIFY_INPUT_INVALID_ERROR.toString());
59             return false;
60         }
61 
62         if (utility.getOutPath().isEmpty()) {
63             LOG.error(ScanErrorEnum.SCAN_VERIFY_OUT_PATH_EMPTY_ERROR.toString());
64             return false;
65         }
66 
67         if (!utility.getStatFileSize().isEmpty()) {
68             if (!PATTERN.matcher(utility.getStatFileSize()).matches()) {
69                 LOG.error(ScanErrorEnum.SCAN_VERIFY_STAT_FILE_SIZE_INVALID_ERROR.toString());
70                 return false;
71             }
72             if (new BigDecimal(utility.getStatFileSize()).compareTo(BigDecimal.ZERO) < 0
73                     || new BigDecimal(utility.getStatFileSize()).compareTo(new BigDecimal(MAX_VALUE)) > 0) {
74                 LOG.error(ScanErrorEnum.SCAN_VERIFY_STAT_FILE_SIZE_INVALID_ERROR.toString());
75                 return false;
76             }
77         }
78 
79         if (!utility.getStatSuffix() && !utility.getStatDuplicate()
80                 && EMPTY_STRING.equals(utility.getStatFileSize())) {
81             LOG.error(ScanErrorEnum.SCAN_VERIFY_STAT_PARAMETER_EMPTY_ERROR.toString());
82         }
83 
84         return true;
85     }
86 }
87