3 * * ============LICENSE_START=======================================================
4 * * Copyright (C) 2019 Nordix Foundation.
5 * * ================================================================================
6 * * Licensed under the Apache License, Version 2.0 (the "License");
7 * * you may not use this file except in compliance with the License.
8 * * You may obtain a copy of the License at
10 * * http://www.apache.org/licenses/LICENSE-2.0
12 * * Unless required by applicable law or agreed to in writing, software
13 * * distributed under the License is distributed on an "AS IS" BASIS,
14 * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * * See the License for the specific language governing permissions and
16 * * limitations under the License.
18 * * SPDX-License-Identifier: Apache-2.0
19 * * ============LICENSE_END=========================================================
23 package org.openecomp.sdc.be.components.impl.artifact;
25 import org.openecomp.sdc.common.api.ArtifactTypeEnum;
27 import java.util.HashMap;
29 import java.util.Objects;
31 import static org.openecomp.sdc.be.components.impl.artifact.PayloadTypeEnum.HEAT_YAML;
32 import static org.openecomp.sdc.be.components.impl.artifact.PayloadTypeEnum.NOT_DEFINED;
33 import static org.openecomp.sdc.common.api.ArtifactTypeEnum.DCAE_INVENTORY_JSON;
34 import static org.openecomp.sdc.common.api.ArtifactTypeEnum.DCAE_INVENTORY_TOSCA;
35 import static org.openecomp.sdc.common.api.ArtifactTypeEnum.HEAT;
36 import static org.openecomp.sdc.common.api.ArtifactTypeEnum.HEAT_ENV;
37 import static org.openecomp.sdc.common.api.ArtifactTypeEnum.HEAT_NET;
38 import static org.openecomp.sdc.common.api.ArtifactTypeEnum.HEAT_VOL;
39 import static org.openecomp.sdc.common.api.ArtifactTypeEnum.LIFECYCLE_OPERATIONS;
40 import static org.openecomp.sdc.common.api.ArtifactTypeEnum.MODEL_INVENTORY_PROFILE;
41 import static org.openecomp.sdc.common.api.ArtifactTypeEnum.MODEL_QUERY_SPEC;
42 import static org.openecomp.sdc.common.api.ArtifactTypeEnum.PM_DICTIONARY;
43 import static org.openecomp.sdc.common.api.ArtifactTypeEnum.UCPE_LAYER_2_CONFIGURATION;
44 import static org.openecomp.sdc.common.api.ArtifactTypeEnum.VENDOR_LICENSE;
45 import static org.openecomp.sdc.common.api.ArtifactTypeEnum.VES_EVENTS;
46 import static org.openecomp.sdc.common.api.ArtifactTypeEnum.VF_LICENSE;
47 import static org.openecomp.sdc.common.api.ArtifactTypeEnum.VNF_CATALOG;
48 import static org.openecomp.sdc.common.api.ArtifactTypeEnum.YANG_XML;
50 public class ArtifactTypeToPayloadTypeSelector {
52 private static final Map<ArtifactTypeWithExtension, PayloadTypeEnum> artifactTypeWithExtension2PayloadType = new HashMap<>();
53 private static final Map<String, PayloadTypeEnum> artifactType2PayloadType = new HashMap<>();
54 private static final String XML = "xml";
55 private static final String JSON = "json";
56 private static final String YML = "yml";
57 private static final String YAML = "yaml";
60 populateArtifactTypeWithExtensionMap();
61 populateArtifactsTypeOnlyMap();
64 private static void populateArtifactTypeWithExtensionMap() {
65 artifactTypeWithExtension2PayloadType.put(createArtifactTypeWithExtension(DCAE_INVENTORY_JSON, XML), PayloadTypeEnum.XML);
66 artifactTypeWithExtension2PayloadType.put(createArtifactTypeWithExtension(DCAE_INVENTORY_JSON, JSON), PayloadTypeEnum.JSON);
67 artifactTypeWithExtension2PayloadType.put(createArtifactTypeWithExtension(DCAE_INVENTORY_JSON, YML), PayloadTypeEnum.YAML);
68 artifactTypeWithExtension2PayloadType.put(createArtifactTypeWithExtension(DCAE_INVENTORY_JSON, YAML), PayloadTypeEnum.YAML);
70 artifactTypeWithExtension2PayloadType.put(createArtifactTypeWithExtension(DCAE_INVENTORY_TOSCA, XML), PayloadTypeEnum.XML);
71 artifactTypeWithExtension2PayloadType.put(createArtifactTypeWithExtension(DCAE_INVENTORY_TOSCA, JSON), PayloadTypeEnum.JSON);
72 artifactTypeWithExtension2PayloadType.put(createArtifactTypeWithExtension(DCAE_INVENTORY_TOSCA, YML), PayloadTypeEnum.YAML);
73 artifactTypeWithExtension2PayloadType.put(createArtifactTypeWithExtension(DCAE_INVENTORY_TOSCA, YAML), PayloadTypeEnum.YAML);
75 artifactTypeWithExtension2PayloadType.put(createArtifactTypeWithExtension(VES_EVENTS, XML), PayloadTypeEnum.XML);
76 artifactTypeWithExtension2PayloadType.put(createArtifactTypeWithExtension(VES_EVENTS, JSON), PayloadTypeEnum.JSON);
77 artifactTypeWithExtension2PayloadType.put(createArtifactTypeWithExtension(VES_EVENTS, YML), PayloadTypeEnum.YAML);
78 artifactTypeWithExtension2PayloadType.put(createArtifactTypeWithExtension(VES_EVENTS, YAML), PayloadTypeEnum.YAML);
80 artifactTypeWithExtension2PayloadType.put(createArtifactTypeWithExtension(LIFECYCLE_OPERATIONS, XML), PayloadTypeEnum.XML);
81 artifactTypeWithExtension2PayloadType.put(createArtifactTypeWithExtension(LIFECYCLE_OPERATIONS, JSON), PayloadTypeEnum.JSON);
82 artifactTypeWithExtension2PayloadType.put(createArtifactTypeWithExtension(LIFECYCLE_OPERATIONS, YML), PayloadTypeEnum.YAML);
83 artifactTypeWithExtension2PayloadType.put(createArtifactTypeWithExtension(LIFECYCLE_OPERATIONS, YAML), PayloadTypeEnum.YAML);
86 private static void populateArtifactsTypeOnlyMap() {
87 artifactType2PayloadType.put(HEAT.getType().toLowerCase(), HEAT_YAML);
88 artifactType2PayloadType.put(HEAT_VOL.getType().toLowerCase(), HEAT_YAML);
89 artifactType2PayloadType.put(HEAT_NET.getType().toLowerCase(), HEAT_YAML);
90 artifactType2PayloadType.put(HEAT_ENV.getType().toLowerCase(), PayloadTypeEnum.HEAT_ENV);
92 artifactType2PayloadType.put(YANG_XML.getType().toLowerCase(), PayloadTypeEnum.XML);
93 artifactType2PayloadType.put(VNF_CATALOG.getType().toLowerCase(), PayloadTypeEnum.XML);
94 artifactType2PayloadType.put(VF_LICENSE.getType().toLowerCase(), PayloadTypeEnum.XML);
95 artifactType2PayloadType.put(VENDOR_LICENSE.getType().toLowerCase(), PayloadTypeEnum.XML);
96 artifactType2PayloadType.put(MODEL_INVENTORY_PROFILE.getType().toLowerCase(), PayloadTypeEnum.XML);
97 artifactType2PayloadType.put(MODEL_QUERY_SPEC.getType().toLowerCase(), PayloadTypeEnum.XML);
98 artifactType2PayloadType.put(UCPE_LAYER_2_CONFIGURATION.getType().toLowerCase(), PayloadTypeEnum.XML);
99 artifactType2PayloadType.put(PM_DICTIONARY.getType().toLowerCase(), PayloadTypeEnum.YAML);
102 private static ArtifactTypeWithExtension createArtifactTypeWithExtension(ArtifactTypeEnum artifactTypeEnum, String extension) {
103 return createArtifactTypeWithExtension(artifactTypeEnum.getType(), extension);
106 private static ArtifactTypeWithExtension createArtifactTypeWithExtension(String artifactType, String extension) {
107 return new ArtifactTypeToPayloadTypeSelector().new ArtifactTypeWithExtension(artifactType.toLowerCase(), extension.toLowerCase());
110 public static PayloadTypeEnum getPayloadType(String artifactType, String fileExtension) {
111 PayloadTypeEnum payloadType = artifactTypeWithExtension2PayloadType.get(createArtifactTypeWithExtension(artifactType, fileExtension));
112 payloadType = payloadType != null ? payloadType : artifactType2PayloadType.get(artifactType.toLowerCase());
113 return payloadType != null ? payloadType : NOT_DEFINED;
116 private class ArtifactTypeWithExtension {
117 private String artifactType;
118 private String fileExtension;
120 public ArtifactTypeWithExtension(String artifactType, String fileExtension) {
121 this.artifactType = artifactType;
122 this.fileExtension = fileExtension;
125 public String getArtifactType() {
129 public String getFileExtension() {
130 return fileExtension;
134 public boolean equals(Object other) {
135 if (!(other instanceof ArtifactTypeWithExtension)) {
138 ArtifactTypeWithExtension otherArtifactTypeWithExtension = (ArtifactTypeWithExtension) other;
140 return isArtifactTypeEqual(otherArtifactTypeWithExtension.getArtifactType()) &&
141 isFileExtensionEqual(otherArtifactTypeWithExtension.getFileExtension());
145 public int hashCode() {
146 return Objects.hash(artifactType, fileExtension);
149 private boolean isArtifactTypeEqual(String otherArtifactType) {
150 if (artifactType == null) {
151 return otherArtifactType == null;
153 return artifactType.equalsIgnoreCase(otherArtifactType);
156 private boolean isFileExtensionEqual(String otherFileExtension) {
157 if (fileExtension == null) {
158 return otherFileExtension == null;
160 return fileExtension.equalsIgnoreCase(otherFileExtension);