aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/org/onap/sdc/tosca/parser/elements/queries
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/onap/sdc/tosca/parser/elements/queries')
-rw-r--r--src/main/java/org/onap/sdc/tosca/parser/elements/queries/AllEntitiesQuery.java46
-rw-r--r--src/main/java/org/onap/sdc/tosca/parser/elements/queries/EntityQuery.java44
-rw-r--r--src/main/java/org/onap/sdc/tosca/parser/elements/queries/GroupEntityQuery.java39
-rw-r--r--src/main/java/org/onap/sdc/tosca/parser/elements/queries/NodeTemplateEntityQuery.java47
-rw-r--r--src/main/java/org/onap/sdc/tosca/parser/elements/queries/PolicyEntityQuery.java38
-rw-r--r--src/main/java/org/onap/sdc/tosca/parser/elements/queries/TopologyTemplateQuery.java46
6 files changed, 227 insertions, 33 deletions
diff --git a/src/main/java/org/onap/sdc/tosca/parser/elements/queries/AllEntitiesQuery.java b/src/main/java/org/onap/sdc/tosca/parser/elements/queries/AllEntitiesQuery.java
new file mode 100644
index 0000000..7c1cd25
--- /dev/null
+++ b/src/main/java/org/onap/sdc/tosca/parser/elements/queries/AllEntitiesQuery.java
@@ -0,0 +1,46 @@
+package org.onap.sdc.tosca.parser.elements.queries;
+
+import com.google.common.collect.Lists;
+import org.onap.sdc.tosca.parser.api.IEntityDetails;
+import org.onap.sdc.tosca.parser.enums.EntityTemplateType;
+import org.onap.sdc.toscaparser.api.NodeTemplate;
+import org.onap.sdc.toscaparser.api.ToscaTemplate;
+
+import java.util.List;
+
+/**
+ * Implements EntityQuery object for NodeTemplates, Groups and Policies
+ */
+
+public class AllEntitiesQuery extends EntityQuery {
+
+ AllEntitiesQuery() {
+ super(EntityTemplateType.ALL, null, null);
+ }
+
+ @Override
+ public List<IEntityDetails> getEntitiesFromTopologyTemplate(NodeTemplate nodeTemplate) {
+ List<IEntityDetails> allEntities = Lists.newArrayList();
+ if (nodeTemplate.getSubMappingToscaTemplate() != null) {
+ allEntities.addAll(GroupEntityQuery.convertGroupLisToEntityDetailsList(nodeTemplate.getSubMappingToscaTemplate().getGroups().stream()));
+ allEntities.addAll(NodeTemplateEntityQuery.convertNodeTemplatesListToEntityDetailsList(nodeTemplate.getSubMappingToscaTemplate().getNodeTemplates().stream()));
+ }
+ if (nodeTemplate.getOriginComponentTemplate() != null) {
+ allEntities.addAll(PolicyEntityQuery.convertPolicyLisToEntityDetailsList(nodeTemplate.getOriginComponentTemplate().getPolicies().stream()));
+ }
+ return allEntities;
+ }
+
+
+ @Override
+ public List<IEntityDetails> getEntitiesFromService(ToscaTemplate toscaTemplate) {
+ List<IEntityDetails> allEntities = Lists.newArrayList();
+ allEntities.addAll(GroupEntityQuery.convertGroupLisToEntityDetailsList(toscaTemplate.getGroups().stream()));
+ allEntities.addAll(NodeTemplateEntityQuery.convertNodeTemplatesListToEntityDetailsList(toscaTemplate.getNodeTemplates().stream()));
+ allEntities.addAll(PolicyEntityQuery.convertPolicyLisToEntityDetailsList(toscaTemplate.getPolicies().stream()));
+ return allEntities;
+ }
+
+}
+
+
diff --git a/src/main/java/org/onap/sdc/tosca/parser/elements/queries/EntityQuery.java b/src/main/java/org/onap/sdc/tosca/parser/elements/queries/EntityQuery.java
index ba17423..167a568 100644
--- a/src/main/java/org/onap/sdc/tosca/parser/elements/queries/EntityQuery.java
+++ b/src/main/java/org/onap/sdc/tosca/parser/elements/queries/EntityQuery.java
@@ -1,11 +1,17 @@
package org.onap.sdc.tosca.parser.elements.queries;
-import org.apache.commons.lang3.StringUtils;
+import org.onap.sdc.tosca.parser.api.IEntityDetails;
import org.onap.sdc.tosca.parser.enums.EntityTemplateType;
import org.onap.sdc.tosca.parser.enums.SdcTypes;
-import org.onap.sdc.toscaparser.api.EntityTemplate;
+import org.onap.sdc.tosca.parser.impl.SdcPropertyNames;
+import org.onap.sdc.toscaparser.api.NodeTemplate;
+import org.onap.sdc.toscaparser.api.ToscaTemplate;
+import org.onap.sdc.toscaparser.api.elements.Metadata;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.util.List;
+import java.util.Objects;
/**
* This class describes an entity searched and retrieved by SDC Tosca Parser API
@@ -13,6 +19,8 @@ import java.util.List;
*/
public abstract class EntityQuery {
+ private static final Logger logger = LoggerFactory.getLogger(EntityQuery.class.getName());
+
private final EntityTemplateType entityType;
private final SdcTypes nodeTemplateType;
@@ -37,9 +45,9 @@ public abstract class EntityQuery {
this.customizationUUID = customizationUUID;
}
- public abstract List<EntityTemplate> searchByTopologyTemplate(TopologyTemplateQuery topologyTemplateQuery);
+ public abstract List<IEntityDetails> getEntitiesFromTopologyTemplate(NodeTemplate nodeTemplate);
- public abstract EntityTemplateType getType();
+ public abstract List<IEntityDetails> getEntitiesFromService(ToscaTemplate toscaTemplate);
public EntityTemplateType getEntityType() {
return entityType;
@@ -61,8 +69,19 @@ public abstract class EntityQuery {
return customizationUUID;
}
- public boolean searchAllEntities() {
- return StringUtils.isEmpty(toscaType) && nodeTemplateType == null;
+ boolean isSearchCriteriaMatched(Metadata metadata, String toscaType, String uuidKeyName, String cuuidKeyName) {
+ return Objects.nonNull(metadata)
+ && isStringMatchingOrNull(metadata.getValue(uuidKeyName), getUUID())
+ && isStringMatchingOrNull(metadata.getValue(cuuidKeyName), getCustomizationUUID())
+ && isStringMatchingOrNull(toscaType, getToscaType());
+ }
+
+ boolean isSearchCriteriaMatched(Metadata metadata, String toscaType) {
+ return isSearchCriteriaMatched(metadata, toscaType, SdcPropertyNames.PROPERTY_NAME_UUID, SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID);
+ }
+
+ static boolean isStringMatchingOrNull(String currentUid, String uidInQuery) {
+ return uidInQuery == null || uidInQuery.equals(currentUid);
}
public static EntityQueryBuilder newBuilder(EntityTemplateType entityTemplateType) {
@@ -73,6 +92,12 @@ public abstract class EntityQuery {
return new EntityQueryBuilder(sdcType);
}
+ @Override
+ public String toString() {
+ return String.format("EntityType=%s, nodeTemplateType=%s, toscaType=%s, uUID=%s, customizationUUID=%s",
+ entityType, nodeTemplateType, toscaType, uUID, customizationUUID);
+ }
+
public static EntityQueryBuilder newBuilder(String toscaType) {
return new EntityQueryBuilder(toscaType);
}
@@ -97,8 +122,13 @@ public abstract class EntityQuery {
case POLICY:
entityQuery = new PolicyEntityQuery();
break;
+ case ALL:
+ entityQuery = new AllEntitiesQuery();
+ break;
default:
- throw new IllegalArgumentException("Wrong entity query type: " + entityTemplateType);
+ String wrongTypeMsg = (String.format("Wrong entity query type: %s", entityTemplateType));
+ logger.error(wrongTypeMsg);
+ throw new IllegalArgumentException(wrongTypeMsg);
}
}
diff --git a/src/main/java/org/onap/sdc/tosca/parser/elements/queries/GroupEntityQuery.java b/src/main/java/org/onap/sdc/tosca/parser/elements/queries/GroupEntityQuery.java
index 37a3ccd..8b1cd25 100644
--- a/src/main/java/org/onap/sdc/tosca/parser/elements/queries/GroupEntityQuery.java
+++ b/src/main/java/org/onap/sdc/tosca/parser/elements/queries/GroupEntityQuery.java
@@ -1,30 +1,55 @@
package org.onap.sdc.tosca.parser.elements.queries;
+import com.google.common.collect.Lists;
+import org.onap.sdc.tosca.parser.api.IEntityDetails;
+import org.onap.sdc.tosca.parser.elements.EntityDetailsFactory;
import org.onap.sdc.tosca.parser.enums.EntityTemplateType;
-import org.onap.sdc.toscaparser.api.EntityTemplate;
+import org.onap.sdc.toscaparser.api.Group;
+import org.onap.sdc.toscaparser.api.NodeTemplate;
+import org.onap.sdc.toscaparser.api.ToscaTemplate;
import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
/**
* Implements EntityQuery object for Groups
*/
public class GroupEntityQuery extends EntityQuery {
- public GroupEntityQuery() {
+ private static final String VF_MODULE_UUID = "vfModuleModelUUID";
+ private static final String VF_MODULE_CUSTOMIZATION_UUID = "vfModuleModelCustomizationUUID";
+
+ GroupEntityQuery() {
super(EntityTemplateType.GROUP, null, null);
}
@Override
- public List<EntityTemplate> searchByTopologyTemplate(TopologyTemplateQuery topologyTemplateQuery) {
- return null;
+ public List<IEntityDetails> getEntitiesFromTopologyTemplate(NodeTemplate nodeTemplate) {
+ if (nodeTemplate.getSubMappingToscaTemplate() != null) {
+ return convertGroupLisToEntityDetailsList(filter(nodeTemplate.getSubMappingToscaTemplate().getGroups()));
+ }
+ return Lists.newArrayList();
}
@Override
- public EntityTemplateType getType() {
- return EntityTemplateType.GROUP;
+ public List<IEntityDetails> getEntitiesFromService(ToscaTemplate toscaTemplate) {
+ return convertGroupLisToEntityDetailsList(filter(toscaTemplate.getGroups()));
}
- public GroupEntityQuery(String toscaType) {
+ GroupEntityQuery(String toscaType) {
super(EntityTemplateType.GROUP, null, toscaType);
}
+
+ static List<IEntityDetails> convertGroupLisToEntityDetailsList(Stream<Group> groups) {
+ return groups.map(gr->EntityDetailsFactory.createEntityDetails(EntityTemplateType.GROUP, gr))
+ .collect(Collectors.toList());
+ }
+
+ private Stream<Group> filter(List<Group> groupList) {
+ return groupList.stream()
+ .filter(gr->isSearchCriteriaMatched(gr.getMetadata(), gr.getType()) ||
+ isSearchCriteriaMatched(gr.getMetadata(), gr.getType(), VF_MODULE_UUID, VF_MODULE_CUSTOMIZATION_UUID));
+ }
+
}
diff --git a/src/main/java/org/onap/sdc/tosca/parser/elements/queries/NodeTemplateEntityQuery.java b/src/main/java/org/onap/sdc/tosca/parser/elements/queries/NodeTemplateEntityQuery.java
index 4e01bd8..b5a7a2e 100644
--- a/src/main/java/org/onap/sdc/tosca/parser/elements/queries/NodeTemplateEntityQuery.java
+++ b/src/main/java/org/onap/sdc/tosca/parser/elements/queries/NodeTemplateEntityQuery.java
@@ -1,34 +1,61 @@
package org.onap.sdc.tosca.parser.elements.queries;
+import com.google.common.collect.Lists;
+import org.onap.sdc.tosca.parser.api.IEntityDetails;
+import org.onap.sdc.tosca.parser.elements.EntityDetailsFactory;
import org.onap.sdc.tosca.parser.enums.EntityTemplateType;
import org.onap.sdc.tosca.parser.enums.SdcTypes;
-import org.onap.sdc.toscaparser.api.EntityTemplate;
+import org.onap.sdc.tosca.parser.impl.SdcPropertyNames;
+import org.onap.sdc.toscaparser.api.NodeTemplate;
+import org.onap.sdc.toscaparser.api.ToscaTemplate;
import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
/**
* Implements EntityQuery object for NodeTemplates
*/
public class NodeTemplateEntityQuery extends EntityQuery {
- public NodeTemplateEntityQuery() {
+ NodeTemplateEntityQuery() {
super(EntityTemplateType.NODE_TEMPLATE, null, null);
}
+ NodeTemplateEntityQuery(SdcTypes nodeTemplateType) {
+ super(EntityTemplateType.NODE_TEMPLATE, nodeTemplateType, null);
+ }
+
+ NodeTemplateEntityQuery(String toscaType) {
+ super(EntityTemplateType.NODE_TEMPLATE, null, toscaType);
+ }
+
@Override
- public EntityTemplateType getType() {
- return EntityTemplateType.NODE_TEMPLATE;
+ public List<IEntityDetails> getEntitiesFromTopologyTemplate(NodeTemplate nodeTemplate) {
+ if (nodeTemplate.getSubMappingToscaTemplate() != null) {
+ return convertNodeTemplatesListToEntityDetailsList(filter(nodeTemplate.getSubMappingToscaTemplate()
+ .getNodeTemplates()));
+ }
+ return Lists.newArrayList();
}
@Override
- public List<EntityTemplate> searchByTopologyTemplate(TopologyTemplateQuery topologyTemplateQuery) {
- return null;
+ public List<IEntityDetails> getEntitiesFromService(ToscaTemplate toscaTemplate) {
+ return convertNodeTemplatesListToEntityDetailsList(filter(toscaTemplate.getNodeTemplates()));
}
- public NodeTemplateEntityQuery(SdcTypes nodeTemplateType) {
- super(EntityTemplateType.NODE_TEMPLATE, nodeTemplateType, null);
+ static List<IEntityDetails> convertNodeTemplatesListToEntityDetailsList(Stream<NodeTemplate> nodeTemplates) {
+ return nodeTemplates
+ .map(nt->EntityDetailsFactory.createEntityDetails(EntityTemplateType.NODE_TEMPLATE, nt))
+ .collect(Collectors.toList());
}
- public NodeTemplateEntityQuery(String toscaType) {
- super(EntityTemplateType.NODE_TEMPLATE, null, toscaType);
+ private Stream<NodeTemplate> filter(List<NodeTemplate> nodeTemplateList) {
+ return nodeTemplateList.stream()
+ .filter(nt->isSearchCriteriaMatched(nt.getMetaData(), nt.getType()))
+ .filter(nt->getNodeTemplateType() == null ||
+ isStringMatchingOrNull(nt.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_TYPE),
+ getNodeTemplateType().getValue()));
}
+
+
}
diff --git a/src/main/java/org/onap/sdc/tosca/parser/elements/queries/PolicyEntityQuery.java b/src/main/java/org/onap/sdc/tosca/parser/elements/queries/PolicyEntityQuery.java
index 8ab5e4c..2a0a0ab 100644
--- a/src/main/java/org/onap/sdc/tosca/parser/elements/queries/PolicyEntityQuery.java
+++ b/src/main/java/org/onap/sdc/tosca/parser/elements/queries/PolicyEntityQuery.java
@@ -1,30 +1,52 @@
package org.onap.sdc.tosca.parser.elements.queries;
+import com.google.common.collect.Lists;
+import org.onap.sdc.tosca.parser.api.IEntityDetails;
+import org.onap.sdc.tosca.parser.elements.EntityDetailsFactory;
import org.onap.sdc.tosca.parser.enums.EntityTemplateType;
-import org.onap.sdc.toscaparser.api.EntityTemplate;
+import org.onap.sdc.toscaparser.api.NodeTemplate;
+import org.onap.sdc.toscaparser.api.Policy;
+import org.onap.sdc.toscaparser.api.ToscaTemplate;
import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
/**
* Implements EntityQuery object for Policies
*/
public class PolicyEntityQuery extends EntityQuery {
- public PolicyEntityQuery() {
+ PolicyEntityQuery() {
super(EntityTemplateType.POLICY, null, null);
}
+ PolicyEntityQuery(String toscaType) {
+ super(EntityTemplateType.POLICY, null, toscaType);
+ }
+
@Override
- public List<EntityTemplate> searchByTopologyTemplate(TopologyTemplateQuery topologyTemplateQuery) {
- return null;
+ public List<IEntityDetails> getEntitiesFromTopologyTemplate(NodeTemplate nodeTemplate) {
+ if (nodeTemplate.getOriginComponentTemplate() != null) {
+ return convertPolicyLisToEntityDetailsList(filter(nodeTemplate.getOriginComponentTemplate().getPolicies()));
+ }
+ return Lists.newArrayList();
}
@Override
- public EntityTemplateType getType() {
- return EntityTemplateType.POLICY;
+ public List<IEntityDetails> getEntitiesFromService(ToscaTemplate toscaTemplate) {
+ return convertPolicyLisToEntityDetailsList(filter(toscaTemplate.getPolicies()));
}
- public PolicyEntityQuery(String toscaType) {
- super(EntityTemplateType.POLICY, null, toscaType);
+ static List<IEntityDetails> convertPolicyLisToEntityDetailsList(Stream<Policy> policies) {
+ return policies
+ .map(p->EntityDetailsFactory.createEntityDetails(EntityTemplateType.POLICY, p))
+ .collect(Collectors.toList());
}
+
+ private Stream<Policy> filter(List<Policy> policyList) {
+ return policyList.stream()
+ .filter(p->isSearchCriteriaMatched(p.getMetaDataObj(), p.getType()));
+ }
+
}
diff --git a/src/main/java/org/onap/sdc/tosca/parser/elements/queries/TopologyTemplateQuery.java b/src/main/java/org/onap/sdc/tosca/parser/elements/queries/TopologyTemplateQuery.java
index 47b10a8..668345c 100644
--- a/src/main/java/org/onap/sdc/tosca/parser/elements/queries/TopologyTemplateQuery.java
+++ b/src/main/java/org/onap/sdc/tosca/parser/elements/queries/TopologyTemplateQuery.java
@@ -1,14 +1,22 @@
package org.onap.sdc.tosca.parser.elements.queries;
import org.onap.sdc.tosca.parser.enums.SdcTypes;
+import org.onap.sdc.tosca.parser.impl.SdcPropertyNames;
+import org.onap.sdc.toscaparser.api.NodeTemplate;
+import org.onap.sdc.toscaparser.api.elements.Metadata;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Objects;
/**
* This class describes a node template instance containing an entity searched and retrieved by SDC Tosca Parser API
* It is used as the API input parameter. See the {@link org.onap.sdc.tosca.parser.api.ISdcCsarHelper}
*/
public class TopologyTemplateQuery {
+ private static final Logger logger = LoggerFactory.getLogger(TopologyTemplateQuery.class.getName());
- public void setCustomizationUUID(String customizationUUID) {
+ void setCustomizationUUID(String customizationUUID) {
this.customizationUUID = customizationUUID;
}
@@ -21,6 +29,11 @@ public class TopologyTemplateQuery {
}
public static TopologyTemplateQueryBuilder newBuilder(SdcTypes sdcType) {
+ if (!SdcTypes.isComplex(sdcType.getValue())) {
+ String wrongTypeMsg = (String.format("Given type is not Topology template %s", sdcType));
+ logger.error(wrongTypeMsg);
+ throw new IllegalArgumentException(wrongTypeMsg);
+ }
return new TopologyTemplateQueryBuilder(sdcType);
}
@@ -32,6 +45,37 @@ public class TopologyTemplateQuery {
return customizationUUID;
}
+ public Boolean isMatchingSearchCriteria(NodeTemplate nodeTemplate) {
+ boolean isMatched = Objects.nonNull(nodeTemplate.getMetaData()) && isSearchedTemplate(nodeTemplate.getMetaData());
+ if(logger.isDebugEnabled()) {
+ logger.debug("Node template {} is{} matching search criteria", nodeTemplate.getName(), isMatched ? "" : " not");
+ }
+ return isMatched;
+ }
+
+ public boolean isSameSdcType(Metadata metadata) {
+ final String nodeType = metadata.getValue(SdcPropertyNames.PROPERTY_NAME_TYPE);
+ return Objects.nonNull(nodeType) && (
+ sdcType.getValue().equals(nodeType) || isServiceSearched(nodeType));
+ }
+
+ private boolean isSearchedTemplate(Metadata metadata) {
+ return isSameSdcType(metadata) &&
+ (sdcType == SdcTypes.SERVICE ||
+ //don't check customizationUUID for service
+ EntityQuery.isStringMatchingOrNull(metadata.getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID),
+ getCustomizationUUID()));
+ }
+
+ private boolean isServiceSearched(String nodeType) {
+ return sdcType == SdcTypes.SERVICE && SdcTypes.isComplex(nodeType);
+ }
+
+ @Override
+ public String toString() {
+ return String.format("sdcType=%s, customizationUUID=%s", sdcType.getValue(), customizationUUID);
+ }
+
public static class TopologyTemplateQueryBuilder {
private TopologyTemplateQuery topologyTemplateQuery;
private TopologyTemplateQueryBuilder(SdcTypes sdcType) { topologyTemplateQuery = new TopologyTemplateQuery(sdcType);}