Merge from ECOMP's repository
[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-instances", "service-instance-name"),
14     GENERIC_VNF("generic-vnfs", "vnf-name"),
15     L3_NETWORK("l3-networks", "network-name"),
16     VF_MODULE("vf-modules", "vf-module-name"),
17     INSTANCE_GROUP("instance-groups", "instance-group-name"),
18     VOLUME_GROUP("volume-groups", "volume-group-name");
19
20     private static Map<String, ResourceType> AAI_FORMAT_MAP = Stream
21             .of(ResourceType.values())
22             .collect(Collectors.toMap(s -> s.aaiFormat, Function.identity()));
23
24     private final String aaiFormat;
25     private final String nameFilter;
26
27     ResourceType(String formatted, String nameFilter) {
28         this.aaiFormat = formatted;
29         this.nameFilter = nameFilter;
30     }
31
32     public String getAaiFormat() {
33         return aaiFormat;
34     }
35
36     public String getNameFilter() {
37         return nameFilter;
38     }
39
40     @JsonCreator
41     public static ResourceType fromString(String string) {
42         return Optional
43                 .ofNullable(AAI_FORMAT_MAP.get(string))
44                 .orElseThrow(() -> new IllegalArgumentException(string));
45     }
46 }