2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.openecomp.sdc.be.info;
23 import org.apache.commons.lang3.tuple.ImmutablePair;
24 import org.openecomp.sdc.be.model.ArtifactDefinition;
26 import java.util.ArrayList;
27 import java.util.HashSet;
28 import java.util.List;
29 import java.util.Optional;
32 public class MergedArtifactInfo {
34 private List<ArtifactDefinition> createdArtifact;
35 private ArtifactTemplateInfo jsonArtifactTemplate;
36 private Set<String> parsetArtifactsNames;
38 public List<ArtifactDefinition> getCreatedArtifact() {
39 return createdArtifact;
42 public void setCreatedArtifact(List<ArtifactDefinition> createdArtifact) {
43 this.createdArtifact = createdArtifact;
44 parsetArtifactsNames = new HashSet<>();
45 parsetArtifactsNames.add(jsonArtifactTemplate.getFileName());
46 List<ArtifactTemplateInfo> relatedGroupTemplateList = jsonArtifactTemplate.getRelatedArtifactsInfo();
47 if (relatedGroupTemplateList != null && !relatedGroupTemplateList.isEmpty()) {
48 this.createArtifactsGroupSet(relatedGroupTemplateList, parsetArtifactsNames);
52 public ArtifactTemplateInfo getJsonArtifactTemplate() {
53 return jsonArtifactTemplate;
56 public void setJsonArtifactTemplate(ArtifactTemplateInfo jsonArtifactTemplate) {
57 this.jsonArtifactTemplate = jsonArtifactTemplate;
60 public List<ArtifactTemplateInfo> getListToAssociateArtifactToGroup() {
61 List<ArtifactTemplateInfo> resList = new ArrayList<>();
62 List<ArtifactTemplateInfo> relatedArtifacts = jsonArtifactTemplate.getRelatedArtifactsInfo();
63 if (relatedArtifacts != null && !relatedArtifacts.isEmpty()) {
64 getNewArtifactsInGroup(resList, relatedArtifacts);
69 public List<ArtifactDefinition> getListToDissotiateArtifactFromGroup(List<ArtifactDefinition> deletedArtifacts) {
70 List<ArtifactDefinition> resList = new ArrayList<>();
71 for (ArtifactDefinition artifactDefinition : createdArtifact) {
72 boolean isDissotiate = true;
73 if(parsetArtifactsNames.contains(artifactDefinition.getArtifactName())){
76 if (artifactDefinition.getGeneratedFromId() != null && !artifactDefinition.getGeneratedFromId().isEmpty()){
77 Optional<ArtifactDefinition> op = createdArtifact.stream().filter(p -> p.getUniqueId().equals(artifactDefinition.getGeneratedFromId())).findAny();
79 ArtifactDefinition generatedFromArt = op.get();
80 if(parsetArtifactsNames.contains(generatedFromArt.getArtifactName())){
91 boolean isDeleted = false;
92 for (ArtifactDefinition deletedArtifact : deletedArtifacts) {
93 if (artifactDefinition.getUniqueId().equalsIgnoreCase(deletedArtifact.getUniqueId())) {
100 resList.add(artifactDefinition);
108 public List<ImmutablePair<ArtifactDefinition, ArtifactTemplateInfo>> getListToUpdateArtifactInGroup() {
109 List<ImmutablePair<ArtifactDefinition, ArtifactTemplateInfo>> resList = new ArrayList<>();
110 for (ArtifactDefinition artifactDefinition : createdArtifact) {
111 if (artifactDefinition.getArtifactName().equalsIgnoreCase(jsonArtifactTemplate.getFileName())) {
112 resList.add(new ImmutablePair<>(artifactDefinition, jsonArtifactTemplate));
115 List<ArtifactTemplateInfo> relatedArtifacts = jsonArtifactTemplate.getRelatedArtifactsInfo();
116 if (relatedArtifacts != null && !relatedArtifacts.isEmpty()) {
117 getUpdateArtifactsInGroup(resList, relatedArtifacts);
122 private void getUpdateArtifactsInGroup(List<ImmutablePair<ArtifactDefinition, ArtifactTemplateInfo>> resList, List<ArtifactTemplateInfo> jsonArtifacts) {
124 for (ArtifactTemplateInfo artifactTemplateInfo : jsonArtifacts) {
126 for (ArtifactDefinition artifactDefinition : createdArtifact) {
127 if (artifactDefinition.getArtifactName().equalsIgnoreCase(artifactTemplateInfo.getFileName())) {
128 resList.add(new ImmutablePair<>(artifactDefinition, artifactTemplateInfo));
132 List<ArtifactTemplateInfo> relatedArtifacts = artifactTemplateInfo.getRelatedArtifactsInfo();
133 if (relatedArtifacts != null && !relatedArtifacts.isEmpty()) {
134 getUpdateArtifactsInGroup(resList, relatedArtifacts);
139 private void getNewArtifactsInGroup(List<ArtifactTemplateInfo> resList, List<ArtifactTemplateInfo> jsonArtifacts) {
141 for (ArtifactTemplateInfo artifactTemplateInfo : jsonArtifacts) {
142 boolean isNewArtifact = true;
143 for (ArtifactDefinition artifactDefinition : createdArtifact) {
144 if (artifactDefinition.getArtifactName().equalsIgnoreCase(artifactTemplateInfo.getFileName())) {
145 isNewArtifact = false;
149 resList.add(artifactTemplateInfo);
150 List<ArtifactTemplateInfo> relatedArtifacts = artifactTemplateInfo.getRelatedArtifactsInfo();
151 if (relatedArtifacts != null && !relatedArtifacts.isEmpty()) {
152 getNewArtifactsInGroup(resList, relatedArtifacts);
157 private void createArtifactsGroupSet(List<ArtifactTemplateInfo> parsedGroupTemplateList, Set<String> parsedArtifactsName) {
159 for (ArtifactTemplateInfo parsedGroupTemplate : parsedGroupTemplateList) {
160 parsedArtifactsName.add(parsedGroupTemplate.getFileName());
161 List<ArtifactTemplateInfo> relatedArtifacts = parsedGroupTemplate.getRelatedArtifactsInfo();
162 if (relatedArtifacts != null && !relatedArtifacts.isEmpty()) {
163 createArtifactsGroupSet(relatedArtifacts, parsedArtifactsName);