0af2ad526d3f479da0e6a9642f750792a704d512
[transportpce.git] / servicehandler / src / main / java / org / opendaylight / transportpce / servicehandler / ServicehandlerCompliancyCheck.java
1 /*
2  * Copyright © 2017 Orange, Inc. and others.  All rights reserved.
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
9 package org.opendaylight.transportpce.servicehandler;
10
11 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.ConnectionType;
12 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.RpcActions;
13 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.sdnc.request.header.SdncRequestHeader;
14 import org.slf4j.Logger;
15 import org.slf4j.LoggerFactory;
16
17 /**
18  * Class for checking service sdnc-request-header compliancy.
19  *
20  * @author Martial Coulibaly ( martial.coulibaly@gfi.com ) on behalf of Orange
21  *
22  */
23 public class ServicehandlerCompliancyCheck {
24     /* Logging. */
25     private static final Logger LOG = LoggerFactory.getLogger(ServicehandlerCompliancyCheck.class);
26     /* SdncRequestHeader. */
27     private SdncRequestHeader sndcRequestHeader;
28     /* Service Name. */
29     private String serviceName;
30     /* Type of connection : service / infrastructure / roadm-line. */
31     private ConnectionType conType;
32     /* type of service : service-create / service-delete ... */
33     private RpcActions action;
34     /* Response message from procedure. */
35     private String message;
36
37     /**
38      * ServicehandlerCompliancyCheck class constructor.
39      *
40      * @param sdncRequestHeader
41      *            SdncRequestHeader
42      * @param serviceName
43      *            String Service Name
44      * @param conType
45      *            Connection Type
46      * @param action
47      *            RPC type
48      */
49     public ServicehandlerCompliancyCheck(SdncRequestHeader sdncRequestHeader, String serviceName,
50             ConnectionType conType, RpcActions action) {
51         this.sndcRequestHeader = sdncRequestHeader;
52         this.serviceName = serviceName;
53         this.conType = conType;
54         this.action = action;
55         this.setMessage("");
56     }
57
58     /**
59      * ServicehandlerCompliancyCheck class constructor.
60      *
61      * @param sdncRequestHeader
62      *            SdncRequestHeader
63      * @param serviceName
64      *            String Service Name
65      * @param action
66      *            RPC type
67      */
68     public ServicehandlerCompliancyCheck(SdncRequestHeader sdncRequestHeader, String serviceName, RpcActions action) {
69         this.sndcRequestHeader = sdncRequestHeader;
70         this.serviceName = serviceName;
71         this.action = action;
72         this.setMessage("");
73     }
74
75     /**
76      * ServicehandlerCompliancyCheck class constructor.
77      *
78      * @param serviceName
79      *            String Service Name
80      * @param conType
81      *            Connection Type
82      * @param action
83      *            RPC type
84      */
85     public ServicehandlerCompliancyCheck(String serviceName, ConnectionType conType, RpcActions action) {
86         this.serviceName = serviceName;
87         this.conType = conType;
88         this.action = action;
89         this.setMessage("");
90     }
91
92     /**
93      * ServicehandlerCompliancyCheck class constructor.
94      *
95      * @param serviceName
96      *            String Service Name
97      * @param action
98      *            RPC type
99      */
100     public ServicehandlerCompliancyCheck(String serviceName, RpcActions action) {
101         this.serviceName = serviceName;
102         this.action = action;
103         this.setMessage("");
104     }
105
106     /**
107      * Check if a String is not null and not equal to void.
108      *
109      * @param value
110      *            String value
111      * @return true if String ok false if not
112      */
113     public Boolean checkString(String value) {
114         Boolean result = false;
115         if (value != null && value.compareTo("") != 0) {
116             result = true;
117         }
118         return result;
119
120     }
121
122     /**
123      * Check Compliancy of Service request.
124      *
125      * @param contype
126      *            Boolean to check connection Type
127      * @param sndcRequest
128      *            Boolean to check sndcRequestHeader
129      *
130      * @return true if String ok false if not
131      */
132     public Boolean check(Boolean contype, Boolean sndcRequest) {
133         Boolean result = true;
134         if (!checkString(serviceName)) {
135             result = false;
136             message = "Service Name is not set";
137             LOG.debug(message);
138         } else if (contype && conType == null) {
139             result = false;
140             message = "Service ConnectionType is not set";
141             LOG.debug(message);
142         }
143         if (sndcRequest) {
144             if (sndcRequestHeader != null) {
145                 RpcActions serviceAction = sndcRequestHeader.getRpcAction();
146                 String requestId = sndcRequestHeader.getRequestId();
147                 if (!checkString(requestId)) {
148                     result = false;
149                     message = "Service sndcRequestHeader 'request-id' is not set";
150                     LOG.debug(message);
151                 } else if (serviceAction != null) {
152                     if (serviceAction.compareTo(action) != 0) {
153                         result = false;
154                         message = "Service sndcRequestHeader rpc-action '" + serviceAction + "' not equal to '"
155                                 + action.name() + "'";
156                         LOG.debug(message);
157                     }
158                 } else {
159                     result = false;
160                     message = "Service sndc-request-header 'rpc-action' is not set ";
161                     LOG.debug(message);
162                 }
163
164             } else {
165                 result = false;
166                 message = "Service sndc-request-header is not set ";
167                 LOG.debug(message);
168             }
169         }
170         return result;
171     }
172
173     public String getMessage() {
174         return message;
175     }
176
177     public void setMessage(String message) {
178         this.message = message;
179     }
180 }