2d4080658f3d64f9e12a580bfc4c8d177ca11b22
[cli.git] / profiles / command / src / main / java / org / onap / cli / fw / cmd / schema / OnapCommandSchemaCmdLoader.java
1 /*
2  * Copyright 2018 Huawei Technologies 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 org.onap.cli.fw.cmd.schema;
18
19 import java.util.ArrayList;
20 import java.util.Arrays;
21 import java.util.List;
22 import java.util.Map;
23
24 import org.onap.cli.fw.cmd.cmd.OpenCommandShellCmd;
25 import org.onap.cli.fw.cmd.conf.OnapCommandCmdConstants;
26 import org.onap.cli.fw.conf.OnapCommandConfig;
27 import org.onap.cli.fw.error.OnapCommandException;
28 import org.onap.cli.fw.utils.OnapCommandUtils;
29 import java.util.stream.Collectors;
30
31 public class OnapCommandSchemaCmdLoader {
32
33     private OnapCommandSchemaCmdLoader() {
34         // to follow standards !
35     }
36
37
38     /**
39      * Load the schema.
40      *
41      * @param cmd
42      *            OpenCommandShellCmd
43      * @param schemaName
44      *            schema name
45      * @throws OnapCommandException
46      *             on error
47      */
48     public static List<String> parseCmdSchema(OpenCommandShellCmd cmd,
49                                                     final Map<String, ?> values,
50                                                     boolean validate) throws OnapCommandException { //NOSONAR
51         ArrayList<String> errorList = new ArrayList<>();
52         Map<String, ?> valMap = (Map<String, ?>) values.get(OnapCommandCmdConstants.CMD);
53
54         if (valMap != null) {
55             if (validate) {
56                 OnapCommandUtils.validateTags(errorList, valMap, OnapCommandConfig.getCommaSeparatedList(OnapCommandCmdConstants.CMD_SECTIONS),
57                         OnapCommandConfig.getCommaSeparatedList(OnapCommandCmdConstants.CMD_MANDATORY_SECTIONS), OnapCommandCmdConstants.CMD);
58             }
59             for (Map.Entry<String, ?> entry1 : valMap.entrySet()) {
60                 String key1 = entry1.getKey();
61
62                 switch (key1) {
63                     case OnapCommandCmdConstants.COMMAND:
64                         Object o = valMap.get(key1);
65                         if (o instanceof List) {
66                             cmd.setCommand((List<String>) o);
67                         } else {
68                             cmd.setCommand(Arrays.asList((String) o));
69                         }
70                         break;
71
72                     case OnapCommandCmdConstants.ENVIRONMENT:
73                         Map<String, String> envMap = (Map<String, String>) valMap.get(key1);
74                         cmd.setEnvs(envMap);
75                         break;
76
77                     case OnapCommandCmdConstants.WD:
78                         cmd.setWd((String)valMap.get(key1));
79                         break;
80
81                     case OnapCommandCmdConstants.OUTPUT:
82                         cmd.setOutput((String)valMap.get(key1));
83                         break;
84
85                     case OnapCommandCmdConstants.ERROR:
86                         cmd.setError((String)valMap.get(key1));
87                         break;
88
89                     case OnapCommandCmdConstants.RESULT_MAP:
90                         cmd.setResultMap((Map<String, String>) valMap.get(key1));
91                         break;
92
93                     case OnapCommandCmdConstants.SUCCESS_EXIT_CODE:
94                         List<String> list = (ArrayList) valMap.get(key1);
95                         cmd.setSuccessStatusCodes(list.stream().map(s -> Integer.parseInt(s)).collect(Collectors.toList()));
96                         break;
97
98                     case OnapCommandCmdConstants.PASS_CODE:
99                         cmd.setPassCodes((ArrayList) valMap.get(key1));
100                         break;
101                     default : // Do nothing
102                 }
103             }
104         }
105
106
107         return errorList;
108     }
109 }