1201f6b49c40e38d8a6478d01bb8ceb109f0c9c9
[ccsdk/cds.git] /
1 /*\r
2  * Copyright © 2017-2018 AT&T Intellectual Property.\r
3  * Modifications Copyright © 2018 IBM.\r
4  *\r
5  * Licensed under the Apache License, Version 2.0 (the "License");\r
6  * you may not use this file except in compliance with the License.\r
7  * You may obtain a copy of the License at\r
8  *\r
9  *     http://www.apache.org/licenses/LICENSE-2.0\r
10  *\r
11  * Unless required by applicable law or agreed to in writing, software\r
12  * distributed under the License is distributed on an "AS IS" BASIS,\r
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
14  * See the License for the specific language governing permissions and\r
15  * limitations under the License.\r
16  */\r
17 \r
18 package org.onap.ccsdk.apps.controllerblueprints.service.validator;\r
19 \r
20 import org.apache.commons.lang3.StringUtils;\r
21 import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintConstants;\r
22 import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException;\r
23 import org.onap.ccsdk.apps.controllerblueprints.core.data.ArtifactType;\r
24 import org.onap.ccsdk.apps.controllerblueprints.core.data.CapabilityDefinition;\r
25 import org.onap.ccsdk.apps.controllerblueprints.core.data.DataType;\r
26 import org.onap.ccsdk.apps.controllerblueprints.core.data.NodeType;\r
27 import org.onap.ccsdk.apps.controllerblueprints.core.utils.JacksonUtils;\r
28 import org.onap.ccsdk.apps.controllerblueprints.service.domain.ModelType;\r
29 \r
30 import java.util.ArrayList;\r
31 import java.util.List;\r
32 \r
33 /**\r
34  * ModelTypeValidation.java Purpose: Provide Validation Service for Model Type ModelTypeValidation\r
35  *\r
36  * @author Brinda Santh\r
37  * @version 1.0\r
38  */\r
39 \r
40 public class ModelTypeValidator {\r
41 \r
42     private ModelTypeValidator() {\r
43 \r
44     }\r
45 \r
46     private static List<String> getValidModelDefinitionType() {\r
47         List<String> validTypes = new ArrayList<>();\r
48         validTypes.add(BluePrintConstants.MODEL_DEFINITION_TYPE_DATA_TYPE);\r
49         validTypes.add(BluePrintConstants.MODEL_DEFINITION_TYPE_NODE_TYPE);\r
50         validTypes.add(BluePrintConstants.MODEL_DEFINITION_TYPE_ARTIFACT_TYPE);\r
51         validTypes.add(BluePrintConstants.MODEL_DEFINITION_TYPE_CAPABILITY_TYPE);\r
52         validTypes.add(BluePrintConstants.MODEL_DEFINITION_TYPE_RELATIONSHIP_TYPE);\r
53         return validTypes;\r
54     }\r
55 \r
56     /**\r
57      * This is a validateModelTypeDefinition\r
58      * \r
59      * @param definitionType\r
60      * @param definitionContent\r
61      * @return boolean\r
62      * @throws BluePrintException\r
63      */\r
64     public static boolean validateModelTypeDefinition(String definitionType, String definitionContent)\r
65             throws BluePrintException {\r
66         boolean valid = true;\r
67         if (StringUtils.isNotBlank(definitionContent)) {\r
68             if (BluePrintConstants.MODEL_DEFINITION_TYPE_DATA_TYPE.equalsIgnoreCase(definitionType)) {\r
69                 DataType dataType = JacksonUtils.readValue(definitionContent, DataType.class);\r
70                 if (dataType == null) {\r
71                     throw new BluePrintException(\r
72                             "Model type definition is not DataType valid content " + definitionContent);\r
73                 }\r
74             } else if (BluePrintConstants.MODEL_DEFINITION_TYPE_NODE_TYPE.equalsIgnoreCase(definitionType)) {\r
75                 NodeType nodeType = JacksonUtils.readValue(definitionContent, NodeType.class);\r
76                 if (nodeType == null) {\r
77                     throw new BluePrintException(\r
78                             "Model type definition is not NodeType valid content " + definitionContent);\r
79                 }\r
80             } else if (BluePrintConstants.MODEL_DEFINITION_TYPE_ARTIFACT_TYPE.equalsIgnoreCase(definitionType)) {\r
81                 ArtifactType artifactType = JacksonUtils.readValue(definitionContent, ArtifactType.class);\r
82                 if (artifactType == null) {\r
83                     throw new BluePrintException(\r
84                             "Model type definition is not ArtifactType valid content " + definitionContent);\r
85                 }\r
86             }else if (BluePrintConstants.MODEL_DEFINITION_TYPE_CAPABILITY_TYPE.equalsIgnoreCase(definitionType)) {\r
87                 CapabilityDefinition capabilityDefinition =\r
88                         JacksonUtils.readValue(definitionContent, CapabilityDefinition.class);\r
89                 if (capabilityDefinition == null) {\r
90                     throw new BluePrintException(\r
91                             "Model type definition is not CapabilityDefinition valid content " + definitionContent);\r
92                 }\r
93             }\r
94 \r
95         }\r
96         return valid;\r
97     }\r
98 \r
99     /**\r
100      * This is a validateModelType method\r
101      * \r
102      * @param modelType\r
103      * @return boolean\r
104      */\r
105     public static boolean validateModelType(ModelType modelType) throws BluePrintException {\r
106         if (modelType != null) {\r
107 \r
108             if (StringUtils.isBlank(modelType.getModelName())) {\r
109                 throw new BluePrintException("Model Name Information is missing.");\r
110             }\r
111 \r
112             if (StringUtils.isBlank(modelType.getDefinitionType())) {\r
113                 throw new BluePrintException("Model Root Type Information is missing.");\r
114             }\r
115             if (StringUtils.isBlank(modelType.getDerivedFrom())) {\r
116                 throw new BluePrintException("Model Type Information is missing.");\r
117             }\r
118 \r
119             if (StringUtils.isBlank(modelType.getDefinition())) {\r
120                 throw new BluePrintException("Model Definition Information is missing.");\r
121             }\r
122             if (StringUtils.isBlank(modelType.getDescription())) {\r
123                 throw new BluePrintException("Model Description Information is missing.");\r
124             }\r
125 \r
126             if (StringUtils.isBlank(modelType.getVersion())) {\r
127                 throw new BluePrintException("Model Version Information is missing.");\r
128             }\r
129 \r
130             if (StringUtils.isBlank(modelType.getUpdatedBy())) {\r
131                 throw new BluePrintException("Model Updated By Information is missing.");\r
132             }\r
133 \r
134             List<String> validRootTypes = getValidModelDefinitionType();\r
135             if (!validRootTypes.contains(modelType.getDefinitionType())) {\r
136                 throw new BluePrintException("Not Valid Model Root Type(" + modelType.getDefinitionType()\r
137                         + "), It sould be " + validRootTypes);\r
138             }\r
139 \r
140             validateModelTypeDefinition(modelType.getDefinitionType(), modelType.getDefinition());\r
141 \r
142         } else {\r
143             throw new BluePrintException("Model Type Information is missing.");\r
144         }\r
145 \r
146         return true;\r
147 \r
148     }\r
149 \r
150 }\r