Added range type to subject-feature-definition/parameter
[groupbasedpolicy.git] / groupbasedpolicy / src / main / java / org / opendaylight / groupbasedpolicy / renderer / opflex / lib / Role.java
1 /*
2  * Copyright (C) 2014 Cisco Systems, Inc.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Authors : Thomas Bachman
9  */
10 package org.opendaylight.groupbasedpolicy.renderer.opflex.lib;
11
12 import java.util.ArrayList;
13 import java.util.List;
14
15 import org.opendaylight.groupbasedpolicy.jsonrpc.RpcMessage;
16 import org.opendaylight.groupbasedpolicy.renderer.opflex.lib.messages.EndpointDeclareRequest;
17 import org.opendaylight.groupbasedpolicy.renderer.opflex.lib.messages.EndpointDeclareResponse;
18 import org.opendaylight.groupbasedpolicy.renderer.opflex.lib.messages.EndpointUndeclareRequest;
19 import org.opendaylight.groupbasedpolicy.renderer.opflex.lib.messages.EndpointUnresolveRequest;
20 import org.opendaylight.groupbasedpolicy.renderer.opflex.lib.messages.EndpointUnresolveResponse;
21 import org.opendaylight.groupbasedpolicy.renderer.opflex.lib.messages.EndpointUpdateRequest;
22 import org.opendaylight.groupbasedpolicy.renderer.opflex.lib.messages.EndpointUpdateResponse;
23 import org.opendaylight.groupbasedpolicy.renderer.opflex.lib.messages.EndpointResolveRequest;
24 import org.opendaylight.groupbasedpolicy.renderer.opflex.lib.messages.EndpointResolveResponse;
25 import org.opendaylight.groupbasedpolicy.renderer.opflex.lib.messages.IdentityRequest;
26 import org.opendaylight.groupbasedpolicy.renderer.opflex.lib.messages.IdentityResponse;
27 import org.opendaylight.groupbasedpolicy.renderer.opflex.lib.messages.PolicyResolveRequest;
28 import org.opendaylight.groupbasedpolicy.renderer.opflex.lib.messages.PolicyResolveResponse;
29 import org.opendaylight.groupbasedpolicy.renderer.opflex.lib.messages.PolicyUnresolveRequest;
30 import org.opendaylight.groupbasedpolicy.renderer.opflex.lib.messages.PolicyUnresolveResponse;
31 import org.opendaylight.groupbasedpolicy.renderer.opflex.lib.messages.PolicyUpdateRequest;
32 import org.opendaylight.groupbasedpolicy.renderer.opflex.lib.messages.PolicyUpdateResponse;
33
34 /**
35  * Enum for OpFlex roles and their supported messages
36  *
37  * @author tbachman
38  *
39  */
40 public enum Role {
41     DISCOVERY("discovery"),
42     POLICY_REPOSITORY("policy_repository"),
43     ENDPOINT_REGISTRY("endpoint_registry"),
44     OBSERVER("observer"),
45     POLICY_ELEMENT("policy_element");
46
47     static IdentityRequest idReq = new IdentityRequest();
48     static IdentityResponse idRsp = new IdentityResponse();
49     static EndpointDeclareRequest epDeclReq = new EndpointDeclareRequest();
50     static EndpointDeclareResponse epDeclRsp = new EndpointDeclareResponse();
51     static EndpointUndeclareRequest epUndeclReq = new EndpointUndeclareRequest();
52     static EndpointResolveRequest epReqReq = new EndpointResolveRequest();
53     static EndpointResolveResponse epReqRsp = new EndpointResolveResponse();
54     static EndpointUnresolveRequest epUnreqReq = new EndpointUnresolveRequest();
55     static EndpointUnresolveResponse epUnreqRsp = new EndpointUnresolveResponse();
56     static EndpointUpdateRequest epPolUpdReq = new EndpointUpdateRequest();
57     static EndpointUpdateResponse epPolUpdRsp = new EndpointUpdateResponse();
58     static PolicyResolveRequest polReq = new PolicyResolveRequest();
59     static PolicyResolveResponse polRsp = new PolicyResolveResponse();
60     static PolicyUpdateRequest polUpdReq = new PolicyUpdateRequest();
61     static PolicyUpdateResponse polUpdRsp = new PolicyUpdateResponse();
62     static PolicyUnresolveRequest polUnReq = new PolicyUnresolveRequest();
63     static PolicyUnresolveResponse polUnRsp = new PolicyUnresolveResponse();
64
65     private final String role;
66
67     Role(String role) {
68         this.role = role;
69     }
70
71     /**
72      * Get the {@link RpcMessage}s supported by this Role
73      *
74      * @return List of RpcMessages supported for this Role
75      */
76     public List<RpcMessage> getMessages() {
77         if (role.equals(DISCOVERY.toString())) {
78             List<RpcMessage> msgList = new ArrayList<RpcMessage>();
79             msgList.add(idReq);
80             msgList.add(idRsp);
81             return msgList;
82         }
83         else if (role.equals(POLICY_REPOSITORY.toString())) {
84             List<RpcMessage> msgList = new ArrayList<RpcMessage>();
85             msgList.add(polReq);
86             msgList.add(polUpdReq);
87             msgList.add(polUpdRsp);
88             msgList.add(polUnReq);
89             msgList.add(polUnRsp);
90             return msgList;
91         }
92         else if (role.equals(ENDPOINT_REGISTRY.toString())) {
93             List<RpcMessage> msgList = new ArrayList<RpcMessage>();
94             msgList.add(epDeclReq);
95             msgList.add(epUndeclReq);
96             msgList.add(epReqReq);
97             msgList.add(epUnreqReq);
98             msgList.add(epPolUpdReq);
99             msgList.add(epPolUpdRsp);
100             return msgList;
101         }
102         else if (role.equals(OBSERVER.toString())) {
103             List<RpcMessage> msgList = new ArrayList<RpcMessage>();
104             return msgList;
105         }
106         return null;
107     }
108
109     @Override
110     public String toString() {
111         return this.role;
112     }
113 }