/* * * * ============LICENSE_START======================================================= * * org.onap.dcae * * ================================================================================ * * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. * * ================================================================================ * * Licensed under the Apache License, Version 2.0 (the "License"); * * you may not use this file except in compliance with the License. * * You may obtain a copy of the License at * * * * http://www.apache.org/licenses/LICENSE-2.0 * * * * Unless required by applicable law or agreed to in writing, software * * distributed under the License is distributed on an "AS IS" BASIS, * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * * See the License for the specific language governing permissions and * * limitations under the License. * * ============LICENSE_END========================================================= * * */ package org.onap.policycreate.service; import org.onap.blueprintgenerator.constants.Constants; import org.onap.blueprintgenerator.model.componentspec.common.EntrySchema; import org.onap.blueprintgenerator.model.componentspec.common.Parameters; import org.onap.blueprintgenerator.model.componentspec.common.PolicySchema; import org.onap.policycreate.model.PolicyModelNode; import org.onap.policycreate.model.PolicyProperties; import org.springframework.stereotype.Service; import java.util.Map; import java.util.ArrayList; import java.util.HashMap; import java.util.TreeMap; import java.util.List; /** * @author : Ravi Mantena * @date 10/16/2020 * Application: ONAP - Blueprint Generator * To create Node Type, Data Type and Translate Entry Schema for Policy Model Node */ @Service("onapPolicyModelNodeService") public class PolicyModelNodeService { // Method to create Nodes for Policy public Map creatNodeType(String policyName, Parameters[] params) { String hasEntrySchema = ""; Map response = new HashMap<>(); PolicyModelNode policyModelNode = new PolicyModelNode(); Map props = new TreeMap<>(); for(Parameters p: params) { if(p.getPolicy_group() != null && p.getPolicy_group().equals(policyName)) { String name = p.getName(); String type = p.getType(); PolicyProperties polProps = new PolicyProperties(); if(p.getPolicy_schema() != null) { polProps.setType("map"); ArrayList entrySchema = new ArrayList(); entrySchema.add("type: onap.datatypes." + name); polProps.setEntry_schema(entrySchema); hasEntrySchema = name; props.put(name, polProps); } else { polProps.setType(type); props.put(name, polProps); } } } policyModelNode.setDerived_from(Constants.TOSCA_DATATYPES_ROOT); policyModelNode.setProperties(props); response.put("hasEntrySchema", hasEntrySchema); response.put("policyModelNode", policyModelNode); return response; } // Method to create Data Types for Policy public Map createDataTypes(String param, Parameters[] parameters){ Map dataType = new TreeMap<>(); PolicyModelNode node = new PolicyModelNode(); node.setDerived_from(Constants.TOSCA_DATATYPES_ROOT); Map properties = new TreeMap<>(); Parameters par = new Parameters(); for(Parameters p: parameters) { if(param.equals(p.getName())) { par = p; break; } } for(PolicySchema pol: par.getPolicy_schema()) { if(pol.getEntry_schema() != null) { PolicyProperties prop =new PolicyProperties(); prop.setType("map"); ArrayList schema = new ArrayList(); schema.add("type: onap.datatypes." + pol.getName()); prop.setEntry_schema(schema); properties.put(pol.getName(), prop); dataType = translateEntrySchema(dataType, pol.getEntry_schema(), pol.getName()); } else { PolicyProperties prop = new PolicyProperties(); prop.setType(pol.getType()); properties.put(pol.getName(), prop); } } node.setProperties(properties); dataType.put("onap.datatypes." + param, node); return dataType; } private Map translateEntrySchema(Map dataType, EntrySchema[] entry, String name){ Map data = dataType; PolicyModelNode node = new PolicyModelNode(); node.setDerived_from(Constants.TOSCA_NODES_ROOT); Map properties = new TreeMap<>(); for(EntrySchema e: entry) { if(e.getEntry_schema() != null) { PolicyProperties prop = new PolicyProperties(); prop.setType("list"); List schema = new ArrayList<>(); schema.add("type: onap.datatypes." + e.getName()); prop.setEntry_schema(schema); properties.put(e.getName(), prop); data = translateEntrySchema(data, e.getEntry_schema(), e.getName()); node.setProperties(properties); } else { PolicyProperties prop = new PolicyProperties(); prop.setType(e.getType()); properties.put(e.getName(), prop); node.setProperties(properties); } } dataType.put("onap.datatypes." + name, node); return data; } }