Reformat catalog-be
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / datamodel / utils / ArtifactUtils.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20 package org.openecomp.sdc.be.datamodel.utils;
21
22 import java.util.ArrayList;
23 import java.util.HashMap;
24 import java.util.List;
25 import java.util.Map;
26 import java.util.Map.Entry;
27 import java.util.stream.Collectors;
28 import org.apache.commons.codec.binary.Base64;
29 import org.openecomp.sdc.be.info.ArtifactTemplateInfo;
30 import org.openecomp.sdc.be.model.ArtifactDefinition;
31 import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
32 import org.openecomp.sdc.common.api.ArtifactTypeEnum;
33 import org.openecomp.sdc.common.api.Constants;
34 import org.openecomp.sdc.common.util.ValidationUtils;
35
36 public class ArtifactUtils {
37
38     public static ArtifactDefinition findMasterArtifact(Map<String, ArtifactDefinition> deplymentArtifact, List<ArtifactDefinition> artifacts,
39                                                         List<String> artifactsList) {
40         for (String artifactUid : artifactsList) {
41             for (Entry<String, ArtifactDefinition> entry : deplymentArtifact.entrySet()) {
42                 ArtifactDefinition artifact = entry.getValue();
43                 if (artifactUid.equalsIgnoreCase(artifact.getUniqueId())) {
44                     artifacts.add(artifact);
45                 }
46             }
47         }
48         if (artifacts.size() == 1) {
49             return artifacts.get(0);
50         }
51         ArtifactDefinition masterArtifact = null;
52         for (ArtifactDefinition artifactInfo : artifacts) {
53             String atrifactType = artifactInfo.getArtifactType();
54             if (atrifactType.equalsIgnoreCase(ArtifactTypeEnum.HEAT_VOL.getType()) || atrifactType
55                 .equalsIgnoreCase(ArtifactTypeEnum.HEAT_NET.getType())) {
56                 masterArtifact = artifactInfo;
57                 continue;
58             }
59             if (atrifactType.equalsIgnoreCase(ArtifactTypeEnum.HEAT.getType())) {
60                 masterArtifact = artifactInfo;
61                 break;
62             }
63         }
64         return masterArtifact;
65     }
66
67     public static Map<String, Object> buildJsonForUpdateArtifact(String artifactId, String artifactName, String artifactType,
68                                                                  ArtifactGroupTypeEnum artifactGroupType, String label, String displayName,
69                                                                  String description, byte[] artifactContentent,
70                                                                  List<ArtifactTemplateInfo> updatedRequiredArtifacts, boolean isFromCsar) {
71         Map<String, Object> json = new HashMap<>();
72         if (artifactId != null && !artifactId.isEmpty()) {
73             json.put(Constants.ARTIFACT_ID, artifactId);
74         }
75         json.put(Constants.ARTIFACT_NAME, artifactName);
76         json.put(Constants.ARTIFACT_TYPE, artifactType);
77         json.put(Constants.ARTIFACT_DESCRIPTION, description);
78         json.put(Constants.IS_FROM_CSAR, isFromCsar);
79         String encodedPayload = Base64.encodeBase64String(artifactContentent);
80         json.put(Constants.ARTIFACT_PAYLOAD_DATA, encodedPayload);
81         json.put(Constants.ARTIFACT_DISPLAY_NAME, displayName);
82         json.put(Constants.ARTIFACT_LABEL, label);
83         json.put(Constants.ARTIFACT_GROUP_TYPE, artifactGroupType.getType());
84         json.put(Constants.REQUIRED_ARTIFACTS, (updatedRequiredArtifacts == null || updatedRequiredArtifacts.isEmpty()) ? new ArrayList<>()
85             : updatedRequiredArtifacts.stream().filter(
86                 e -> e.getType().equals(ArtifactTypeEnum.HEAT_ARTIFACT.getType()) || e.getType().equals(ArtifactTypeEnum.HEAT_NESTED.getType()))
87                 .map(ArtifactTemplateInfo::getFileName).collect(Collectors.toList()));
88         return json;
89     }
90
91     public static Map<String, Object> buildJsonForArtifact(ArtifactTemplateInfo artifactTemplateInfo, byte[] artifactContentent,
92                                                            int atrifactLabelCounter, boolean isFromcsar) {
93         Map<String, Object> json = new HashMap<>();
94         String artifactName = artifactTemplateInfo.getFileName();
95         json.put(Constants.ARTIFACT_NAME, artifactTemplateInfo.getFileName());
96         json.put(Constants.ARTIFACT_TYPE, artifactTemplateInfo.getType());
97         json.put(Constants.ARTIFACT_DESCRIPTION, "created from csar");
98         json.put(Constants.IS_FROM_CSAR, isFromcsar);
99         String encodedPayload = Base64.encodeBase64String(artifactContentent);
100         json.put(Constants.ARTIFACT_PAYLOAD_DATA, encodedPayload);
101         String displayName = artifactName;
102         if (artifactName.lastIndexOf(".") > 0) {
103             displayName = artifactName.substring(0, artifactName.lastIndexOf("."));
104         }
105         json.put(Constants.ARTIFACT_DISPLAY_NAME, displayName);
106         String label = ValidationUtils.normalizeArtifactLabel(artifactTemplateInfo.getType() + atrifactLabelCounter);
107         json.put(Constants.ARTIFACT_LABEL, label);
108         json.put(Constants.ARTIFACT_GROUP_TYPE, ArtifactGroupTypeEnum.DEPLOYMENT.getType());
109         List<ArtifactTemplateInfo> requiredArtifacts = artifactTemplateInfo.getRelatedArtifactsInfo();
110         json.put(Constants.REQUIRED_ARTIFACTS, (requiredArtifacts == null || requiredArtifacts.isEmpty()) ? new ArrayList<>()
111             : requiredArtifacts.stream().filter(
112                 e -> e.getType().equals(ArtifactTypeEnum.HEAT_ARTIFACT.getType()) || e.getType().equals(ArtifactTypeEnum.HEAT_NESTED.getType()))
113                 .map(ArtifactTemplateInfo::getFileName).collect(Collectors.toList()));
114         return json;
115     }
116
117     public static ArtifactDefinition findArtifactInList(List<ArtifactDefinition> createdArtifacts, String artifactId) {
118         for (ArtifactDefinition artifact : createdArtifacts) {
119             if (artifact.getUniqueId().equals(artifactId)) {
120                 return artifact;
121             }
122         }
123         return null;
124     }
125 }