736a1aa9e1aeeda39bd213cb41725067a84e6cad
[vid.git] / vid-app-common / src / main / java / org / onap / vid / aai / model / ResourceType.java
1 package org.onap.vid.aai.model;
2
3 import com.fasterxml.jackson.annotation.JsonCreator;
4
5 import java.util.Map;
6 import java.util.Optional;
7 import java.util.function.Function;
8 import java.util.stream.Collectors;
9 import java.util.stream.Stream;
10
11 public enum ResourceType {
12
13     SERVICE_INSTANCE("service-instance", "service-instance-name"),
14     GENERIC_VNF("generic-vnf", "vnf-name"),
15     VF_MODULE("vf-module", "vf-module-name"),
16     VOLUME_GROUP("volume-group", "volume-group-name");
17
18     private static Map<String, ResourceType> AAI_FORMAT_MAP = Stream
19             .of(ResourceType.values())
20             .collect(Collectors.toMap(s -> s.aaiFormat, Function.identity()));
21
22     private final String aaiFormat;
23     private final String nameFilter;
24
25     ResourceType(String formatted, String nameFilter) {
26         this.aaiFormat = formatted;
27         this.nameFilter = nameFilter;
28     }
29
30     public String getAaiFormat() {
31         return aaiFormat;
32     }
33
34     public String getNameFilter() {
35         return nameFilter;
36     }
37
38     @JsonCreator
39     public static ResourceType fromString(String string) {
40         return Optional
41                 .ofNullable(AAI_FORMAT_MAP.get(string))
42                 .orElseThrow(() -> new IllegalArgumentException(string));
43     }
44 }