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
43 * Application: ONAP - Blueprint Generator
44 * To create Node Type, Data Type and Translate Entry Schema for Policy Model Node
48 @Service("onapPolicyModelNodeService")
49 public class PolicyModelNodeService {
51 // Method to create Nodes for Policy
52 public Map<String,Object> creatNodeType(String policyName, Parameters[] params) {
53 String hasEntrySchema = "";
54 Map<String,Object> response = new HashMap<>();
55 PolicyModelNode policyModelNode = new PolicyModelNode();
57 Map<String, PolicyProperties> props = new TreeMap<>();
58 for(Parameters p: params) {
59 if(p.getPolicy_group() != null && p.getPolicy_group().equals(policyName)) {
60 String name = p.getName();
61 String type = p.getType();
62 PolicyProperties polProps = new PolicyProperties();
63 if(p.getPolicy_schema() != null) {
64 polProps.setType("map");
65 ArrayList<String> entrySchema = new ArrayList<String>();
66 entrySchema.add("type: onap.datatypes." + name);
67 polProps.setEntry_schema(entrySchema);
68 hasEntrySchema = name;
69 props.put(name, polProps);
72 polProps.setType(type);
73 props.put(name, polProps);
77 policyModelNode.setDerived_from(Constants.TOSCA_DATATYPES_ROOT);
78 policyModelNode.setProperties(props);
79 response.put("hasEntrySchema", hasEntrySchema);
80 response.put("policyModelNode", policyModelNode);
84 // Method to create Data Types for Policy
85 public Map<String, PolicyModelNode> createDataTypes(String param, Parameters[] parameters){
86 Map<String, PolicyModelNode> dataType = new TreeMap<>();
87 PolicyModelNode node = new PolicyModelNode();
88 node.setDerived_from(Constants.TOSCA_DATATYPES_ROOT);
90 Map<String, PolicyProperties> properties = new TreeMap<>();
91 Parameters par = new Parameters();
92 for(Parameters p: parameters) {
93 if(param.equals(p.getName())) {
99 for(PolicySchema pol: par.getPolicy_schema()) {
100 if(pol.getEntry_schema() != null) {
101 PolicyProperties prop =new PolicyProperties();
103 ArrayList<String> schema = new ArrayList<String>();
104 schema.add("type: onap.datatypes." + pol.getName());
105 prop.setEntry_schema(schema);
106 properties.put(pol.getName(), prop);
107 dataType = translateEntrySchema(dataType, pol.getEntry_schema(), pol.getName());
110 PolicyProperties prop = new PolicyProperties();
111 prop.setType(pol.getType());
112 properties.put(pol.getName(), prop);
116 node.setProperties(properties);
117 dataType.put("onap.datatypes." + param, node);
121 private Map<String, PolicyModelNode> translateEntrySchema(Map<String, PolicyModelNode> dataType, EntrySchema[] entry, String name){
122 Map<String, PolicyModelNode> data = dataType;
123 PolicyModelNode node = new PolicyModelNode();
124 node.setDerived_from(Constants.TOSCA_NODES_ROOT);
125 Map<String, PolicyProperties> properties = new TreeMap<>();
127 for(EntrySchema e: entry) {
128 if(e.getEntry_schema() != null) {
129 PolicyProperties prop = new PolicyProperties();
130 prop.setType("list");
131 List<String> schema = new ArrayList<>();
132 schema.add("type: onap.datatypes." + e.getName());
133 prop.setEntry_schema(schema);
134 properties.put(e.getName(), prop);
135 data = translateEntrySchema(data, e.getEntry_schema(), e.getName());
136 node.setProperties(properties);
138 PolicyProperties prop = new PolicyProperties();
139 prop.setType(e.getType());
140 properties.put(e.getName(), prop);
141 node.setProperties(properties);
145 dataType.put("onap.datatypes." + name, node);