3 * * ============LICENSE_START=======================================================
5 * * ================================================================================
6 * * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved.
7 * * ================================================================================
8 * * Licensed under the Apache License, Version 2.0 (the "License");
9 * * you may not use this file except in compliance with the License.
10 * * You may obtain a copy of the License at
12 * * http://www.apache.org/licenses/LICENSE-2.0
14 * * Unless required by applicable law or agreed to in writing, software
15 * * distributed under the License is distributed on an "AS IS" BASIS,
16 * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * * See the License for the specific language governing permissions and
18 * * limitations under the License.
19 * * ============LICENSE_END=========================================================
24 package org.onap.policycreate.service;
26 import org.onap.blueprintgenerator.constants.Constants;
27 import org.onap.blueprintgenerator.model.componentspec.common.EntrySchema;
28 import org.onap.blueprintgenerator.model.componentspec.common.Parameters;
29 import org.onap.blueprintgenerator.model.componentspec.common.PolicySchema;
30 import org.onap.policycreate.model.PolicyModelNode;
31 import org.onap.policycreate.model.PolicyProperties;
32 import org.springframework.stereotype.Service;
35 import java.util.ArrayList;
36 import java.util.HashMap;
37 import java.util.TreeMap;
38 import java.util.List;
41 * @author : Ravi Mantena
42 * @date 10/16/2020 Application: ONAP - Blueprint Generator To create Node Type, Data Type and
43 * Translate Entry Schema for Policy Model Node
45 @Service("onapPolicyModelNodeService")
46 public class PolicyModelNodeService {
49 * Creates Nodes for Policy
51 * @param policyName Policy Name
52 * @param params Paramaeters
55 public Map<String, Object> creatNodeType(String policyName, Parameters[] params) {
56 String hasEntrySchema = "";
57 Map<String, Object> response = new HashMap<>();
58 PolicyModelNode policyModelNode = new PolicyModelNode();
60 Map<String, PolicyProperties> props = new TreeMap<>();
61 for (Parameters p : params) {
62 if (p.getPolicy_group() != null && p.getPolicy_group().equals(policyName)) {
63 String name = p.getName();
64 String type = p.getType();
65 PolicyProperties polProps = new PolicyProperties();
66 if (p.getPolicy_schema() != null) {
67 polProps.setType("map");
68 ArrayList<String> entrySchema = new ArrayList<String>();
69 entrySchema.add("type: onap.datatypes." + name);
70 polProps.setEntry_schema(entrySchema);
71 hasEntrySchema = name;
72 props.put(name, polProps);
74 polProps.setType(type);
75 props.put(name, polProps);
79 policyModelNode.setDerived_from(Constants.TOSCA_DATATYPES_ROOT);
80 policyModelNode.setProperties(props);
81 response.put("hasEntrySchema", hasEntrySchema);
82 response.put("policyModelNode", policyModelNode);
87 * Creates Data Types for Policy
90 * @param parameters Parameters
93 public Map<String, PolicyModelNode> createDataTypes(String param, Parameters[] parameters) {
94 Map<String, PolicyModelNode> dataType = new TreeMap<>();
95 PolicyModelNode node = new PolicyModelNode();
96 node.setDerived_from(Constants.TOSCA_DATATYPES_ROOT);
98 Map<String, PolicyProperties> properties = new TreeMap<>();
99 Parameters par = new Parameters();
100 for (Parameters p : parameters) {
101 if (param.equals(p.getName())) {
107 for (PolicySchema pol : par.getPolicy_schema()) {
108 if (pol.getEntry_schema() != null) {
109 PolicyProperties prop = new PolicyProperties();
111 List<String> schema = new ArrayList<>();
112 schema.add("type: onap.datatypes." + pol.getName());
113 prop.setEntry_schema(schema);
114 properties.put(pol.getName(), prop);
115 dataType = translateEntrySchema(dataType, pol.getEntry_schema(), pol.getName());
117 PolicyProperties prop = new PolicyProperties();
118 prop.setType(pol.getType());
119 properties.put(pol.getName(), prop);
123 node.setProperties(properties);
124 dataType.put("onap.datatypes." + param, node);
128 private Map<String, PolicyModelNode> translateEntrySchema(
129 Map<String, PolicyModelNode> dataType, EntrySchema[] entry, String name) {
130 Map<String, PolicyModelNode> data = dataType;
131 PolicyModelNode node = new PolicyModelNode();
132 node.setDerived_from(Constants.TOSCA_NODES_ROOT);
133 Map<String, PolicyProperties> properties = new TreeMap<>();
135 for (EntrySchema e : entry) {
136 if (e.getEntry_schema() != null) {
137 PolicyProperties prop = new PolicyProperties();
138 prop.setType("list");
139 List<String> schema = new ArrayList<>();
140 schema.add("type: onap.datatypes." + e.getName());
141 prop.setEntry_schema(schema);
142 properties.put(e.getName(), prop);
143 data = translateEntrySchema(data, e.getEntry_schema(), e.getName());
144 node.setProperties(properties);
146 PolicyProperties prop = new PolicyProperties();
147 prop.setType(e.getType());
148 properties.put(e.getName(), prop);
149 node.setProperties(properties);
153 dataType.put("onap.datatypes." + name, node);