summaryrefslogtreecommitdiffstats
path: root/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/utils/OperationArtifactUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/tosca/utils/OperationArtifactUtil.java')
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/tosca/utils/OperationArtifactUtil.java86
1 files changed, 76 insertions, 10 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/utils/OperationArtifactUtil.java b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/utils/OperationArtifactUtil.java
index 5d0b4466c6..b70ae90f7c 100644
--- a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/utils/OperationArtifactUtil.java
+++ b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/utils/OperationArtifactUtil.java
@@ -16,28 +16,94 @@
package org.openecomp.sdc.be.tosca.utils;
+import java.io.File;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import org.apache.commons.collections.MapUtils;
+import org.apache.commons.lang.WordUtils;
+import org.openecomp.sdc.be.datatypes.components.ResourceMetadataDataDefinition;
+import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
import org.openecomp.sdc.be.datatypes.elements.OperationDataDefinition;
+import org.openecomp.sdc.be.model.ArtifactDefinition;
+import org.openecomp.sdc.be.model.Component;
+import org.openecomp.sdc.be.model.InterfaceDefinition;
+import org.openecomp.sdc.be.model.Operation;
+import org.openecomp.sdc.be.model.Resource;
import org.openecomp.sdc.be.tosca.CsarUtils;
-
-import java.io.File;
+import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
+import org.openecomp.sdc.common.api.ArtifactTypeEnum;
public class OperationArtifactUtil {
+ public static final String BPMN_ARTIFACT_PATH = "BPMN";
+
+ private OperationArtifactUtil() {
+ //Hiding implicit public constructor
+ }
/**
* This method assumes that operation.getImplementation() is not NULL ( it should be verified by the caller method)
*
- * @param componentName component's normalized name
- * @param interfaceType the specific interface type
* @param operation the specific operation name
* @return the full path including file name for operation's artifacts
*/
+ static String createOperationArtifactPath(Component component, OperationDataDefinition operation,
+ boolean isAssociatedResourceComponent) {
+ if (!(component instanceof Resource)) {
+ return null;
+ }
+ if (isAssociatedResourceComponent) {
+ ResourceMetadataDataDefinition resourceMetadataDataDefinition = (ResourceMetadataDataDefinition)
+ component.getComponentMetadataDefinition().getMetadataDataDefinition();
+ return createOperationArtifactPathInService(resourceMetadataDataDefinition.getToscaResourceName() +
+ "_v" + component.getVersion(), operation);
+ }
+ return createOperationArtifactPathInResource(operation);
+ }
+
+
+ private static String createOperationArtifactPathInResource(OperationDataDefinition operation) {
+ return CsarUtils.ARTIFACTS + File.separator + WordUtils.capitalizeFully(ArtifactGroupTypeEnum.DEPLOYMENT.name())
+ + File.separator + ArtifactTypeEnum.WORKFLOW.name() + File.separator + BPMN_ARTIFACT_PATH
+ + File.separator + operation.getImplementation().getArtifactName();
+ }
+
+ private static String createOperationArtifactPathInService(String toscaComponentName,
+ OperationDataDefinition operation) {
+ return CsarUtils.ARTIFACTS + File.separator + toscaComponentName + File.separator +
+ WordUtils.capitalizeFully(ArtifactGroupTypeEnum.DEPLOYMENT.name()) + File.separator +
+ ArtifactTypeEnum.WORKFLOW.name() + File.separator + BPMN_ARTIFACT_PATH + File.separator +
+ operation.getImplementation().getArtifactName();
+ }
+
+ public static Map<String, ArtifactDefinition> getDistinctInterfaceOperationArtifactsByName(Component originComponent) {
+ Map<String, ArtifactDefinition> distinctInterfaceArtifactsByName = new HashMap<>();
+ Map<String, InterfaceDefinition> interfaces = originComponent.getInterfaces();
+ if (MapUtils.isEmpty(interfaces)) {
+ return distinctInterfaceArtifactsByName;
+ }
+ Map<String, ArtifactDefinition> interfaceArtifacts = interfaces.values().stream()
+ .flatMap(interfaceDefinition -> interfaceDefinition.getOperationsMap().values().stream())
+ .map(Operation::getImplementationArtifact)
+ .collect(Collectors.toMap(ArtifactDataDefinition::getUniqueId,
+ artifactDefinition -> artifactDefinition));
+ if (MapUtils.isNotEmpty(interfaceArtifacts)) {
+ Set<String> artifactNameSet = new HashSet<>();
+ for (Map.Entry<String, ArtifactDefinition> interfaceArtifactEntry : interfaceArtifacts.entrySet()) {
+ String artifactName = interfaceArtifactEntry.getValue().getArtifactName();
+ if (artifactNameSet.contains(artifactName)) {
+ continue;
+ }
+ distinctInterfaceArtifactsByName.put(interfaceArtifactEntry.getKey(),
+ interfaceArtifactEntry.getValue());
+ artifactNameSet.add(artifactName);
+ }
- public static String createOperationArtifactPath(String componentName, String interfaceType,
- OperationDataDefinition operation) {
- return CsarUtils.ARTIFACTS + File.separator + componentName + File.separator + interfaceType + File.separator
- + CsarUtils.DEPLOYMENT_ARTIFACTS_DIR + CsarUtils.WORKFLOW_ARTIFACT_DIR + operation
- .getImplementation()
- .getArtifactName();
+ }
+ return distinctInterfaceArtifactsByName;
}
}