161097da32d064c3f93dc46d4da9efd53526e4c7
[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     ETSI_PACKAGE("ETSI_PACKAGE"),
61     GUIDE("GUIDE"),
62     HEAT_ARTIFACT("HEAT_ARTIFACT"),
63     HEAT_ENV("HEAT_ENV"),
64     HEAT("HEAT"),
65     HEAT_NESTED("HEAT_NESTED"),
66     HEAT_NET("HEAT_NET"),
67     HEAT_VOL("HEAT_VOL"),
68     ICON("ICON"),
69     LIFECYCLE_OPERATIONS("LIFECYCLE_OPERATIONS"),
70     MODEL_INVENTORY_PROFILE("MODEL_INVENTORY_PROFILE"),
71     MODEL_QUERY_SPEC("MODEL_QUERY_SPEC"),
72     MURANO_PKG("MURANO_PKG"),
73     NETWORK_CALL_FLOW("NETWORK_CALL_FLOW"),
74     ONBOARDED_PACKAGE("ONBOARDED_PACKAGE"),
75     OTHER("OTHER"),
76     PERFORMANCE_COUNTER("PERFORMANCE_COUNTER"),
77     PLAN("PLAN"),
78     PM_DICTIONARY("PM_DICTIONARY"),
79     PNF_SW_INFORMATION("PNF_SW_INFORMATION"),
80     PUPPET("PUPPET"),
81     SHELL("SHELL"),
82     SHELL_SCRIPT("SHELL_SCRIPT"),
83     SNMP_POLL("SNMP_POLL"),
84     SNMP_TRAP("SNMP_TRAP"),
85     TOSCA_CSAR("TOSCA_CSAR"),
86     TOSCA_TEMPLATE("TOSCA_TEMPLATE"),
87     UCPE_LAYER_2_CONFIGURATION("UCPE_LAYER_2_CONFIGURATION"),
88     VENDOR_LICENSE("VENDOR_LICENSE"),
89     VES_EVENTS("VES_EVENTS"),
90     VF_LICENSE("VF_LICENSE"),
91     VF_MODULES_METADATA("VF_MODULES_METADATA"),
92     VNF_CATALOG("VNF_CATALOG"),
93     WORKFLOW("WORKFLOW"),
94     YANG("YANG"),
95     YANG_MODULE("YANG_MODULE"),
96     YANG_XML("YANG_XML");
97
98     private final String type;
99
100     /**
101      * Parse a string to a {@link ArtifactTypeEnum}, ignoring the case.
102      *
103      * @param type the artifact type
104      * @return The artifact type if its represented in the present enum, otherwise {@code null}.
105      */
106     public static ArtifactTypeEnum parse(final String type) {
107         for (final ArtifactTypeEnum artifactType : ArtifactTypeEnum.values()) {
108             if (artifactType.getType().equalsIgnoreCase(type)) {
109                 return artifactType;
110             }
111         }
112         return null;
113     }
114
115     /**
116      * Gets the list of mandatory/base SDC artifacts. Those artifacts must be configured.
117      *
118      * @return A set of base artifact types
119      */
120     public static Set<ArtifactTypeEnum> getBaseArtifacts() {
121         final List<ArtifactTypeEnum> artifactTypeEnums = Arrays.asList(
122             AAI_SERVICE_MODEL,
123             AAI_VF_INSTANCE_MODEL,
124             AAI_VF_MODEL,
125             AAI_VF_MODULE_MODEL,
126             ANSIBLE_PLAYBOOK,
127             APPC_CONFIG,
128             BPEL,
129             CHEF,
130             CLOUD_TECHNOLOGY_SPECIFIC_ARTIFACT,
131             CONTROLLER_BLUEPRINT_ARCHIVE,
132             DCAE_DOC,
133             DCAE_EVENT,
134             DCAE_INVENTORY_BLUEPRINT,
135             DCAE_INVENTORY_DOC,
136             DCAE_INVENTORY_EVENT,
137             DCAE_INVENTORY_JSON,
138             DCAE_INVENTORY_POLICY,
139             DCAE_INVENTORY_TOSCA,
140             DCAE_JSON,
141             DCAE_POLICY,
142             DCAE_TOSCA,
143             DG_XML,
144             GUIDE,
145             HEAT,
146             HEAT_ARTIFACT,
147             HEAT_ENV,
148             HEAT_NESTED,
149             HEAT_NET,
150             HEAT_VOL,
151             ICON,
152             LIFECYCLE_OPERATIONS,
153             MODEL_INVENTORY_PROFILE,
154             MODEL_QUERY_SPEC,
155             MURANO_PKG,
156             NETWORK_CALL_FLOW,
157             ONBOARDED_PACKAGE,
158             OTHER,
159             PERFORMANCE_COUNTER,
160             PLAN,
161             PM_DICTIONARY,
162             PNF_SW_INFORMATION,
163             PUPPET,
164             SHELL,
165             SHELL_SCRIPT,
166             SNMP_POLL,
167             SNMP_TRAP,
168             TOSCA_CSAR,
169             TOSCA_TEMPLATE,
170             UCPE_LAYER_2_CONFIGURATION,
171             VENDOR_LICENSE,
172             VES_EVENTS,
173             VF_LICENSE,
174             VF_MODULES_METADATA,
175             VNF_CATALOG,
176             WORKFLOW,
177             YANG,
178             YANG_MODULE,
179             YANG_XML
180         );
181         return new HashSet<>(artifactTypeEnums);
182     }
183
184 }