diff options
Diffstat (limited to 'openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/manifest/ManifestUtil.java')
-rw-r--r-- | openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/manifest/ManifestUtil.java | 176 |
1 files changed, 176 insertions, 0 deletions
diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/manifest/ManifestUtil.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/manifest/ManifestUtil.java new file mode 100644 index 0000000000..09378cebf4 --- /dev/null +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/manifest/ManifestUtil.java @@ -0,0 +1,176 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.heat.services.manifest; + +import org.apache.commons.collections4.CollectionUtils; +import org.openecomp.sdc.heat.datatypes.manifest.FileData; +import org.openecomp.sdc.heat.datatypes.manifest.ManifestContent; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + + +/** + * The type Manifest util. + */ +public class ManifestUtil { + + + /** + * Gets file and its env. + * + * @param manifestContent the manifest content + * @return the file and its env + */ + public static Map<String, FileData> getFileAndItsEnv(ManifestContent manifestContent) { + Map<String, FileData> fileEnvMap = new HashMap<>(); + scanFileEnvMap(null, manifestContent.getData(), fileEnvMap); + return fileEnvMap; + } + + + /** + * Scan file env map. + * + * @param fileData the file data + * @param fileDataList the file data list + * @param fileEnvMap the file env map + */ + public static void scanFileEnvMap(FileData fileData, List<FileData> fileDataList, + Map<String, FileData> fileEnvMap) { + if (CollectionUtils.isEmpty(fileDataList)) { + return; + } + + for (FileData childFileData : fileDataList) { + FileData.Type childType = childFileData.getType(); + if (fileData != null) { + if (childType != null && childType.equals(FileData.Type.HEAT_ENV)) { + fileEnvMap.put(fileData.getFile(), childFileData); + } + } + scanFileEnvMap(childFileData, childFileData.getData(), fileEnvMap); + } + } + + + /** + * Gets file type map. + * + * @param manifestContent the manifest content + * @return the file type map + */ + public static Map<String, FileData.Type> getFileTypeMap(ManifestContent manifestContent) { + Map<String, FileData.Type> fileTypeMap = new HashMap<>(); + scanFileTypeMap(null, manifestContent.getData(), fileTypeMap); + return fileTypeMap; + } + + private static FileData.Type scanFileTypeMap(FileData fileData, List<FileData> data, + Map<String, FileData.Type> fileTypeMap) { + if (fileData != null) { + fileTypeMap.put(fileData.getFile(), fileData.getType()); + } + if (data == null) { + return null; + } + + for (FileData chileFileData : data) { + FileData.Type type = scanFileTypeMap(chileFileData, chileFileData.getData(), fileTypeMap); + if (type != null) { + return type; + } + } + return null; + } + + + /** + * Gets artifacts. + * + * @param manifestContent the manifest content + * @return the artifacts + */ + public static Set<String> getArtifacts(ManifestContent manifestContent) { + Set<String> artifacts = new HashSet<>(); + scanArtifacts(null, manifestContent.getData(), artifacts); + + return artifacts; + } + + + private static void scanArtifacts(FileData fileData, List<FileData> data, Set<String> artifacts) { + if (fileData != null && fileData.getType() != null) { + if (isArtifact(fileData)) { + artifacts.add(fileData.getFile()); + } + } + + if (data == null) { + return; + } + + for (FileData chileFileData : data) { + scanArtifacts(chileFileData, chileFileData.getData(), artifacts); + } + } + + private static boolean isArtifact(FileData fileData) { + if (FileData.Type.valueOf(fileData.getType().name()) != null + && !fileData.getType().equals(FileData.Type.HEAT) + && !fileData.getType().equals(FileData.Type.HEAT_ENV) + && !fileData.getType().equals(FileData.Type.HEAT_NET) + && !fileData.getType().equals(FileData.Type.HEAT_VOL)) { + return true; + } + return false; + } + + /** + * Gets base files. + * + * @param manifestContent the manifest content + * @return the base files + */ + public static Set<String> getBaseFiles(ManifestContent manifestContent) { + Set<String> baseFiles = new HashSet<>(); + scanBase(null, manifestContent.getData(), baseFiles); + return baseFiles; + } + + private static void scanBase(FileData fileData, List<FileData> data, Set<String> baseFiles) { + if (fileData != null && fileData.getBase() != null) { + if (fileData.getBase()) { + baseFiles.add(fileData.getFile()); + } + } + if (data == null) { + return; + } + + for (FileData chileFileData : data) { + scanBase(chileFileData, chileFileData.getData(), baseFiles); + } + } +} |