diff options
Diffstat (limited to 'src/main/java/org/openecomp/sdc/tosca/parser/impl/SdcCsarHelperImpl.java')
-rw-r--r-- | src/main/java/org/openecomp/sdc/tosca/parser/impl/SdcCsarHelperImpl.java | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/src/main/java/org/openecomp/sdc/tosca/parser/impl/SdcCsarHelperImpl.java b/src/main/java/org/openecomp/sdc/tosca/parser/impl/SdcCsarHelperImpl.java index 1c4b71b..4a3f73e 100644 --- a/src/main/java/org/openecomp/sdc/tosca/parser/impl/SdcCsarHelperImpl.java +++ b/src/main/java/org/openecomp/sdc/tosca/parser/impl/SdcCsarHelperImpl.java @@ -42,6 +42,7 @@ import org.openecomp.sdc.toscaparser.api.ToscaTemplate; import org.openecomp.sdc.toscaparser.api.elements.Metadata; import org.openecomp.sdc.toscaparser.api.elements.NodeType; import org.openecomp.sdc.toscaparser.api.functions.Function; +import org.openecomp.sdc.toscaparser.api.functions.GetInput; import org.openecomp.sdc.toscaparser.api.parameters.Input; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -576,6 +577,68 @@ public class SdcCsarHelperImpl implements ISdcCsarHelper { return new ArrayList<>(); } + public Map<String, Object> filterNodeTemplatePropertiesByValue(NodeTemplate nodeTemplate, FilterType filterType, String pattern) { + Map<String, Object> filterMap = new HashMap<>(); + + if (nodeTemplate == null) { + log.error("filterNodeTemplatePropertiesByValue nodeTemplate is null"); + return filterMap; + } + + if (filterType == null) { + log.error("filterNodeTemplatePropertiesByValue filterType is null"); + return filterMap; + } + + if (GeneralUtility.isEmptyString(pattern)) { + log.error("filterNodeTemplatePropertiesByValue pattern string is empty"); + return filterMap; + } + + Map<String, Property> ntProperties = nodeTemplate.getProperties(); + + if (ntProperties != null && ntProperties.size() > 0) { + + for (Property current : ntProperties.values()) { + filterProperties(current.getValue(), current.getName(), filterType, pattern, filterMap); + } + } + + log.trace("filterNodeTemplatePropertiesByValue - filterMap value: {}", filterMap); + + return filterMap; + } + + /************************************* helper functions ***********************************/ + private Map<String, Object> filterProperties(Object property, String path, FilterType filterType, String pattern, Map<String, Object> filterMap) { + + if (property instanceof Map) { + for (Map.Entry<String, Object> item: ((Map<String, Object>) property).entrySet()) { + if (item.getKey().equals("get_input")) { + String itemToStr = item.getKey() + ":" + item.getValue().toString(); + filterProperties(itemToStr, path, filterType, pattern, filterMap); + } else { + path += PATH_DELIMITER + item.getKey(); + filterProperties(item.getValue(), path, filterType, pattern, filterMap); + } + } + } else if (property instanceof List) { + for (Object item: (List<Object>)property) { + filterProperties(item, path, filterType, pattern, filterMap); + } + } else if (property instanceof Function) { + if (filterType.isMatch(property.toString(), pattern)) { + filterMap.put(path, property); + } + } else { + if (filterType.isMatch(property.toString(), pattern)) { + filterMap.put(path, property); + } + } + + return filterMap; + } + public List<NodeTemplate> getServiceNodeTemplateBySdcType(SdcTypes sdcType) { if (sdcType == null) { log.error("getServiceNodeTemplateBySdcType - sdcType is null or empty"); |