9b6b34f755eb835555313975368659f738510cbb
[sdc.git] /
1 /*
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2019 Nordix Foundation
4  *  Modification Copyright (C) 2021 Nokia.
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
9  *
10  *        http://www.apache.org/licenses/LICENSE-2.0
11  *  Unless required by applicable law or agreed to in writing, software
12  *  distributed under the License is distributed on an "AS IS" BASIS,
13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *  See the License for the specific language governing permissions and
15  *  limitations under the License.
16  *
17  *  SPDX-License-Identifier: Apache-2.0
18  *  ============LICENSE_END=========================================================
19  */
20 package org.openecomp.sdc.tosca.csar;
21
22 import java.util.Arrays;
23 import java.util.Optional;
24
25 public enum ManifestTokenType {
26     // @formatter:off
27     ALGORITHM("Algorithm"),
28     ATTRIBUTE_VALUE_SEPARATOR(":"),
29     CMS_BEGIN("-----BEGIN CMS-----"),
30     CMS_END("-----END CMS-----"),
31     HASH("Hash"),
32     METADATA("metadata"),
33     NON_MANO_ARTIFACT_SETS("non_mano_artifact_sets"),
34     SOURCE("Source"),
35     VNF_PRODUCT_NAME("vnf_product_name"),
36     VNF_PROVIDER_ID("vnf_provider_id"),
37     VNF_PACKAGE_VERSION("vnf_package_version"),
38     VNF_RELEASE_DATE_TIME("vnf_release_date_time"),
39     VNF_SOFTWARE_VERSION("vnf_software_version"),
40     VNFM_INFO("vnfm_info"),
41     VNFD_ID("vnfd_id"),
42     PNFD_NAME("pnfd_name"),
43     PNFD_PROVIDER("pnfd_provider"),
44     PNFD_ARCHIVE_VERSION("pnfd_archive_version"),
45     PNFD_RELEASE_DATE_TIME("pnfd_release_date_time"),
46     SIGNATURE("Signature"),
47     CERTIFICATE("Certificate"),
48     COMPATIBLE_SPECIFICATION_VERSIONS("compatible_specification_versions");
49     // @formatter:on
50
51     private final String token;
52
53     ManifestTokenType(final String token) {
54         this.token = token;
55     }
56
57     public static Optional<ManifestTokenType> parse(final String token) {
58         return Arrays.stream(values()).filter(it -> it.getToken() != null && it.getToken().equals(token)).findFirst();
59     }
60
61     public String getToken() {
62         return token;
63     }
64
65     public boolean isMetadataEntry() {
66         return isMetadataVnfEntry() || isMetadataPnfEntry();
67     }
68
69     public boolean isMetadataVnfEntry() {
70         switch (this) {
71             case VNF_PRODUCT_NAME:
72             case VNF_PROVIDER_ID:
73             case VNF_PACKAGE_VERSION:
74             case VNF_RELEASE_DATE_TIME:
75             case VNFD_ID:
76             case VNFM_INFO:
77             case VNF_SOFTWARE_VERSION:
78             case COMPATIBLE_SPECIFICATION_VERSIONS:
79                 return true;
80             default:
81                 return false;
82         }
83     }
84
85     public boolean isMetadataPnfEntry() {
86         switch (this) {
87             case PNFD_NAME:
88             case PNFD_PROVIDER:
89             case PNFD_ARCHIVE_VERSION:
90             case PNFD_RELEASE_DATE_TIME:
91             case COMPATIBLE_SPECIFICATION_VERSIONS:
92                 return true;
93             default:
94                 return false;
95         }
96     }
97 }