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