/* * * * ============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 { /** * Creates Nodes for Policy * * @param policyName Policy Name * @param params Paramaeters * @return */ 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; } /** * Creates Data Types for Policy * * @param param Param * @param parameters Parameters * @return */ 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"); List 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; } }