2 * Copyright © 2017 AT&T and others. All rights reserved.
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
8 package org.opendaylight.transportpce.inventory.query;
10 import static org.opendaylight.transportpce.inventory.utils.StringUtils.getCurrentTimestamp;
12 import com.google.common.base.Strings;
14 import java.sql.PreparedStatement;
15 import java.sql.SQLException;
17 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.ServiceAEnd;
18 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.ServiceZEnd;
19 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.endpoint.Router;
20 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.endpoint.RxDirection;
21 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.endpoint.TxDirection;
22 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.port.Port;
23 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.list.Services;
26 * Query manipulation class.
28 public class QueryUtils {
30 private QueryUtils() {
31 // no instance, just static access
35 * This method modifies the prepared statement for {@link Queries}.
37 * @param stmt the prepared statement
38 * @param servicePath the service path
39 * @throws SQLException a SQL exception
41 public static void setCreateServiceParameters(PreparedStatement stmt, Services servicePath) throws SQLException {
42 StatementBuilder builder = StatementBuilder.builder(stmt);
43 builder.setParameter(servicePath.getServiceName());
44 builder.setParameter(servicePath.getCommonId());
46 String requestId = "";
47 String rpcAction = "";
48 String notificationUrl = "";
49 String requestSystemId = "";
51 if (servicePath.getSdncRequestHeader() != null) {
52 requestId = getStringOf(servicePath.getSdncRequestHeader().getRequestId());
53 rpcAction = servicePath.getSdncRequestHeader().getRpcAction().getName();
54 notificationUrl = servicePath.getSdncRequestHeader().getNotificationUrl();
55 requestSystemId = servicePath.getSdncRequestHeader().getRequestSystemId();
57 builder.setParameter(requestId).setParameter(rpcAction).setParameter(notificationUrl)
58 .setParameter(requestSystemId);
60 String connectionType = "";
61 String lifecycleState = "";
62 String administrativeState = "";
63 String condition = "";
64 if (servicePath.getConnectionType() != null) {
65 connectionType = servicePath.getConnectionType().getName();
67 if (servicePath.getLifecycleState() != null) {
68 lifecycleState = servicePath.getLifecycleState().getName();
70 if (servicePath.getAdministrativeState() != null) {
71 administrativeState = servicePath.getAdministrativeState().getName();
73 if (servicePath.getCondition() != null) {
74 condition = servicePath.getCondition().getName();
77 builder.setParameter(connectionType);
78 builder.setParameter(lifecycleState);
79 builder.setParameter(administrativeState);
80 builder.setParameter(condition);
83 ServiceAEnd serviceAEnd = servicePath.getServiceAEnd();
84 builder.setParameter(serviceAEnd.getServiceFormat().getName()).setParameter(serviceAEnd.getServiceRate())
85 .setParameter(serviceAEnd.getClli()).setParameter(serviceAEnd.getNodeId());
88 Port aendTxDirection = servicePath.getServiceAEnd().getTxDirection().getPort();
89 builder.setParameter(aendTxDirection.getPortDeviceName()).setParameter(aendTxDirection.getPortName())
90 .setParameter(aendTxDirection.getPortRack()).setParameter(aendTxDirection.getPortShelf())
91 .setParameter(aendTxDirection.getPortSlot()).setParameter(aendTxDirection.getPortSubSlot());
94 TxDirection txDirectionA = servicePath.getServiceAEnd().getTxDirection();
95 builder.setParameter(txDirectionA.getLgx().getLgxDeviceName())
96 .setParameter(txDirectionA.getLgx().getLgxPortName())
97 .setParameter(txDirectionA.getLgx().getLgxPortRack())
98 .setParameter(txDirectionA.getLgx().getLgxPortShelf());
99 builder.setParameter(txDirectionA.getTail().getTailRoadm().getNodeId());
100 builder.setParameter(txDirectionA.getTail().getXponderPort().getCircuitPackName());
101 builder.setParameter(txDirectionA.getTail().getXponderPort().getPortName());
102 builder.setParameter(txDirectionA.getTail().getTailRoadmPortAid());
103 builder.setParameter(txDirectionA.getTail().getTailRoadmPortRackLocation());
106 RxDirection rxDirectionA = servicePath.getServiceAEnd().getRxDirection();
107 builder.setParameter(rxDirectionA.getLgx().getLgxDeviceName())
108 .setParameter(rxDirectionA.getLgx().getLgxPortName())
109 .setParameter(rxDirectionA.getLgx().getLgxPortRack())
110 .setParameter(rxDirectionA.getLgx().getLgxPortShelf());
111 builder.setParameter(rxDirectionA.getTail().getTailRoadm().getNodeId());
112 builder.setParameter(rxDirectionA.getTail().getXponderPort().getCircuitPackName());
113 builder.setParameter(rxDirectionA.getTail().getXponderPort().getPortName());
114 builder.setParameter(rxDirectionA.getTail().getTailRoadmPortAid());
115 builder.setParameter(rxDirectionA.getTail().getTailRoadmPortRackLocation());
117 builder.setParameter(servicePath.getServiceAEnd().getOpticType().getName());
119 Router routerA = servicePath.getServiceAEnd().getRouter();
120 builder.setParameter(routerA.getNodeId()).setParameter(routerA.getIpAddress().toString())
121 .setParameter(routerA.getUrl());
122 builder.setParameter(servicePath.getServiceAEnd().getUserLabel());
124 ServiceZEnd serviceZEnd = servicePath.getServiceZEnd();
125 builder.setParameter(serviceZEnd.getServiceFormat().getName()).setParameter(serviceZEnd.getServiceRate())
126 .setParameter(serviceZEnd.getClli()).setParameter(serviceZEnd.getNodeId());
129 Port zendTxDirection = serviceZEnd.getTxDirection().getPort();
130 builder.setParameter(zendTxDirection.getPortDeviceName()).setParameter(zendTxDirection.getPortName())
131 .setParameter(zendTxDirection.getPortRack()).setParameter(zendTxDirection.getPortShelf())
132 .setParameter(zendTxDirection.getPortSlot()).setParameter(zendTxDirection.getPortSubSlot());
135 TxDirection txDirectionZ = serviceZEnd.getTxDirection();
136 builder.setParameter(txDirectionZ.getLgx().getLgxDeviceName())
137 .setParameter(txDirectionZ.getLgx().getLgxPortName())
138 .setParameter(txDirectionZ.getLgx().getLgxPortRack())
139 .setParameter(txDirectionZ.getLgx().getLgxPortShelf());
140 builder.setParameter(txDirectionZ.getTail().getTailRoadm().getNodeId());
141 builder.setParameter(txDirectionZ.getTail().getXponderPort().getCircuitPackName());
142 builder.setParameter(txDirectionZ.getTail().getXponderPort().getPortName());
143 builder.setParameter(txDirectionZ.getTail().getTailRoadmPortAid());
144 builder.setParameter(txDirectionZ.getTail().getTailRoadmPortRackLocation());
147 RxDirection rxDirectionZ = servicePath.getServiceAEnd().getRxDirection();
148 builder.setParameter(rxDirectionZ.getLgx().getLgxDeviceName())
149 .setParameter(rxDirectionZ.getLgx().getLgxPortName())
150 .setParameter(rxDirectionZ.getLgx().getLgxPortRack())
151 .setParameter(rxDirectionZ.getLgx().getLgxPortShelf());
152 builder.setParameter(rxDirectionZ.getTail().getTailRoadm().getNodeId());
153 builder.setParameter(rxDirectionZ.getTail().getXponderPort().getCircuitPackName());
154 builder.setParameter(rxDirectionZ.getTail().getXponderPort().getPortName());
155 builder.setParameter(rxDirectionZ.getTail().getTailRoadmPortAid());
156 builder.setParameter(rxDirectionZ.getTail().getTailRoadmPortRackLocation());
158 builder.setParameter(servicePath.getServiceAEnd().getOpticType().getName());
160 Router routerZ = servicePath.getServiceZEnd().getRouter();
161 builder.setParameter(routerZ.getNodeId()).setParameter(routerZ.getIpAddress().toString())
162 .setParameter(routerZ.getUrl());
163 builder.setParameter(servicePath.getServiceZEnd().getUserLabel());
165 String customerCode = "";
166 if ((servicePath.getHardConstraints().getCustomerCode() == null)
167 || servicePath.getHardConstraints().getCustomerCode().isEmpty()) {
168 customerCode = servicePath.getHardConstraints().getCustomerCode().iterator().next();
170 builder.setParameter(customerCode);
171 builder.setParameter(servicePath.getDueDate().getValue());
172 builder.setParameter(servicePath.getEndDate().getValue());
173 builder.setParameter(servicePath.getNcCode());
174 builder.setParameter(servicePath.getNciCode());
175 builder.setParameter(servicePath.getSecondaryNciCode());
176 builder.setParameter(servicePath.getCustomer());
177 builder.setParameter(servicePath.getCustomerContact());
178 builder.setParameter(servicePath.getOperatorContact());
179 builder.setParameter(servicePath.getLatency());
180 String fiberSpanSrlgs = "";
181 if ((servicePath.getFiberSpanSrlgs() == null) || servicePath.getFiberSpanSrlgs().isEmpty()) {
182 fiberSpanSrlgs = servicePath.getFiberSpanSrlgs().iterator().next();
184 String supportingServiceName = "";
185 if ((servicePath.getSupportingServiceName() == null) || servicePath.getSupportingServiceName().isEmpty()) {
186 supportingServiceName = servicePath.getSupportingServiceName().iterator().next();
188 // TODO: hard constraints and soft constraints are missing
189 builder.setParameter(fiberSpanSrlgs);
190 builder.setParameter(supportingServiceName);
191 builder.setParameter(getCurrentTimestamp());
192 builder.setParameter(getCurrentTimestamp());
196 * If the input value is null or empty string returns an empty string otherwise
199 * @param value a value potentially NULL
200 * @return String the string value potentially empty if value is NULL
202 private static String getStringOf(String value) {
203 return Strings.isNullOrEmpty(value) ? "" : value;