Sync Integ to Master
[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
21 package org.openecomp.sdc.be.datamodel.utils;
22
23 import org.apache.commons.codec.binary.Base64;
24 import org.openecomp.sdc.be.info.ArtifactTemplateInfo;
25 import org.openecomp.sdc.be.model.ArtifactDefinition;
26 import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
27 import org.openecomp.sdc.common.api.ArtifactTypeEnum;
28 import org.openecomp.sdc.common.api.Constants;
29 import org.openecomp.sdc.common.util.ValidationUtils;
30
31 import java.util.ArrayList;
32 import java.util.HashMap;
33 import java.util.List;
34 import java.util.Map;
35 import java.util.Map.Entry;
36 import java.util.stream.Collectors;
37
38 import org.openecomp.sdc.common.api.Constants;
39 import org.openecomp.sdc.common.util.ValidationUtils;
40 public class ArtifactUtils {
41
42     public static ArtifactDefinition findMasterArtifact(Map<String, ArtifactDefinition> deplymentArtifact, List<ArtifactDefinition> artifacts, List<String> artifactsList) {
43         for (String artifactUid : artifactsList) {
44             for (Entry<String, ArtifactDefinition> entry : deplymentArtifact.entrySet()) {
45                 ArtifactDefinition artifact = entry.getValue();
46                 if (artifactUid.equalsIgnoreCase(artifact.getUniqueId())) {
47                     artifacts.add(artifact);
48                 }
49
50             }
51         }
52         if (artifacts.size() == 1) {
53             return artifacts.get(0);
54         }
55         ArtifactDefinition masterArtifact = null;
56         for (ArtifactDefinition artifactInfo : artifacts) {
57             String atrifactType = artifactInfo.getArtifactType();
58             if (atrifactType.equalsIgnoreCase(ArtifactTypeEnum.HEAT_VOL.getType()) || atrifactType.equalsIgnoreCase(ArtifactTypeEnum.HEAT_NET.getType())) {
59                 masterArtifact = artifactInfo;
60                 continue;
61             }
62             if (atrifactType.equalsIgnoreCase(ArtifactTypeEnum.HEAT.getType())) {
63                 masterArtifact = artifactInfo;
64                 break;
65             }
66         }
67         return masterArtifact;
68     }
69
70     public static Map<String, Object> buildJsonForUpdateArtifact(String artifactId, String artifactName, String artifactType,
71                                                                  ArtifactGroupTypeEnum artifactGroupType, String label, String displayName, String description,
72                                                                  byte[] artifactContentent, List<ArtifactTemplateInfo> updatedRequiredArtifacts, boolean isFromCsar) {
73
74         Map<String, Object> json = new HashMap<String, Object>();
75         if (artifactId != null && !artifactId.isEmpty())
76             json.put(Constants.ARTIFACT_ID, artifactId);
77
78         json.put(Constants.ARTIFACT_NAME, artifactName);
79         json.put(Constants.ARTIFACT_TYPE, artifactType);
80         json.put(Constants.ARTIFACT_DESCRIPTION, description);
81         json.put(Constants.IS_FROM_CSAR, isFromCsar);
82
83         String encodedPayload = new String(artifactContentent);
84
85
86         encodedPayload = Base64.encodeBase64String(artifactContentent);
87         // }
88
89         json.put(Constants.ARTIFACT_PAYLOAD_DATA, encodedPayload);
90         json.put(Constants.ARTIFACT_DISPLAY_NAME, displayName);
91         json.put(Constants.ARTIFACT_LABEL, label);
92         json.put(Constants.ARTIFACT_GROUP_TYPE, artifactGroupType.getType());
93         json.put(Constants.REQUIRED_ARTIFACTS,
94                 (updatedRequiredArtifacts == null || updatedRequiredArtifacts.isEmpty()) ? new ArrayList<>()
95                         : updatedRequiredArtifacts.stream()
96                                 .filter(e -> e.getType().equals(ArtifactTypeEnum.HEAT_ARTIFACT.getType())
97                                         || e.getType().equals(ArtifactTypeEnum.HEAT_NESTED.getType()))
98                                 .map(e -> e.getFileName()).collect(Collectors.toList()));
99         return json;
100     }
101
102     public static Map<String, Object> buildJsonForArtifact(ArtifactTemplateInfo artifactTemplateInfo,
103             byte[] artifactContentent, int atrifactLabelCounter) {
104
105         Map<String, Object> json = new HashMap<String, Object>();
106         String artifactName = artifactTemplateInfo.getFileName();
107
108         json.put(Constants.ARTIFACT_NAME, artifactTemplateInfo.getFileName());
109         json.put(Constants.ARTIFACT_TYPE, artifactTemplateInfo.getType());
110         json.put(Constants.ARTIFACT_DESCRIPTION, "created from csar");
111
112         String encodedPayload = Base64.encodeBase64String(artifactContentent);
113
114         json.put(Constants.ARTIFACT_PAYLOAD_DATA, encodedPayload);
115         String displayName = artifactName;
116         if (artifactName.lastIndexOf(".") > 0)
117             displayName = artifactName.substring(0, artifactName.lastIndexOf("."));
118         json.put(Constants.ARTIFACT_DISPLAY_NAME, displayName);
119         String label = ValidationUtils.normalizeArtifactLabel(artifactTemplateInfo.getType() + atrifactLabelCounter);
120         json.put(Constants.ARTIFACT_LABEL, label);
121         json.put(Constants.ARTIFACT_GROUP_TYPE, ArtifactGroupTypeEnum.DEPLOYMENT.getType());
122         List<ArtifactTemplateInfo> requiredArtifacts = artifactTemplateInfo.getRelatedArtifactsInfo();
123         json.put(Constants.REQUIRED_ARTIFACTS,
124                 (requiredArtifacts == null || requiredArtifacts.isEmpty()) ? new ArrayList<>()
125                         : requiredArtifacts.stream()
126                                 .filter(e -> e.getType().equals(ArtifactTypeEnum.HEAT_ARTIFACT.getType())
127                                         || e.getType().equals(ArtifactTypeEnum.HEAT_NESTED.getType()))
128                                 .map(e -> e.getFileName()).collect(Collectors.toList()));
129         return json;
130     }
131
132     public static ArtifactDefinition findArtifactInList(List<ArtifactDefinition> createdArtifacts, String artifactId) {
133         for (ArtifactDefinition artifact : createdArtifacts) {
134             if (artifact.getUniqueId().equals(artifactId)) {
135                 return artifact;
136             }
137         }
138         return null;
139     }
140 }