6a8b4051253a1a10207e5a7fe3b07b666667960a
[sdc.git] / common-app-api / src / main / java / org / openecomp / sdc / common / api / ArtifactTypeEnum.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
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
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
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=========================================================
19  */
20
21 package org.openecomp.sdc.common.api;
22
23 import java.util.Arrays;
24 import java.util.HashSet;
25 import java.util.List;
26 import java.util.Set;
27 import lombok.AllArgsConstructor;
28 import lombok.Getter;
29
30 /**
31  * Represents an artifact type that is used for hard-coded type representation. 
32  * All artifacts must be configured in the SDC configuration file.
33  */
34 @Getter
35 @AllArgsConstructor
36 public enum ArtifactTypeEnum {
37     AAI_SERVICE_MODEL("AAI_SERVICE_MODEL"),
38     AAI_VF_INSTANCE_MODEL("AAI_VF_INSTANCE_MODEL"),
39     AAI_VF_MODEL("AAI_VF_MODEL"),
40     AAI_VF_MODULE_MODEL("AAI_VF_MODULE_MODEL"),
41     ANSIBLE_PLAYBOOK("ANSIBLE_PLAYBOOK"),
42     APPC_CONFIG("APPC_CONFIG"),
43     BPEL("BPEL"),
44     CHEF("CHEF"),
45     CLOUD_TECHNOLOGY_SPECIFIC_ARTIFACT("CLOUD_TECHNOLOGY_SPECIFIC_ARTIFACT"),
46     CONTROLLER_BLUEPRINT_ARCHIVE("CONTROLLER_BLUEPRINT_ARCHIVE"),
47     HELM("HELM"),
48     DCAE_DOC("DCAE_DOC"),
49     DCAE_EVENT("DCAE_EVENT"),
50     DCAE_INVENTORY_BLUEPRINT("DCAE_INVENTORY_BLUEPRINT"),
51     DCAE_INVENTORY_DOC("DCAE_INVENTORY_DOC"),
52     DCAE_INVENTORY_EVENT("DCAE_INVENTORY_EVENT"),
53     DCAE_INVENTORY_JSON("DCAE_INVENTORY_JSON"),
54     DCAE_INVENTORY_POLICY("DCAE_INVENTORY_POLICY"),
55     DCAE_INVENTORY_TOSCA("DCAE_INVENTORY_TOSCA"),
56     DCAE_JSON("DCAE_JSON"),
57     DCAE_POLICY("DCAE_POLICY"),
58     DCAE_TOSCA("DCAE_TOSCA"),
59     DG_XML("DG_XML"),
60     GUIDE("GUIDE"),
61     HEAT_ARTIFACT("HEAT_ARTIFACT"),
62     HEAT_ENV("HEAT_ENV"),
63     HEAT("HEAT"),
64     HEAT_NESTED("HEAT_NESTED"),
65     HEAT_NET("HEAT_NET"),
66     HEAT_VOL("HEAT_VOL"),
67     ICON("ICON"),
68     LIFECYCLE_OPERATIONS("LIFECYCLE_OPERATIONS"),
69     MODEL_INVENTORY_PROFILE("MODEL_INVENTORY_PROFILE"),
70     MODEL_QUERY_SPEC("MODEL_QUERY_SPEC"),
71     MURANO_PKG("MURANO_PKG"),
72     NETWORK_CALL_FLOW("NETWORK_CALL_FLOW"),
73     ONBOARDED_PACKAGE("ONBOARDED_PACKAGE"),
74     OTHER("OTHER"),
75     PERFORMANCE_COUNTER("PERFORMANCE_COUNTER"),
76     PLAN("PLAN"),
77     PM_DICTIONARY("PM_DICTIONARY"),
78     PNF_SW_INFORMATION("PNF_SW_INFORMATION"),
79     PUPPET("PUPPET"),
80     SHELL("SHELL"),
81     SHELL_SCRIPT("SHELL_SCRIPT"),
82     SNMP_POLL("SNMP_POLL"),
83     SNMP_TRAP("SNMP_TRAP"),
84     TOSCA_CSAR("TOSCA_CSAR"),
85     TOSCA_TEMPLATE("TOSCA_TEMPLATE"),
86     UCPE_LAYER_2_CONFIGURATION("UCPE_LAYER_2_CONFIGURATION"),
87     VENDOR_LICENSE("VENDOR_LICENSE"),
88     VES_EVENTS("VES_EVENTS"),
89     VF_LICENSE("VF_LICENSE"),
90     VF_MODULES_METADATA("VF_MODULES_METADATA"),
91     VNF_CATALOG("VNF_CATALOG"),
92     WORKFLOW("WORKFLOW"),
93     YANG("YANG"),
94     YANG_MODULE("YANG_MODULE"),
95     YANG_XML("YANG_XML");
96
97     private final String type;
98
99     /**
100      * Parse a string to a {@link ArtifactTypeEnum}, ignoring the case.
101      *
102      * @param type the artifact type
103      * @return The artifact type if its represented in the present enum, otherwise {@code null}.
104      */
105     public static ArtifactTypeEnum parse(final String type) {
106         for (final ArtifactTypeEnum artifactType : ArtifactTypeEnum.values()) {
107             if (artifactType.getType().equalsIgnoreCase(type)) {
108                 return artifactType;
109             }
110         }
111         return null;
112     }
113
114     /**
115      * Gets the list of mandatory/base SDC artifacts. Those artifacts must be configured.
116      *
117      * @return A set of base artifact types
118      */
119     public static Set<ArtifactTypeEnum> getBaseArtifacts() {
120         final List<ArtifactTypeEnum> artifactTypeEnums = Arrays.asList(
121             AAI_SERVICE_MODEL,
122             AAI_VF_INSTANCE_MODEL,
123             AAI_VF_MODEL,
124             AAI_VF_MODULE_MODEL,
125             ANSIBLE_PLAYBOOK,
126             APPC_CONFIG,
127             BPEL,
128             CHEF,
129             CLOUD_TECHNOLOGY_SPECIFIC_ARTIFACT,
130             CONTROLLER_BLUEPRINT_ARCHIVE,
131             DCAE_DOC,
132             DCAE_EVENT,
133             DCAE_INVENTORY_BLUEPRINT,
134             DCAE_INVENTORY_DOC,
135             DCAE_INVENTORY_EVENT,
136             DCAE_INVENTORY_JSON,
137             DCAE_INVENTORY_POLICY,
138             DCAE_INVENTORY_TOSCA,
139             DCAE_JSON,
140             DCAE_POLICY,
141             DCAE_TOSCA,
142             DG_XML,
143             GUIDE,
144             HEAT,
145             HEAT_ARTIFACT,
146             HEAT_ENV,
147             HEAT_NESTED,
148             HEAT_NET,
149             HEAT_VOL,
150             ICON,
151             LIFECYCLE_OPERATIONS,
152             MODEL_INVENTORY_PROFILE,
153             MODEL_QUERY_SPEC,
154             MURANO_PKG,
155             NETWORK_CALL_FLOW,
156             ONBOARDED_PACKAGE,
157             OTHER,
158             PERFORMANCE_COUNTER,
159             PLAN,
160             PM_DICTIONARY,
161             PNF_SW_INFORMATION,
162             PUPPET,
163             SHELL,
164             SHELL_SCRIPT,
165             SNMP_POLL,
166             SNMP_TRAP,
167             TOSCA_CSAR,
168             TOSCA_TEMPLATE,
169             UCPE_LAYER_2_CONFIGURATION,
170             VENDOR_LICENSE,
171             VES_EVENTS,
172             VF_LICENSE,
173             VF_MODULES_METADATA,
174             VNF_CATALOG,
175             WORKFLOW,
176             YANG,
177             YANG_MODULE,
178             YANG_XML
179         );
180         return new HashSet<>(artifactTypeEnums);
181     }
182
183 }