4a26119c04e41309f8817dcb258d3a719261e24f
[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;\r
19 \r
20 import com.google.common.base.Preconditions;\r
21 import org.apache.commons.lang3.StringUtils;\r
22 import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException;\r
23 import org.onap.ccsdk.apps.controllerblueprints.core.data.*;\r
24 import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintRepoService;\r
25 import org.onap.ccsdk.apps.controllerblueprints.core.utils.JacksonUtils;\r
26 import org.onap.ccsdk.apps.controllerblueprints.service.domain.ModelType;\r
27 import org.onap.ccsdk.apps.controllerblueprints.service.repository.ModelTypeRepository;\r
28 import org.springframework.stereotype.Service;\r
29 \r
30 import java.util.Optional;\r
31 \r
32 /**\r
33  * BluePrintRepoDBService\r
34  *\r
35  * @author Brinda Santh\r
36  */\r
37 @Service\r
38 public class BluePrintRepoDBService implements BluePrintRepoService {\r
39 \r
40     private ModelTypeRepository modelTypeRepository;\r
41 \r
42     public BluePrintRepoDBService(ModelTypeRepository modelTypeRepository) {\r
43         this.modelTypeRepository = modelTypeRepository;\r
44     }\r
45 \r
46    \r
47     @Override\r
48     public NodeType getNodeType(String nodeTypeName) throws BluePrintException {\r
49         Preconditions.checkArgument(StringUtils.isNotBlank(nodeTypeName), "NodeType name is missing");\r
50         String content = getModelDefinitions(nodeTypeName);\r
51         Preconditions.checkArgument(StringUtils.isNotBlank(content), "NodeType content is missing");\r
52         return JacksonUtils.readValue(content, NodeType.class);\r
53     }\r
54 \r
55    \r
56     @Override\r
57     public DataType getDataType(String dataTypeName) throws BluePrintException {\r
58         Preconditions.checkArgument(StringUtils.isNotBlank(dataTypeName), "DataType name is missing");\r
59         String content = getModelDefinitions(dataTypeName);\r
60         Preconditions.checkArgument(StringUtils.isNotBlank(content), "DataType content is missing");\r
61         return JacksonUtils.readValue(content, DataType.class);\r
62     }\r
63 \r
64    \r
65     @Override\r
66     public ArtifactType getArtifactType(String artifactTypeName) throws BluePrintException {\r
67         Preconditions.checkArgument(StringUtils.isNotBlank(artifactTypeName), "ArtifactType name is missing");\r
68         String content = getModelDefinitions(artifactTypeName);\r
69         Preconditions.checkArgument(StringUtils.isNotBlank(content), "ArtifactType content is missing");\r
70         return JacksonUtils.readValue(content, ArtifactType.class);\r
71     }\r
72 \r
73    \r
74     @Override\r
75     public RelationshipType getRelationshipType(String relationshipTypeName) throws BluePrintException {\r
76         Preconditions.checkArgument(StringUtils.isNotBlank(relationshipTypeName), "RelationshipType name is missing");\r
77         String content = getModelDefinitions(relationshipTypeName);\r
78         Preconditions.checkArgument(StringUtils.isNotBlank(content), "RelationshipType content is missing");\r
79         return JacksonUtils.readValue(content, RelationshipType.class);\r
80     }\r
81 \r
82    \r
83     @Override\r
84     public CapabilityDefinition getCapabilityDefinition(String capabilityDefinitionName) throws BluePrintException {\r
85         Preconditions.checkArgument(StringUtils.isNotBlank(capabilityDefinitionName), "CapabilityDefinition name is missing");\r
86         String content = getModelDefinitions(capabilityDefinitionName);\r
87         Preconditions.checkArgument(StringUtils.isNotBlank(content), "CapabilityDefinition content is missing");\r
88         return JacksonUtils.readValue(content, CapabilityDefinition.class);\r
89     }\r
90 \r
91     private String getModelDefinitions(String modelName) throws BluePrintException {\r
92         String modelDefinition = null;\r
93         Optional<ModelType> modelTypedb = modelTypeRepository.findByModelName(modelName);\r
94         if (modelTypedb.isPresent()) {\r
95             modelDefinition = modelTypedb.get().getDefinition();\r
96         } else {\r
97             throw new BluePrintException(String.format("failed to get model definition (%s) from repo", modelName));\r
98         }\r
99         return modelDefinition;\r
100     }\r
101 }\r