94c7dcfc6fe552ae8d7810cf9ffb7d841e849bf3
[ccsdk/features.git] /
1 /*
2  * ============LICENSE_START=======================================================
3  * ONAP : ccsdk features
4  * ================================================================================
5  * Copyright (C) 2021 highstreet technologies GmbH Intellectual Property.
6  * All rights reserved.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *     http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  *
21  */
22 package org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.data;
23
24 import java.io.IOException;
25 import java.sql.ResultSet;
26 import java.sql.SQLException;
27 import java.util.List;
28 import java.util.concurrent.TimeUnit;
29 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.DatabaseDataProvider;
30 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.SqlDBClient;
31 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.SqlDBConfig;
32 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.data.entity.HtDatabaseEventsService;
33 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.data.entity.HtDatabaseMaintenanceService;
34 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.data.rpctypehelper.QueryResult;
35 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.database.SqlDBReaderWriter;
36 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.database.SqlDBStatusReader;
37 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.query.DeleteQuery;
38 import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.DataProvider;
39 import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.HtDatabaseMaintenance;
40 import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.HtDatabaseMediatorserver;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateMaintenanceInput;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateMaintenanceOutputBuilder;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateMediatorServerInput;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateMediatorServerOutputBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateNetworkElementConnectionOutputBuilder;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.DeleteMaintenanceInput;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.DeleteMaintenanceOutputBuilder;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.DeleteMediatorServerInput;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.DeleteMediatorServerOutputBuilder;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.DeleteNetworkElementConnectionInput;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.DeleteNetworkElementConnectionOutputBuilder;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Entity;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.EntityInput;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.MaintenanceEntity;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.MediatorServerEntity;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.NetworkElementConnectionEntity;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadConnectionlogListOutputBuilder;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadEventlogListOutputBuilder;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadFaultcurrentListOutputBuilder;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadFaultlogListOutputBuilder;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadGuiCutThroughEntryOutputBuilder;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadInventoryListOutputBuilder;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadMaintenanceListOutputBuilder;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadMediatorServerListOutputBuilder;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadNetworkElementConnectionListOutputBuilder;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadPmdata15mDeviceListOutputBuilder;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadPmdata15mListOutputBuilder;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadPmdata15mLtpListOutputBuilder;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadPmdata24hDeviceListOutputBuilder;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadPmdata24hListOutputBuilder;
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadPmdata24hLtpListOutputBuilder;
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadStatusOutputBuilder;
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateMaintenanceInput;
74 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateMaintenanceOutputBuilder;
75 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateMediatorServerInput;
76 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateMediatorServerOutputBuilder;
77 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateNetworkElementConnectionInput;
78 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateNetworkElementConnectionOutputBuilder;
79 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.entity.input.Filter;
80 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.mediator.server.list.output.Data;
81 import org.slf4j.Logger;
82 import org.slf4j.LoggerFactory;
83
84
85 public class SqlDBDataProvider extends HtDatabaseEventsService implements DatabaseDataProvider {
86
87     private static final Logger LOG = LoggerFactory.getLogger(SqlDBDataProvider.class);
88
89     private static final String EXCEPTION_UNABLE_TO_WRITE_IN_DATABASE = "unable to write data to database";
90     private static final String EXCEPTION_UNABLE_TO_UPDATE_IN_DATABASE = "unable to update data in database";
91     private static final String EXCEPTION_UNABLE_TO_REMOVE_FROM_DATABASE = "unable to remove data from database";
92
93     private final HtDatabaseMediatorserver dbMediatorServerService;
94     private final HtDatabaseMaintenance dbMaintenanceService;
95     private final SqlDBReaderWriter<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.mediator.server.list.output.Data> mediatorserverRW;
96     private final SqlDBReaderWriter<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.maintenance.list.output.Data> maintenanceRW;
97     private final SqlDBStatusReader readStatus;
98
99     public SqlDBReaderWriter<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.maintenance.list.output.Data> getMaintenanceReaderWriter() {
100         return this.maintenanceRW;
101     }
102
103     public SqlDBReaderWriter<Data> getMediatorServerReaderWriter() {
104         return this.mediatorserverRW;
105     }
106
107     public SqlDBDataProvider(SqlDBConfig config) {
108         this(config, true);
109     }
110     public SqlDBDataProvider(SqlDBConfig config, boolean initControllerId) {
111         super(config);
112
113         this.mediatorserverRW = new SqlDBReaderWriter<>(this.dbClient, Entity.MediatorServer, config.getDbSuffix(),
114                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.mediator.server.list.output.Data.class,
115                 this.dbClient.getDatabaseName(), this.controllerId).setWriteInterface(MediatorServerEntity.class);
116
117         this.maintenanceRW = new SqlDBReaderWriter<>(this.dbClient, Entity.Maintenancemode, config.getDbSuffix(),
118                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.maintenance.list.output.Data.class,
119                 this.dbClient.getDatabaseName(), this.controllerId).setWriteInterface(MaintenanceEntity.class);
120
121         this.readStatus = new SqlDBStatusReader(this.dbClient, this.controllerId);
122
123         this.dbMediatorServerService = new HtDatabaseMediatorserver() {
124
125             @Override
126             public List<MediatorServerEntity> getAll() {
127                 return SqlDBDataProvider.this.mediatorserverRW.readAll(MediatorServerEntity.class);
128             }
129         };
130         this.dbMaintenanceService = new HtDatabaseMaintenanceService(this);
131         if(initControllerId) {
132             try {
133                 this.setControllerId();
134             } catch (SQLException e) {
135                 LOG.warn("problem setting controllerId: ", e);
136             }
137         }
138
139     }
140
141     /*-------------------------
142      * Provide access to model API
143      */
144
145     @Override
146     public ReadFaultcurrentListOutputBuilder readFaultCurrentList(EntityInput input) {
147
148         ReadFaultcurrentListOutputBuilder outputBuilder = new ReadFaultcurrentListOutputBuilder();
149
150         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.faultcurrent.list.output.Data> result =
151                 this.eventRWFaultCurrent.getData(input);
152         outputBuilder.setData(result.getResult());
153         outputBuilder.setPagination(
154                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.faultcurrent.list.output.PaginationBuilder(
155                         result.getPagination()).build());
156         return outputBuilder;
157     }
158
159     @Override
160     public ReadFaultlogListOutputBuilder readFaultLogList(EntityInput input) {
161         ReadFaultlogListOutputBuilder outputBuilder = new ReadFaultlogListOutputBuilder();
162         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.faultlog.list.output.Data> result =
163                 this.eventRWFaultLog.getData(input);
164         outputBuilder.setData(result.getResult());
165         outputBuilder.setPagination(
166                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.faultlog.list.output.PaginationBuilder(
167                         result.getPagination()).build());
168         return outputBuilder;
169     }
170
171     @Override
172     public ReadMaintenanceListOutputBuilder readMaintenanceList(EntityInput input) {
173         ReadMaintenanceListOutputBuilder outputBuilder = new ReadMaintenanceListOutputBuilder();
174         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.maintenance.list.output.Data> result =
175                 this.maintenanceRW.getData(input);
176         outputBuilder.setData(result.getResult());
177         outputBuilder.setPagination(
178                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.maintenance.list.output.PaginationBuilder(
179                         result.getPagination()).build());
180         return outputBuilder;
181     }
182
183     @Override
184     public ReadMediatorServerListOutputBuilder readMediatorServerList(EntityInput input) {
185
186         ReadMediatorServerListOutputBuilder outputBuilder = new ReadMediatorServerListOutputBuilder();
187         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.mediator.server.list.output.Data> result =
188                 this.mediatorserverRW.getData(input);
189         outputBuilder.setData(result.getResult());
190         outputBuilder.setPagination(
191                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.mediator.server.list.output.PaginationBuilder(
192                         result.getPagination()).build());
193         return outputBuilder;
194     }
195
196     @Override
197     public ReadNetworkElementConnectionListOutputBuilder readNetworkElementConnectionList(EntityInput input) {
198         ReadNetworkElementConnectionListOutputBuilder outputBuilder =
199                 new ReadNetworkElementConnectionListOutputBuilder();
200         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.network.element.connection.list.output.Data> result =
201                 this.networkelementConnectionRW.getData(input);
202         outputBuilder.setData(result.getResult());
203         outputBuilder.setPagination(
204                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.network.element.connection.list.output.PaginationBuilder(
205                         result.getPagination()).build());
206         return outputBuilder;
207     }
208
209     @Override
210     public ReadInventoryListOutputBuilder readInventoryList(EntityInput input) {
211         ReadInventoryListOutputBuilder outputBuilder = new ReadInventoryListOutputBuilder();
212         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.inventory.list.output.Data> result =
213                 this.equipmentRW.getData(input);
214         outputBuilder.setData(result.getResult());
215         outputBuilder.setPagination(
216                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.inventory.list.output.PaginationBuilder(
217                         result.getPagination()).build());
218         return outputBuilder;
219     }
220
221     @Override
222     public ReadConnectionlogListOutputBuilder readConnectionlogList(EntityInput input) {
223         ReadConnectionlogListOutputBuilder outputBuilder = new ReadConnectionlogListOutputBuilder();
224         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.connectionlog.list.output.Data> result =
225                 this.connectionlogRW.getData(input);
226         outputBuilder.setData(result.getResult());
227         outputBuilder.setPagination(
228                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.connectionlog.list.output.PaginationBuilder(
229                         result.getPagination()).build());
230         return outputBuilder;
231     }
232
233     @Override
234     public ReadEventlogListOutputBuilder readEventlogList(EntityInput input) throws IOException {
235         ReadEventlogListOutputBuilder outputBuilder = new ReadEventlogListOutputBuilder();
236         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.eventlog.list.output.Data> result =
237                 this.eventlogRW.getData(input);
238         outputBuilder.setData(result.getResult());
239         outputBuilder.setPagination(
240                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.eventlog.list.output.PaginationBuilder(
241                         result.getPagination()).build());
242         return outputBuilder;
243     }
244
245     @Override
246     public ReadPmdata15mListOutputBuilder readPmdata15mList(EntityInput input) {
247         ReadPmdata15mListOutputBuilder outputBuilder = new ReadPmdata15mListOutputBuilder();
248         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data> result =
249                 this.pm15mRW.getData(input);
250         LOG.debug("Read data: readPmdata15mList: {}", result);
251         outputBuilder.setData(result.getResult());
252         outputBuilder.setPagination(
253                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.PaginationBuilder(
254                         result.getPagination()).build());
255         return outputBuilder;
256     }
257
258     @Override
259     public ReadPmdata24hListOutputBuilder readPmdata24hList(EntityInput input) {
260         ReadPmdata24hListOutputBuilder outputBuilder = new ReadPmdata24hListOutputBuilder();
261         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._24h.list.output.Data> result =
262                 this.pm24hRW.getData(input);
263         outputBuilder.setData(result.getResult());
264         outputBuilder.setPagination(
265                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._24h.list.output.PaginationBuilder(
266                         result.getPagination()).build());
267         return outputBuilder;
268     }
269
270     @Override
271     public ReadPmdata15mLtpListOutputBuilder readPmdata15mLtpList(EntityInput input) throws IOException {
272         ReadPmdata15mLtpListOutputBuilder outputBuilder = new ReadPmdata15mLtpListOutputBuilder();
273         QueryResult<String> result = this.pm15mRW.getDataLtpList(input);
274         outputBuilder.setPagination(
275                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.ltp.list.output.PaginationBuilder(
276                         result.getPagination()).build());
277         outputBuilder.setData(result.getResult());
278         return outputBuilder;
279     }
280
281     @Override
282     public ReadPmdata15mDeviceListOutputBuilder readPmdata15mDeviceList(EntityInput input) throws IOException {
283         ReadPmdata15mDeviceListOutputBuilder outputBuilder = new ReadPmdata15mDeviceListOutputBuilder();
284         QueryResult<String> result = this.pm15mRW.getDataDeviceList(input);
285         outputBuilder.setPagination(
286                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.device.list.output.PaginationBuilder(
287                         result.getPagination()).build());
288         outputBuilder.setData(result.getResult());
289         return outputBuilder;
290     }
291
292     @Override
293     public ReadPmdata24hLtpListOutputBuilder readPmdata24hLtpList(EntityInput input) throws IOException {
294
295         QueryResult<String> result = this.pm24hRW.getDataLtpList(input);
296
297         ReadPmdata24hLtpListOutputBuilder outputBuilder = new ReadPmdata24hLtpListOutputBuilder();
298         new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._24h.ltp.list.output.PaginationBuilder();
299         outputBuilder.setPagination(
300                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._24h.ltp.list.output.PaginationBuilder(
301                         result.getPagination()).build());
302         outputBuilder.setData(result.getResult());
303         return outputBuilder;
304     }
305
306     @Override
307     public ReadPmdata24hDeviceListOutputBuilder readPmdata24hDeviceList(EntityInput input) throws IOException {
308
309         QueryResult<String> result = pm24hRW.getDataDeviceList(input);
310
311         ReadPmdata24hDeviceListOutputBuilder outputBuilder = new ReadPmdata24hDeviceListOutputBuilder();
312         outputBuilder.setPagination(
313                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._24h.device.list.output.PaginationBuilder(
314                         result.getPagination()).build());
315         outputBuilder.setData(result.getResult());
316         return outputBuilder;
317     }
318
319     @Override
320     public ReadStatusOutputBuilder readStatus() throws IOException {
321         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.status.output.Data> result =
322                 readStatus.getDataStatus();
323
324         ReadStatusOutputBuilder outputBuilder = new ReadStatusOutputBuilder();
325         outputBuilder.setData(result.getResult());
326         return outputBuilder;
327     }
328
329     @Override
330     public CreateNetworkElementConnectionOutputBuilder createNetworkElementConnection(
331             NetworkElementConnectionEntity input) throws IOException {
332         String id = this.networkelementConnectionRW.write(input, input.getNodeId());
333         if (id == null) {
334             throw new IOException(EXCEPTION_UNABLE_TO_WRITE_IN_DATABASE);
335         }
336         CreateNetworkElementConnectionOutputBuilder builder = new CreateNetworkElementConnectionOutputBuilder();
337         builder.setId(id).setNodeId(input.getNodeId()).setHost(input.getHost()).setPort(input.getPort())
338                 .setUsername(input.getUsername()).setPassword(input.getPassword()).setIsRequired(input.isIsRequired())
339                 .setCoreModelCapability(input.getCoreModelCapability()).setDeviceType(input.getDeviceType());
340         return builder;
341     }
342
343     @Override
344     public UpdateNetworkElementConnectionOutputBuilder updateNetworkElementConnection(
345             UpdateNetworkElementConnectionInput input) throws IOException {
346         String id = this.networkelementConnectionRW.update(input, input.getId());
347         if (id == null) {
348             throw new IOException(EXCEPTION_UNABLE_TO_UPDATE_IN_DATABASE);
349         }
350         UpdateNetworkElementConnectionOutputBuilder builder = new UpdateNetworkElementConnectionOutputBuilder();
351         builder.setId(id).setNodeId(input.getNodeId()).setHost(input.getHost()).setPort(input.getPort())
352                 .setUsername(input.getUsername()).setPassword(input.getPassword())
353                 .setCoreModelCapability(input.getCoreModelCapability()).setDeviceType(input.getDeviceType());
354         return builder;
355     }
356
357     @Override
358     public DeleteNetworkElementConnectionOutputBuilder deleteNetworkElementConnection(
359             DeleteNetworkElementConnectionInput input) throws IOException {
360         boolean removed = this.networkelementConnectionRW.remove(input.getId()) > 0;
361         if (!removed) {
362             throw new IOException(EXCEPTION_UNABLE_TO_REMOVE_FROM_DATABASE);
363         }
364         return new DeleteNetworkElementConnectionOutputBuilder();
365     }
366
367     @Override
368     public DeleteMediatorServerOutputBuilder deleteMediatorServer(DeleteMediatorServerInput input) throws IOException {
369         boolean removed = this.mediatorserverRW.remove(input.getId()) > 0;
370         if (!removed) {
371             throw new IOException(EXCEPTION_UNABLE_TO_REMOVE_FROM_DATABASE);
372         }
373         return new DeleteMediatorServerOutputBuilder();
374     }
375
376     @Override
377     public DeleteMaintenanceOutputBuilder deleteMaintenance(DeleteMaintenanceInput input) throws IOException {
378         boolean removed = this.maintenanceRW.remove(input.getId()) > 0;
379         if (!removed) {
380             throw new IOException(EXCEPTION_UNABLE_TO_REMOVE_FROM_DATABASE);
381         }
382         return new DeleteMaintenanceOutputBuilder();
383     }
384
385     @Override
386     public UpdateMaintenanceOutputBuilder updateMaintenance(UpdateMaintenanceInput input) throws IOException {
387         if (input.getId() == null) {
388             throw new IOException("please give the id for updating entry");
389         }
390         String id = this.maintenanceRW.update(input, input.getId());
391         if (id == null) {
392             throw new IOException(EXCEPTION_UNABLE_TO_UPDATE_IN_DATABASE);
393         }
394         UpdateMaintenanceOutputBuilder builder = new UpdateMaintenanceOutputBuilder(input).setId(id);
395         return builder;
396     }
397
398     @Override
399     public UpdateMediatorServerOutputBuilder updateMediatorServer(UpdateMediatorServerInput input) throws IOException {
400         if (input.getId() == null) {
401             throw new IOException("please give the id for updating entry");
402         }
403         String id = this.mediatorserverRW.update(input, input.getId());
404         if (id == null) {
405             throw new IOException(EXCEPTION_UNABLE_TO_UPDATE_IN_DATABASE);
406         }
407         UpdateMediatorServerOutputBuilder builder = new UpdateMediatorServerOutputBuilder();
408         builder.setId(id).setName(input.getName()).setUrl(input.getUrl());
409         return builder;
410     }
411
412     @Override
413     public CreateMaintenanceOutputBuilder createMaintenance(CreateMaintenanceInput input) throws IOException {
414         String id = this.maintenanceRW.write(input, input.getNodeId());
415         if (id == null) {
416             throw new IOException(EXCEPTION_UNABLE_TO_WRITE_IN_DATABASE);
417         }
418         CreateMaintenanceOutputBuilder builder = new CreateMaintenanceOutputBuilder(input).setId(id);
419         return builder;
420     }
421
422     @Override
423     public CreateMediatorServerOutputBuilder createMediatorServer(CreateMediatorServerInput input) throws IOException {
424         String id = this.mediatorserverRW.write(input, null);
425
426         if (id == null) {
427             throw new IOException(EXCEPTION_UNABLE_TO_WRITE_IN_DATABASE);
428         }
429         CreateMediatorServerOutputBuilder builder = new CreateMediatorServerOutputBuilder();
430         builder.setId(id).setName(input.getName()).setUrl(input.getUrl());
431         return builder;
432     }
433
434     @Override
435     public ReadGuiCutThroughEntryOutputBuilder readGuiCutThroughEntry(EntityInput input) {
436         ReadGuiCutThroughEntryOutputBuilder outputBuilder = new ReadGuiCutThroughEntryOutputBuilder();
437         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.gui.cut.through.entry.output.Data> result =
438                 this.guicutthroughRW.getData(input);
439         outputBuilder.setData(result.getResult());
440         outputBuilder.setPagination(
441                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.gui.cut.through.entry.output.PaginationBuilder()
442                         .build());
443         return outputBuilder;
444     }
445
446
447
448     @Override
449     public boolean waitForYellowDatabaseStatus(long timeout, TimeUnit unit) {
450         return true;
451     }
452
453     @Override
454     public DataProvider getDataProvider() {
455         return this;
456     }
457
458     @Override
459     public HtDatabaseMaintenance getHtDatabaseMaintenance() {
460         return this.dbMaintenanceService;
461     }
462
463     @Override
464     public HtDatabaseMediatorserver getHtDatabaseMediatorServer() {
465         return this.dbMediatorServerService;
466     }
467
468     public boolean delete(Entity e, List<Filter> filters) throws SQLException {
469         DeleteQuery query = new DeleteQuery(e, filters);
470         return this.dbClient.write(query.toSql());
471
472     }
473
474     public SqlDBClient getDBService() {
475         return this.dbClient;
476     }
477
478     public boolean setControllerId() throws SQLException {
479         if (this.controllerId == null) {
480             return true;
481         }
482         LOG.info("set controllerId {}", this.controllerId);
483         String query = String.format("SELECT * FROM `%s` WHERE `id`='%s';", this.controllerTableName,
484                 this.controllerId);
485         LOG.info(query);
486         ResultSet data = this.dbClient.read(query);
487
488         if (!data.next()) {
489             query = String.format("INSERT INTO `%s` (`id`,`desc`) VALUES ('%s','%s')",
490                     this.controllerTableName, this.controllerId, "");
491             LOG.info(query);
492             return this.dbClient.write(query);
493         }
494         else {
495             LOG.info("controllerId already set");
496         }
497         return true;
498     }
499
500     public void waitForDatabaseReady(int i, TimeUnit unit) {
501         this.dbClient.waitForYellowStatus(unit.convert(i, TimeUnit.MILLISECONDS));
502     }
503
504     public String getControllerId() {
505         return this.controllerId;
506     }
507
508
509 }