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);
48 public ArtifactTemplateInfo getJsonArtifactTemplate() {
49 return jsonArtifactTemplate;
52 public void setJsonArtifactTemplate(ArtifactTemplateInfo jsonArtifactTemplate) {
53 this.jsonArtifactTemplate = jsonArtifactTemplate;
56 public List<ArtifactTemplateInfo> getListToAssociateArtifactToGroup() {
57 List<ArtifactTemplateInfo> resList = new ArrayList<>();
58 List<ArtifactTemplateInfo> relatedArtifacts = jsonArtifactTemplate.getRelatedArtifactsInfo();
59 if (relatedArtifacts != null && !relatedArtifacts.isEmpty()) {
60 getNewArtifactsInGroup(resList, relatedArtifacts);
65 public List<ArtifactDefinition> getListToDissotiateArtifactFromGroup(List<ArtifactDefinition> deletedArtifacts) {
66 List<ArtifactDefinition> resList = new ArrayList<>();
67 for (ArtifactDefinition artifactDefinition : createdArtifact) {
68 boolean isDissotiate = true;
69 if(parsetArtifactsNames.contains(artifactDefinition.getArtifactName())){
72 if (artifactDefinition.getGeneratedFromId() != null && !artifactDefinition.getGeneratedFromId().isEmpty()){
73 Optional<ArtifactDefinition> op = createdArtifact.stream().filter(p -> p.getUniqueId().equals(artifactDefinition.getGeneratedFromId())).findAny();
75 ArtifactDefinition generatedFromArt = op.get();
76 if(parsetArtifactsNames.contains(generatedFromArt.getArtifactName())){
87 boolean isDeleted = false;
88 for (ArtifactDefinition deletedArtifact : deletedArtifacts) {
89 if (artifactDefinition.getUniqueId().equalsIgnoreCase(deletedArtifact.getUniqueId())) {
96 resList.add(artifactDefinition);
104 public List<ImmutablePair<ArtifactDefinition, ArtifactTemplateInfo>> getListToUpdateArtifactInGroup() {
105 List<ImmutablePair<ArtifactDefinition, ArtifactTemplateInfo>> resList = new ArrayList<>();
106 for (ArtifactDefinition artifactDefinition : createdArtifact) {
107 if (artifactDefinition.getArtifactName().equalsIgnoreCase(jsonArtifactTemplate.getFileName())) {
108 resList.add(new ImmutablePair<>(artifactDefinition, jsonArtifactTemplate));
111 List<ArtifactTemplateInfo> relatedArtifacts = jsonArtifactTemplate.getRelatedArtifactsInfo();
112 if (relatedArtifacts != null && !relatedArtifacts.isEmpty()) {
113 getUpdateArtifactsInGroup(resList, relatedArtifacts);
118 private void getUpdateArtifactsInGroup(List<ImmutablePair<ArtifactDefinition, ArtifactTemplateInfo>> resList, List<ArtifactTemplateInfo> jsonArtifacts) {
120 for (ArtifactTemplateInfo artifactTemplateInfo : jsonArtifacts) {
122 for (ArtifactDefinition artifactDefinition : createdArtifact) {
123 if (artifactDefinition.getArtifactName().equalsIgnoreCase(artifactTemplateInfo.getFileName())) {
124 resList.add(new ImmutablePair<>(artifactDefinition, artifactTemplateInfo));
128 List<ArtifactTemplateInfo> relatedArtifacts = artifactTemplateInfo.getRelatedArtifactsInfo();
129 if (relatedArtifacts != null && !relatedArtifacts.isEmpty()) {
130 getUpdateArtifactsInGroup(resList, relatedArtifacts);
135 private void getNewArtifactsInGroup(List<ArtifactTemplateInfo> resList, List<ArtifactTemplateInfo> jsonArtifacts) {
137 for (ArtifactTemplateInfo artifactTemplateInfo : jsonArtifacts) {
138 boolean isNewArtifact = true;
139 for (ArtifactDefinition artifactDefinition : createdArtifact) {
140 if (artifactDefinition.getArtifactName().equalsIgnoreCase(artifactTemplateInfo.getFileName())) {
141 isNewArtifact = false;
145 resList.add(artifactTemplateInfo);
146 List<ArtifactTemplateInfo> relatedArtifacts = artifactTemplateInfo.getRelatedArtifactsInfo();
147 if (relatedArtifacts != null && !relatedArtifacts.isEmpty()) {
148 getNewArtifactsInGroup(resList, relatedArtifacts);
153 private void createArtifactsGroupSet(List<ArtifactTemplateInfo> parsedGroupTemplateList, Set<String> parsedArtifactsName) {
155 for (ArtifactTemplateInfo parsedGroupTemplate : parsedGroupTemplateList) {
156 parsedArtifactsName.add(parsedGroupTemplate.getFileName());
157 List<ArtifactTemplateInfo> relatedArtifacts = parsedGroupTemplate.getRelatedArtifactsInfo();
158 if (relatedArtifacts != null && !relatedArtifacts.isEmpty()) {
159 createArtifactsGroupSet(relatedArtifacts, parsedArtifactsName);