Merge from ECOMP's repository
[vid.git] / vid-app-common / src / main / java / org / onap / vid / job / JobType.java
1 package org.onap.vid.job;
2
3 import org.onap.vid.job.command.*;
4
5 import java.util.Map;
6 import java.util.stream.Collectors;
7 import java.util.stream.Stream;
8
9 import static org.onap.vid.utils.Streams.not;
10
11 public enum JobType {
12
13     HttpCall(HttpCallCommand.class),
14     AggregateState(AggregateStateCommand.class),
15     ServiceInstantiation(MacroServiceInstantiationCommand.class),
16     MacroServiceInstantiation(MacroServiceInstantiationCommand.class),
17     ALaCarteServiceInstantiation(ALaCarteServiceInstantiationCommand.class),
18     ALaCarteService(ALaCarteServiceCommand.class),
19     VnfInstantiation(VnfInstantiationCommand.class),
20     VfmoduleInstantiation(VfmoduleInstantiationCommand.class),
21     VolumeGroupInstantiation(VolumeGroupInstantiationCommand.class),
22     VolumeGroupInProgressStatus(VolumeGroupInProgressStatusCommand.class),
23     NetworkInstantiation(NetworkInstantiationCommand.class),
24     InstanceGroupInstantiation(InstanceGroupInstantiationCommand.class),
25     InstanceGroup(InstanceGroupCommand.class),
26     InProgressStatus(ServiceInProgressStatusCommand.class),
27     ResourceInProgressStatus(ResourceInProgressStatusCommand.class),
28     VnfInProgressStatus(VnfInProgressStatusCommand.class),
29     Watching(WatchingCommand.class),
30     WatchingBaseModule(WatchingCommandBaseModule.class),
31     NoOp(NoOpCommand.class);
32
33     private static final Map<Class, JobType> REVERSE_MAP = Stream.of(values())
34             .filter(not(jobType -> jobType.equals(ServiceInstantiation)))
35             .collect(Collectors.toMap(t -> t.getCommandClass(), t -> t));
36
37     private final Class commandClass;
38
39     <T extends JobCommand> JobType(Class<T> commandClass) {
40         this.commandClass = commandClass;
41     }
42
43     public Class getCommandClass() {
44         return commandClass;
45     }
46     static JobType jobTypeOf(Class commandClass) {
47         return REVERSE_MAP.get(commandClass);
48     }
49 }