Catalog alignment
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / components / distribution / engine / ArtifactInfoImpl.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.components.distribution.engine;
22
23 import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
24 import org.openecomp.sdc.be.model.ArtifactDefinition;
25 import org.openecomp.sdc.be.model.ComponentInstance;
26 import org.openecomp.sdc.be.model.Service;
27 import org.openecomp.sdc.common.api.ArtifactTypeEnum;
28
29 import java.util.ArrayList;
30 import java.util.Collection;
31 import java.util.List;
32 import java.util.Map;
33 import java.util.stream.Collectors;
34
35 public class ArtifactInfoImpl implements IArtifactInfo {
36
37     private String artifactName;
38     private ArtifactTypeEnum artifactType;
39     private String artifactURL;
40     private String artifactChecksum;
41     private String artifactDescription;
42     private Integer artifactTimeout;
43     private String artifactUUID;
44     private String artifactVersion;
45     private String generatedFromUUID;
46     private List<String> relatedArtifacts;
47
48     public ArtifactInfoImpl() {
49     }
50
51     private ArtifactInfoImpl(ArtifactDefinition artifactDef, String generatedFromUUID, List<String> relatedArtifacts) {
52         artifactName = artifactDef.getArtifactName();
53         artifactType = ArtifactTypeEnum.findType(artifactDef.getArtifactType());
54         artifactChecksum = artifactDef.getArtifactChecksum();
55         artifactDescription = artifactDef.getDescription();
56         artifactTimeout = artifactDef.getTimeout();
57         artifactUUID = artifactDef.getArtifactUUID();
58         artifactVersion = artifactDef.getArtifactVersion();
59         this.relatedArtifacts = relatedArtifacts;
60         this.generatedFromUUID = generatedFromUUID;
61     }
62
63     public static List<ArtifactInfoImpl> convertToArtifactInfoImpl(Service service, ComponentInstance resourceInstance, Collection<ArtifactDefinition> list) {
64         List<ArtifactInfoImpl> ret = new ArrayList<>();
65         Map<String, List<ArtifactDefinition>> artifactIdToDef = list.stream().collect(Collectors.groupingBy(ArtifactDefinition::getUniqueId));
66         if (list != null) {
67             for (ArtifactDefinition artifactDef : list) {
68                 String generatedFromUUID = null;
69                 if (artifactDef.getGeneratedFromId() != null && !artifactDef.getGeneratedFromId().isEmpty()) {
70                     ArtifactDefinition artifactFrom = artifactIdToDef.get(artifactDef.getGeneratedFromId()).get(0);
71                     generatedFromUUID = artifactFrom.getArtifactUUID();
72                 }
73                 ArtifactInfoImpl artifactInfoImpl = new ArtifactInfoImpl(artifactDef, generatedFromUUID, getUpdatedRequiredArtifactsFromNamesToUuids(artifactDef, resourceInstance.getDeploymentArtifacts()));
74                 String artifactURL = ServiceDistributionArtifactsBuilder.buildResourceInstanceArtifactUrl(service, resourceInstance, artifactDef.getArtifactName());
75                 artifactInfoImpl.setArtifactURL(artifactURL);
76                 ret.add(artifactInfoImpl);
77             }
78         }
79         return ret;
80
81     }
82
83     public static List<ArtifactInfoImpl> convertServiceArtifactToArtifactInfoImpl(Service service, Collection<ArtifactDefinition> list) {
84         List<ArtifactInfoImpl> ret = new ArrayList<>();
85         Map<String, List<ArtifactDefinition>> artifactIdToDef = list.stream().collect(Collectors.groupingBy(ArtifactDefinition::getUniqueId));
86         if (list != null) {
87             for (ArtifactDefinition artifactDef : list) {
88                 String generatedFromUUID = null;
89                 if (artifactDef.getGeneratedFromId() != null && !artifactDef.getGeneratedFromId().isEmpty()) {
90                     ArtifactDefinition artifactFrom = artifactIdToDef.get(artifactDef.getGeneratedFromId()).get(0);
91                     generatedFromUUID = artifactFrom.getArtifactUUID();
92                 }
93                 ArtifactInfoImpl artifactInfoImpl = new ArtifactInfoImpl(artifactDef, generatedFromUUID, getUpdatedRequiredArtifactsFromNamesToUuids(artifactDef, service.getDeploymentArtifacts()));
94                 String artifactURL = ServiceDistributionArtifactsBuilder.buildServiceArtifactUrl(service, artifactDef.getArtifactName());
95                 artifactInfoImpl.setArtifactURL(artifactURL);
96                 ret.add(artifactInfoImpl);
97             }
98         }
99         return ret;
100
101     }
102
103     private static List<String> getUpdatedRequiredArtifactsFromNamesToUuids(ArtifactDefinition artifactDefinition, Map<String, ArtifactDefinition> artifacts) {
104         List<String> requiredArtifacts = null;
105         if (artifactDefinition != null && artifactDefinition.getRequiredArtifacts() != null && !artifactDefinition.getRequiredArtifacts().isEmpty() && artifacts != null && !artifacts.isEmpty()) {
106             requiredArtifacts = artifacts.values().stream().filter(art -> artifactDefinition.getRequiredArtifacts().contains(art.getArtifactName())).map(ArtifactDataDefinition::getArtifactUUID).collect(Collectors.toList());
107         }
108         return requiredArtifacts;
109     }
110
111     public String getArtifactName() {
112         return artifactName;
113     }
114
115     public void setArtifactName(String artifactName) {
116         this.artifactName = artifactName;
117     }
118
119     public ArtifactTypeEnum getArtifactType() {
120         return artifactType;
121     }
122
123     public void setArtifactType(ArtifactTypeEnum artifactType) {
124         this.artifactType = artifactType;
125     }
126
127     public String getArtifactURL() {
128         return artifactURL;
129     }
130
131     public void setArtifactURL(String artifactURL) {
132         this.artifactURL = artifactURL;
133     }
134
135     public String getArtifactChecksum() {
136         return artifactChecksum;
137     }
138
139     public void setArtifactChecksum(String artifactChecksum) {
140         this.artifactChecksum = artifactChecksum;
141     }
142
143     public String getArtifactDescription() {
144         return artifactDescription;
145     }
146
147     public void setArtifactDescription(String artifactDescription) {
148         this.artifactDescription = artifactDescription;
149     }
150
151     public Integer getArtifactTimeout() {
152         return artifactTimeout;
153     }
154
155     public void setArtifactTimeout(Integer artifactTimeout) {
156         this.artifactTimeout = artifactTimeout;
157     }
158
159     public List<String> getRelatedArtifacts() {
160         return relatedArtifacts;
161     }
162
163     public void setRelatedArtifacts(List<String> relatedArtifacts) {
164         this.relatedArtifacts = relatedArtifacts;
165     }
166
167     @Override
168     public String toString() {
169         return "ArtifactInfoImpl [artifactName=" + artifactName + ", artifactType=" + artifactType + ", artifactURL=" + artifactURL + ", artifactChecksum=" + artifactChecksum + ", artifactDescription=" + artifactDescription + ", artifactTimeout="
170                 + artifactTimeout + ", artifactUUID=" + artifactUUID + ", artifactVersion=" + artifactVersion + ", generatedFromUUID=" + generatedFromUUID + ", relatedArtifacts=" + relatedArtifacts + "]";
171     }
172
173     public String getArtifactUUID() {
174         return artifactUUID;
175     }
176
177     public void setArtifactUUID(String artifactUUID) {
178         this.artifactUUID = artifactUUID;
179     }
180
181     public String getArtifactVersion() {
182         return artifactVersion;
183     }
184
185     public void setArtifactVersion(String artifactVersion) {
186         this.artifactVersion = artifactVersion;
187     }
188
189     public String getGeneratedFromUUID() {
190         return generatedFromUUID;
191     }
192
193     public void setGeneratedFromUUID(String generatedFromUUID) {
194         this.generatedFromUUID = generatedFromUUID;
195     }
196
197 }