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;
28 public class MergedArtifactInfo {
30 private List<ArtifactDefinition> createdArtifact;
31 private ArtifactTemplateInfo jsonArtifactTemplate;
32 private Set<String> parsetArtifactsNames;
34 public List<ArtifactDefinition> getCreatedArtifact() {
35 return createdArtifact;
38 public void setCreatedArtifact(List<ArtifactDefinition> createdArtifact) {
39 this.createdArtifact = createdArtifact;
40 parsetArtifactsNames = new HashSet<>();
41 parsetArtifactsNames.add(jsonArtifactTemplate.getFileName());
42 List<ArtifactTemplateInfo> relatedGroupTemplateList = jsonArtifactTemplate.getRelatedArtifactsInfo();
43 if (relatedGroupTemplateList != null && !relatedGroupTemplateList.isEmpty()) {
44 this.createArtifactsGroupSet(relatedGroupTemplateList, parsetArtifactsNames);
49 public ArtifactTemplateInfo getJsonArtifactTemplate() {
50 return jsonArtifactTemplate;
53 public void setJsonArtifactTemplate(ArtifactTemplateInfo jsonArtifactTemplate) {
54 this.jsonArtifactTemplate = jsonArtifactTemplate;
57 public List<ArtifactTemplateInfo> getListToAssociateArtifactToGroup() {
58 List<ArtifactTemplateInfo> resList = new ArrayList<>();
59 List<ArtifactTemplateInfo> relatedArtifacts = jsonArtifactTemplate.getRelatedArtifactsInfo();
60 if (relatedArtifacts != null && !relatedArtifacts.isEmpty()) {
61 getNewArtifactsInGroup(resList, relatedArtifacts);
66 public List<ArtifactDefinition> getListToDissotiateArtifactFromGroup(List<ArtifactDefinition> deletedArtifacts) {
67 List<ArtifactDefinition> resList = new ArrayList<>();
68 for (ArtifactDefinition artifactDefinition : createdArtifact) {
69 boolean isDissotiate = true;
70 if(parsetArtifactsNames.contains(artifactDefinition.getArtifactName())){
73 if (artifactDefinition.getGeneratedFromId() != null && !artifactDefinition.getGeneratedFromId().isEmpty()){
74 Optional<ArtifactDefinition> op = createdArtifact.stream().filter(p -> p.getUniqueId().equals(artifactDefinition.getGeneratedFromId())).findAny();
76 ArtifactDefinition generatedFromArt = op.get();
77 if(parsetArtifactsNames.contains(generatedFromArt.getArtifactName())){
88 boolean isDeleted = false;
89 for (ArtifactDefinition deletedArtifact : deletedArtifacts) {
90 if (artifactDefinition.getUniqueId().equalsIgnoreCase(deletedArtifact.getUniqueId())) {
97 resList.add(artifactDefinition);
105 public List<ImmutablePair<ArtifactDefinition, ArtifactTemplateInfo>> getListToUpdateArtifactInGroup() {
106 List<ImmutablePair<ArtifactDefinition, ArtifactTemplateInfo>> resList = new ArrayList<>();
107 for (ArtifactDefinition artifactDefinition : createdArtifact) {
108 if (artifactDefinition.getArtifactName().equalsIgnoreCase(jsonArtifactTemplate.getFileName())) {
109 resList.add(new ImmutablePair<>(artifactDefinition, jsonArtifactTemplate));
112 List<ArtifactTemplateInfo> relatedArtifacts = jsonArtifactTemplate.getRelatedArtifactsInfo();
113 if (relatedArtifacts != null && !relatedArtifacts.isEmpty()) {
114 getUpdateArtifactsInGroup(resList, relatedArtifacts);
119 private void getUpdateArtifactsInGroup(List<ImmutablePair<ArtifactDefinition, ArtifactTemplateInfo>> resList, List<ArtifactTemplateInfo> jsonArtifacts) {
121 for (ArtifactTemplateInfo artifactTemplateInfo : jsonArtifacts) {
123 for (ArtifactDefinition artifactDefinition : createdArtifact) {
124 if (artifactDefinition.getArtifactName().equalsIgnoreCase(artifactTemplateInfo.getFileName())) {
125 resList.add(new ImmutablePair<>(artifactDefinition, artifactTemplateInfo));
129 List<ArtifactTemplateInfo> relatedArtifacts = artifactTemplateInfo.getRelatedArtifactsInfo();
130 if (relatedArtifacts != null && !relatedArtifacts.isEmpty()) {
131 getUpdateArtifactsInGroup(resList, relatedArtifacts);
136 private void getNewArtifactsInGroup(List<ArtifactTemplateInfo> resList, List<ArtifactTemplateInfo> jsonArtifacts) {
138 for (ArtifactTemplateInfo artifactTemplateInfo : jsonArtifacts) {
139 boolean isNewArtifact = true;
140 for (ArtifactDefinition artifactDefinition : createdArtifact) {
141 if (artifactDefinition.getArtifactName().equalsIgnoreCase(artifactTemplateInfo.getFileName())) {
142 isNewArtifact = false;
146 resList.add(artifactTemplateInfo);
147 List<ArtifactTemplateInfo> relatedArtifacts = artifactTemplateInfo.getRelatedArtifactsInfo();
148 if (relatedArtifacts != null && !relatedArtifacts.isEmpty()) {
149 getNewArtifactsInGroup(resList, relatedArtifacts);
154 private void createArtifactsGroupSet(List<ArtifactTemplateInfo> parsedGroupTemplateList, Set<String> parsedArtifactsName) {
156 for (ArtifactTemplateInfo parsedGroupTemplate : parsedGroupTemplateList) {
157 parsedArtifactsName.add(parsedGroupTemplate.getFileName());
158 List<ArtifactTemplateInfo> relatedArtifacts = parsedGroupTemplate.getRelatedArtifactsInfo();
159 if (relatedArtifacts != null && !relatedArtifacts.isEmpty()) {
160 createArtifactsGroupSet(relatedArtifacts, parsedArtifactsName);