Sync Integ to Master
[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.config.ConfigurationManager;
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<ArtifactInfoImpl>();
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         ret.stream().forEach(ArtifactInfoImpl::updateArtifactTimeout);
80         return ret;
81
82     }
83
84     public static List<ArtifactInfoImpl> convertServiceArtifactToArtifactInfoImpl(Service service, Collection<ArtifactDefinition> list) {
85         List<ArtifactInfoImpl> ret = new ArrayList<ArtifactInfoImpl>();
86         Map<String, List<ArtifactDefinition>> artifactIdToDef = list.stream().collect(Collectors.groupingBy(ArtifactDefinition::getUniqueId));
87         if (list != null) {
88             for (ArtifactDefinition artifactDef : list) {
89                 String generatedFromUUID = null;
90                 if (artifactDef.getGeneratedFromId() != null && !artifactDef.getGeneratedFromId().isEmpty()) {
91                     ArtifactDefinition artifactFrom = artifactIdToDef.get(artifactDef.getGeneratedFromId()).get(0);
92                     generatedFromUUID = artifactFrom.getArtifactUUID();
93                 }
94                 ArtifactInfoImpl artifactInfoImpl = new ArtifactInfoImpl(artifactDef, generatedFromUUID, getUpdatedRequiredArtifactsFromNamesToUuids(artifactDef, service.getDeploymentArtifacts()));
95                 String artifactURL = ServiceDistributionArtifactsBuilder.buildServiceArtifactUrl(service, artifactDef.getArtifactName());
96                 artifactInfoImpl.setArtifactURL(artifactURL);
97                 ret.add(artifactInfoImpl);
98             }
99         }
100         return ret;
101
102     }
103
104     private static List<String> getUpdatedRequiredArtifactsFromNamesToUuids(ArtifactDefinition artifactDefinition, Map<String, ArtifactDefinition> artifacts) {
105         List<String> requiredArtifacts = null;
106         if (artifactDefinition != null && artifactDefinition.getRequiredArtifacts() != null && !artifactDefinition.getRequiredArtifacts().isEmpty() && artifacts != null && !artifacts.isEmpty()) {
107             requiredArtifacts = artifacts.values().stream().filter(art -> artifactDefinition.getRequiredArtifacts().contains(art.getArtifactName())).map(art -> art.getArtifactUUID()).collect(Collectors.toList());
108         }
109         return requiredArtifacts;
110     }
111
112     public String getArtifactName() {
113         return artifactName;
114     }
115
116     public void setArtifactName(String artifactName) {
117         this.artifactName = artifactName;
118     }
119
120     public ArtifactTypeEnum getArtifactType() {
121         return artifactType;
122     }
123
124     public void setArtifactType(ArtifactTypeEnum artifactType) {
125         this.artifactType = artifactType;
126     }
127
128     public String getArtifactURL() {
129         return artifactURL;
130     }
131
132     public void setArtifactURL(String artifactURL) {
133         this.artifactURL = artifactURL;
134     }
135
136     public String getArtifactChecksum() {
137         return artifactChecksum;
138     }
139
140     public void setArtifactChecksum(String artifactChecksum) {
141         this.artifactChecksum = artifactChecksum;
142     }
143
144     public String getArtifactDescription() {
145         return artifactDescription;
146     }
147
148     public void setArtifactDescription(String artifactDescription) {
149         this.artifactDescription = artifactDescription;
150     }
151
152     public Integer getArtifactTimeout() {
153         return artifactTimeout;
154     }
155
156     public void setArtifactTimeout(Integer artifactTimeout) {
157         this.artifactTimeout = artifactTimeout;
158     }
159
160     public List<String> getRelatedArtifacts() {
161         return relatedArtifacts;
162     }
163
164     public void setRelatedArtifacts(List<String> relatedArtifacts) {
165         this.relatedArtifacts = relatedArtifacts;
166     }
167
168     @Override
169     public String toString() {
170         return "ArtifactInfoImpl [artifactName=" + artifactName + ", artifactType=" + artifactType + ", artifactURL=" + artifactURL + ", artifactChecksum=" + artifactChecksum + ", artifactDescription=" + artifactDescription + ", artifactTimeout="
171                 + artifactTimeout + ", artifactUUID=" + artifactUUID + ", artifactVersion=" + artifactVersion + ", generatedFromUUID=" + generatedFromUUID + ", relatedArtifacts=" + relatedArtifacts + "]";
172     }
173
174     public String getArtifactUUID() {
175         return artifactUUID;
176     }
177
178     public void setArtifactUUID(String artifactUUID) {
179         this.artifactUUID = artifactUUID;
180     }
181
182     public String getArtifactVersion() {
183         return artifactVersion;
184     }
185
186     public void setArtifactVersion(String artifactVersion) {
187         this.artifactVersion = artifactVersion;
188     }
189
190     public String getGeneratedFromUUID() {
191         return generatedFromUUID;
192     }
193
194     public void setGeneratedFromUUID(String generatedFromUUID) {
195         this.generatedFromUUID = generatedFromUUID;
196     }
197     
198     public void updateArtifactTimeout(){
199         int currentConfigTimeout = ConfigurationManager.getConfigurationManager().getDistributionEngineConfiguration().getCurrentArtifactInstallationTimeout();
200         if(artifactTimeout == null || artifactTimeout < currentConfigTimeout)
201             artifactTimeout = currentConfigTimeout;
202     }
203
204 }