diff options
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/mapping/TranslatorHeatToToscaParameterConverter.java')
1 files changed, 56 insertions, 20 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/mapping/TranslatorHeatToToscaParameterConverter.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/mapping/TranslatorHeatToToscaParameterConverter.java index d4dc1ac80f..386b2e1ea9 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/mapping/TranslatorHeatToToscaParameterConverter.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/mapping/TranslatorHeatToToscaParameterConverter.java @@ -23,14 +23,23 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Optional; - import org.apache.commons.collections4.MapUtils; -import org.onap.sdc.tosca.datatypes.model.*; +import org.apache.commons.lang3.StringUtils; +import org.onap.sdc.tosca.datatypes.model.Constraint; +import org.onap.sdc.tosca.datatypes.model.EntrySchema; +import org.onap.sdc.tosca.datatypes.model.ParameterDefinition; +import org.onap.sdc.tosca.datatypes.model.ScalarUnitValidator; +import org.onap.sdc.tosca.datatypes.model.ServiceTemplate; import org.onap.sdc.tosca.datatypes.model.heatextend.AnnotationDefinition; import org.onap.sdc.tosca.datatypes.model.heatextend.ParameterDefinitionExt; import org.openecomp.core.utilities.file.FileUtils; - +import org.openecomp.sdc.heat.datatypes.DefinedHeatParameterTypes; +import org.openecomp.sdc.heat.datatypes.ToscaScalarUnitFrequency; +import org.openecomp.sdc.heat.datatypes.ToscaScalarUnitSize; +import org.openecomp.sdc.heat.datatypes.ToscaScalarUnitTime; +import org.openecomp.sdc.heat.datatypes.ToscaScalarUnitTypes; import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate; import org.openecomp.sdc.heat.datatypes.model.Output; import org.openecomp.sdc.heat.datatypes.model.Parameter; @@ -78,15 +87,17 @@ public class TranslatorHeatToToscaParameterConverter { * @return the map */ public static Map<String, ParameterDefinition> parameterConverter(ServiceTemplate serviceTemplate, - Map<String, Parameter> parameters, HeatOrchestrationTemplate heatOrchestrationTemplate, - String heatFileName, String parentHeatFileName, TranslationContext context) { + Map<String, Parameter> parameters, + HeatOrchestrationTemplate heatOrchestrationTemplate, + String heatFileName, String parentHeatFileName, + TranslationContext context, + Map<String, Object> heatEnvParameters) { Map<String, ParameterDefinition> parameterDefinitionMap = new HashMap<>(); for (Map.Entry<String, Parameter> entry : parameters.entrySet()) { String heatParamName = entry.getKey(); parameterDefinitionMap.put(heatParamName, - getToscaParameter(serviceTemplate,heatParamName, entry.getValue(), - heatOrchestrationTemplate, - heatFileName, parentHeatFileName, context)); + getToscaParameter(serviceTemplate,heatParamName, entry.getValue(), heatOrchestrationTemplate, heatFileName, + parentHeatFileName, context, heatEnvParameters)); } return parameterDefinitionMap; } @@ -100,9 +111,9 @@ public class TranslatorHeatToToscaParameterConverter { * @param context the context * @return the map */ - public static Map<String, ParameterDefinition> parameterOutputConverter(ServiceTemplate - serviceTemplate, - Map<String, Output> parameters, HeatOrchestrationTemplate heatOrchestrationTemplate, + public static Map<String, ParameterDefinition> parameterOutputConverter(ServiceTemplate serviceTemplate, + Map<String, Output> parameters, + HeatOrchestrationTemplate heatOrchestrationTemplate, String heatFileName, TranslationContext context) { Map<String, ParameterDefinition> parameterDefinitionMap = new HashMap<>(); for (Map.Entry<String, Output> entry : parameters.entrySet()) { @@ -125,16 +136,16 @@ public class TranslatorHeatToToscaParameterConverter { * @return the tosca parameter */ private static ParameterDefinitionExt getToscaParameter(ServiceTemplate serviceTemplate, - String heatParameterName, - Parameter heatParameter, - HeatOrchestrationTemplate - heatOrchestrationTemplate, - String heatFileName, - String parentHeatFileName, - TranslationContext context) { + String heatParameterName, + Parameter heatParameter, + HeatOrchestrationTemplate heatOrchestrationTemplate, + String heatFileName, + String parentHeatFileName, + TranslationContext context, + Map<String, Object> heatEnvParameters) { ParameterDefinitionExt toscaParameter = new ParameterDefinitionExt(); - toscaParameter.setType(getToscaParameterType(heatParameter.getType())); + toscaParameter.setType(getToscaParameterType(heatParameter.getType(), heatEnvParameters)); toscaParameter.setEntry_schema(getToscaParameterEntrySchema(toscaParameter.getType())); toscaParameter.setLabel(heatParameter.getLabel()); toscaParameter.setDescription(heatParameter.getDescription()); @@ -330,7 +341,32 @@ public class TranslatorHeatToToscaParameterConverter { return entrySchema; } - protected static String getToscaParameterType(String heatParameterType) { + protected static String getToscaParameterType(final String heatParameterType, + final Map<String, Object> heatEnvParameters) { + if (heatEnvParameters != null && DefinedHeatParameterTypes.NUMBER.getType().equals(heatParameterType)) { + if (getScalarUnitType(heatEnvParameters, ToscaScalarUnitSize.class) != null) { + return ToscaScalarUnitTypes.SCALAR_UNIT_SIZE.getType(); + } else if (getScalarUnitType(heatEnvParameters, ToscaScalarUnitTime.class) != null) { + return ToscaScalarUnitTypes.SCALAR_UNIT_TIME.getType(); + } else if (getScalarUnitType(heatEnvParameters, ToscaScalarUnitFrequency.class) != null) { + return ToscaScalarUnitTypes.SCALAR_UNIT_FREQUENCY.getType(); + } + } + return parameterTypeMapping.get(heatParameterType); } + + private static <E extends Enum<E>> String getScalarUnitType(final Map<String, Object> heatEnvParameters, + final Class<E> enumClass) { + final ScalarUnitValidator scalarUnitValidator = ScalarUnitValidator.getInstance(); + if (Arrays.stream(enumClass.getEnumConstants()).anyMatch(unitType -> + heatEnvParameters.values().stream().filter(Objects::nonNull) + .anyMatch(parameterValue -> scalarUnitValidator.isScalarUnit(parameterValue.toString()) && + Arrays.stream(StringUtils.split(parameterValue.toString())) + .anyMatch(strParamValue -> strParamValue.equalsIgnoreCase(unitType.name()))))) { + return enumClass.getTypeName(); + } + return null; + } + } |