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.heat.services.manifest;
23 import org.apache.commons.collections4.CollectionUtils;
24 import org.openecomp.sdc.heat.datatypes.manifest.FileData;
25 import org.openecomp.sdc.heat.datatypes.manifest.ManifestContent;
27 import java.util.HashMap;
28 import java.util.HashSet;
29 import java.util.List;
35 * The type Manifest util.
37 public class ManifestUtil {
41 * Gets file and its env.
43 * @param manifestContent the manifest content
44 * @return the file and its env
46 public static Map<String, FileData> getFileAndItsEnv(ManifestContent manifestContent) {
47 Map<String, FileData> fileEnvMap = new HashMap<>();
48 scanFileEnvMap(null, manifestContent.getData(), fileEnvMap);
56 * @param fileData the file data
57 * @param fileDataList the file data list
58 * @param fileEnvMap the file env map
60 public static void scanFileEnvMap(FileData fileData, List<FileData> fileDataList,
61 Map<String, FileData> fileEnvMap) {
62 if (CollectionUtils.isEmpty(fileDataList)) {
66 for (FileData childFileData : fileDataList) {
67 FileData.Type childType = childFileData.getType();
68 if (fileData != null) {
69 if (childType != null && childType.equals(FileData.Type.HEAT_ENV)) {
70 fileEnvMap.put(fileData.getFile(), childFileData);
73 scanFileEnvMap(childFileData, childFileData.getData(), fileEnvMap);
81 * @param manifestContent the manifest content
82 * @return the file type map
84 public static Map<String, FileData.Type> getFileTypeMap(ManifestContent manifestContent) {
85 Map<String, FileData.Type> fileTypeMap = new HashMap<>();
86 scanFileTypeMap(null, manifestContent.getData(), fileTypeMap);
90 private static FileData.Type scanFileTypeMap(FileData fileData, List<FileData> data,
91 Map<String, FileData.Type> fileTypeMap) {
92 if (fileData != null) {
93 fileTypeMap.put(fileData.getFile(), fileData.getType());
99 for (FileData chileFileData : data) {
100 FileData.Type type = scanFileTypeMap(chileFileData, chileFileData.getData(), fileTypeMap);
112 * @param manifestContent the manifest content
113 * @return the artifacts
115 public static Set<String> getArtifacts(ManifestContent manifestContent) {
116 Set<String> artifacts = new HashSet<>();
117 scanArtifacts(null, manifestContent.getData(), artifacts);
123 private static void scanArtifacts(FileData fileData, List<FileData> data, Set<String> artifacts) {
124 if (fileData != null && fileData.getType() != null) {
125 if (isArtifact(fileData)) {
126 artifacts.add(fileData.getFile());
134 for (FileData chileFileData : data) {
135 scanArtifacts(chileFileData, chileFileData.getData(), artifacts);
139 private static boolean isArtifact(FileData fileData) {
140 if (FileData.Type.valueOf(fileData.getType().name()) != null
141 && !fileData.getType().equals(FileData.Type.HEAT)
142 && !fileData.getType().equals(FileData.Type.HEAT_ENV)
143 && !fileData.getType().equals(FileData.Type.HEAT_NET)
144 && !fileData.getType().equals(FileData.Type.HEAT_VOL)) {
153 * @param manifestContent the manifest content
154 * @return the base files
156 public static Set<String> getBaseFiles(ManifestContent manifestContent) {
157 Set<String> baseFiles = new HashSet<>();
158 scanBase(null, manifestContent.getData(), baseFiles);
162 private static void scanBase(FileData fileData, List<FileData> data, Set<String> baseFiles) {
163 if (fileData != null && fileData.getBase() != null) {
164 if (fileData.getBase()) {
165 baseFiles.add(fileData.getFile());
172 for (FileData chileFileData : data) {
173 scanBase(chileFileData, chileFileData.getData(), baseFiles);