0a966aef657e1a36bb51e2656980e80bfbbfe70b
[ccsdk/features.git] / sdnr / wt / data-provider / provider / src / main / java / org / onap / ccsdk / features / sdnr / wt / dataprovider / data / ElasticSearchDataProvider.java
1 /*
2  * ============LICENSE_START=======================================================
3  * ONAP : ccsdk features
4  * ================================================================================
5  * Copyright (C) 2019 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.data;
23
24 import java.io.IOException;
25 import java.util.concurrent.TimeUnit;
26 import org.onap.ccsdk.features.sdnr.wt.common.database.HtDatabaseClient;
27 import org.onap.ccsdk.features.sdnr.wt.common.database.config.HostInfo;
28 import org.onap.ccsdk.features.sdnr.wt.dataprovider.data.acessor.DataObjectAcessorPm;
29 import org.onap.ccsdk.features.sdnr.wt.dataprovider.data.acessor.DataObjectAcessorPm.Intervall;
30 import org.onap.ccsdk.features.sdnr.wt.dataprovider.data.acessor.DataObjectAcessorStatus;
31 import org.onap.ccsdk.features.sdnr.wt.dataprovider.data.acessor.DataObjectAcessorWithId;
32 import org.onap.ccsdk.features.sdnr.wt.dataprovider.data.entity.HtDatabaseEventsService;
33 import org.onap.ccsdk.features.sdnr.wt.dataprovider.data.entity.HtDatabaseMaintenanceService;
34 import org.onap.ccsdk.features.sdnr.wt.dataprovider.data.rpctypehelper.QueryResult;
35 import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.DataProvider;
36 import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.HtDatabaseMaintenance;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateMaintenanceInput;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateMaintenanceOutputBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateMediatorServerInput;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateMediatorServerOutputBuilder;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateNetworkElementConnectionOutputBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.DeleteMaintenanceInput;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.DeleteMaintenanceOutputBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.DeleteMediatorServerInput;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.DeleteMediatorServerOutputBuilder;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.DeleteNetworkElementConnectionInput;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.DeleteNetworkElementConnectionOutputBuilder;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Entity;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.EntityInput;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Guicutthrough;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.MaintenanceEntity;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.MediatorServerEntity;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.NetworkElementConnectionEntity;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadConnectionlogListOutputBuilder;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadEventlogListInput;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadEventlogListOutputBuilder;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadFaultcurrentListOutputBuilder;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadFaultlogListOutputBuilder;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadGuiCutThroughEntryOutputBuilder;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadInventoryListOutputBuilder;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadMaintenanceListOutputBuilder;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadMediatorServerListOutputBuilder;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadNetworkElementConnectionListOutputBuilder;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadPmdata15mDeviceListOutputBuilder;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadPmdata15mListOutputBuilder;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadPmdata15mLtpListOutputBuilder;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadPmdata24hDeviceListOutputBuilder;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadPmdata24hListOutputBuilder;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadPmdata24hLtpListOutputBuilder;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadStatusOutputBuilder;
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateMaintenanceInput;
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateMaintenanceOutputBuilder;
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateMediatorServerInput;
74 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateMediatorServerOutputBuilder;
75 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateNetworkElementConnectionInput;
76 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateNetworkElementConnectionOutputBuilder;
77 import org.slf4j.Logger;
78 import org.slf4j.LoggerFactory;
79
80 public class ElasticSearchDataProvider {
81
82     private static final Logger LOG = LoggerFactory.getLogger(ElasticSearchDataProvider.class);
83
84     private static final String EXCEPTION_UNABLE_TO_WRITE_IN_DATABASE = "unable to write data to database";
85     private static final String EXCEPTION_UNABLE_TO_UPDATE_IN_DATABASE = "unable to update data in database";
86     private static final String EXCEPTION_UNABLE_TO_REMOVE_FROM_DATABASE = "unable to remove data from database";
87
88     private final HtDatabaseClient dbClient;
89     private final DataObjectAcessorWithId<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.faultcurrent.list.output.Data> eventRWFaultCurrent;
90     private final DataObjectAcessorWithId<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.faultlog.list.output.Data> eventRWFaultLog;
91     private final DataObjectAcessorWithId<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.mediator.server.list.output.Data> mediatorserverRW;
92     private final DataObjectAcessorWithId<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.maintenance.list.output.Data> maintenanceRW;
93     private final DataObjectAcessorWithId<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.gui.cut.through.entry.output.Data> guicutthroughRW;
94     private final DataObjectAcessorWithId<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.inventory.list.output.Data> equipmentRW;
95     private final DataObjectAcessorWithId<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.connectionlog.list.output.Data> connnectionlogRW;
96     private final DataObjectAcessorWithId<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.eventlog.list.output.Data> eventlogRW;
97     private final DataObjectAcessorWithId<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.network.element.connection.list.output.Data> networkelementConnectionRW;
98     private final DataObjectAcessorPm<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data> pm15mRW;
99     private final DataObjectAcessorPm<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._24h.list.output.Data> pm24hRW;
100
101     private final DataObjectAcessorStatus readStatus;
102     private final HtDatabaseEventsService databaseService;
103     private final HtDatabaseMaintenanceService databaseMaintenanceService;
104
105     public HtDatabaseClient getRawClient() {
106         return this.dbClient;
107     }
108
109     public ElasticSearchDataProvider(HostInfo[] hosts) throws Exception {
110         this(hosts, null, null, HtDatabaseClient.TRUSTALL_DEFAULT);
111     }
112
113     public ElasticSearchDataProvider(HostInfo[] hosts, String authUsername, String authPassword, boolean trustAllCerts)
114             throws Exception {
115         super();
116         LOG.info("Start {}", this.getClass().getName());
117
118
119         this.dbClient = HtDatabaseClient.getClient(hosts, authUsername, authPassword, trustAllCerts);
120         this.mediatorserverRW = new DataObjectAcessorWithId<>(dbClient, Entity.MediatorServer,
121                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.mediator.server.list.output.Data.class);
122         this.mediatorserverRW.setWriteInterface(MediatorServerEntity.class);
123
124         this.maintenanceRW = new DataObjectAcessorWithId<>(dbClient, Entity.Maintenancemode,
125                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.maintenance.list.output.Data.class);
126         this.maintenanceRW.setWriteInterface(MaintenanceEntity.class);
127
128         this.guicutthroughRW = new DataObjectAcessorWithId<>(dbClient, org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Entity.Guicutthrough,
129                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.gui.cut.through.entry.output.Data.class);
130         this.guicutthroughRW.setWriteInterface(Guicutthrough.class);
131
132         this.equipmentRW = new DataObjectAcessorWithId<>(dbClient, Entity.Inventoryequipment,
133                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.inventory.list.output.Data.class);
134
135         this.eventRWFaultCurrent = new DataObjectAcessorWithId<>(dbClient, Entity.Faultcurrent,
136                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.faultcurrent.list.output.Data.class);
137
138         this.eventRWFaultLog = new DataObjectAcessorWithId<>(dbClient, Entity.Faultlog,
139                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.faultlog.list.output.Data.class);
140
141         this.connnectionlogRW = new DataObjectAcessorWithId<>(dbClient, Entity.Connectionlog,
142                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.connectionlog.list.output.Data.class);
143
144         this.eventlogRW = new DataObjectAcessorWithId<>(dbClient, Entity.Eventlog,
145                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.eventlog.list.output.Data.class);
146
147         this.networkelementConnectionRW = new DataObjectAcessorWithId<>(dbClient, Entity.NetworkelementConnection,
148                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.network.element.connection.list.output.Data.class);
149         this.networkelementConnectionRW.setWriteInterface(NetworkElementConnectionEntity.class);
150
151         this.pm15mRW = new DataObjectAcessorPm<>(dbClient, Intervall.PMDATA15M, Entity.Historicalperformance15min,
152                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data.class);
153
154         this.pm24hRW = new DataObjectAcessorPm<>(dbClient, Intervall.PMDATA24H, Entity.Historicalperformance24h,
155                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._24h.list.output.Data.class);
156
157         this.readStatus = new DataObjectAcessorStatus(dbClient, Entity.Faultcurrent);
158
159         this.databaseService = new HtDatabaseEventsService(dbClient, this);
160         this.databaseMaintenanceService = new HtDatabaseMaintenanceService(dbClient);
161     }
162
163     /*-------------------------
164      * Provide access to model API
165      */
166
167     public ReadFaultcurrentListOutputBuilder readFaultCurrentList(EntityInput input) {
168
169         ReadFaultcurrentListOutputBuilder outputBuilder = new ReadFaultcurrentListOutputBuilder();
170
171         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.faultcurrent.list.output.Data> result =
172                 this.eventRWFaultCurrent.getData(input);
173         outputBuilder.setData(result.getResult().getHits());
174         outputBuilder.setPagination(
175                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.faultcurrent.list.output.PaginationBuilder(
176                         result.getPagination()).build());
177         return outputBuilder;
178     }
179
180     public ReadFaultlogListOutputBuilder readFaultLogList(EntityInput input) {
181         ReadFaultlogListOutputBuilder outputBuilder = new ReadFaultlogListOutputBuilder();
182         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.faultlog.list.output.Data> result =
183                 this.eventRWFaultLog.getData(input);
184         outputBuilder.setData(result.getResult().getHits());
185         outputBuilder.setPagination(
186                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.faultlog.list.output.PaginationBuilder(
187                         result.getPagination()).build());
188         return outputBuilder;
189     }
190
191     public ReadMaintenanceListOutputBuilder readMaintenanceList(EntityInput input) {
192         ReadMaintenanceListOutputBuilder outputBuilder = new ReadMaintenanceListOutputBuilder();
193         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.maintenance.list.output.Data> result =
194                 this.maintenanceRW.getData(input);
195         outputBuilder.setData(result.getResult().getHits());
196         outputBuilder.setPagination(
197                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.maintenance.list.output.PaginationBuilder(
198                         result.getPagination()).build());
199         return outputBuilder;
200     }
201
202     public ReadMediatorServerListOutputBuilder readMediatorServerList(EntityInput input) {
203
204         ReadMediatorServerListOutputBuilder outputBuilder = new ReadMediatorServerListOutputBuilder();
205         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.mediator.server.list.output.Data> result =
206                 this.mediatorserverRW.getData(input);
207         outputBuilder.setData(result.getResult().getHits());
208         outputBuilder.setPagination(
209                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.mediator.server.list.output.PaginationBuilder(
210                         result.getPagination()).build());
211         return outputBuilder;
212     }
213
214     public ReadNetworkElementConnectionListOutputBuilder readNetworkElementConnectionList(EntityInput input) {
215         ReadNetworkElementConnectionListOutputBuilder outputBuilder =
216                 new ReadNetworkElementConnectionListOutputBuilder();
217         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.network.element.connection.list.output.Data> result =
218                 this.networkelementConnectionRW.getData(input);
219         outputBuilder.setData(result.getResult().getHits());
220         outputBuilder.setPagination(
221                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.network.element.connection.list.output.PaginationBuilder(
222                         result.getPagination()).build());
223         return outputBuilder;
224     }
225
226     public ReadInventoryListOutputBuilder readInventoryList(EntityInput input) {
227         ReadInventoryListOutputBuilder outputBuilder = new ReadInventoryListOutputBuilder();
228         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.inventory.list.output.Data> result =
229                 this.equipmentRW.getData(input);
230         outputBuilder.setData(result.getResult().getHits());
231         outputBuilder.setPagination(
232                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.inventory.list.output.PaginationBuilder(
233                         result.getPagination()).build());
234         return outputBuilder;
235     }
236
237     public ReadConnectionlogListOutputBuilder readConnectionlogList(EntityInput input) {
238         ReadConnectionlogListOutputBuilder outputBuilder = new ReadConnectionlogListOutputBuilder();
239         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.connectionlog.list.output.Data> result =
240                 this.connnectionlogRW.getData(input);
241         outputBuilder.setData(result.getResult().getHits());
242         outputBuilder.setPagination(
243                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.connectionlog.list.output.PaginationBuilder(
244                         result.getPagination()).build());
245         return outputBuilder;
246     }
247
248     public ReadEventlogListOutputBuilder readEventlogList(ReadEventlogListInput input) throws IOException {
249         ReadEventlogListOutputBuilder outputBuilder = new ReadEventlogListOutputBuilder();
250         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.eventlog.list.output.Data> result =
251                 this.eventlogRW.getData(input);
252         outputBuilder.setData(result.getResult().getHits());
253         outputBuilder.setPagination(
254                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.eventlog.list.output.PaginationBuilder(
255                         result.getPagination()).build());
256         return outputBuilder;
257     }
258
259     public ReadPmdata15mListOutputBuilder readPmdata15mList(EntityInput input) {
260         ReadPmdata15mListOutputBuilder outputBuilder = new ReadPmdata15mListOutputBuilder();
261         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data> result =
262                 this.pm15mRW.getData(input);
263         LOG.debug("Read data: readPmdata15mList: {}", result);
264         outputBuilder.setData(result.getResult().getHits());
265         outputBuilder.setPagination(
266                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.PaginationBuilder(
267                         result.getPagination()).build());
268         return outputBuilder;
269     }
270
271     public ReadPmdata24hListOutputBuilder readPmdata24hList(EntityInput input) {
272         ReadPmdata24hListOutputBuilder outputBuilder = new ReadPmdata24hListOutputBuilder();
273         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._24h.list.output.Data> result =
274                 this.pm24hRW.getData(input);
275         outputBuilder.setData(result.getResult().getHits());
276         outputBuilder.setPagination(
277                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._24h.list.output.PaginationBuilder(
278                         result.getPagination()).build());
279         return outputBuilder;
280     }
281
282     public ReadPmdata15mLtpListOutputBuilder readPmdata15mLtpList(EntityInput input) throws IOException {
283         ReadPmdata15mLtpListOutputBuilder outputBuilder = new ReadPmdata15mLtpListOutputBuilder();
284         QueryResult<String> result = pm15mRW.getDataLtpList(input);
285         outputBuilder.setPagination(
286                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.ltp.list.output.PaginationBuilder(
287                         result.getPagination()).build());
288         outputBuilder.setData(result.getResult().getHits());
289         return outputBuilder;
290     }
291
292     public ReadPmdata15mDeviceListOutputBuilder readPmdata15mDeviceList(EntityInput input) throws IOException {
293         ReadPmdata15mDeviceListOutputBuilder outputBuilder = new ReadPmdata15mDeviceListOutputBuilder();
294         QueryResult<String> result = pm15mRW.getDataDeviceList(input);
295         outputBuilder.setPagination(
296                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.device.list.output.PaginationBuilder(
297                         result.getPagination()).build());
298         outputBuilder.setData(result.getResult().getHits());
299         return outputBuilder;
300     }
301
302     public ReadPmdata24hLtpListOutputBuilder readPmdata24hLtpList(EntityInput input) throws IOException {
303
304         QueryResult<String> result = pm24hRW.getDataLtpList(input);
305
306         ReadPmdata24hLtpListOutputBuilder outputBuilder = new ReadPmdata24hLtpListOutputBuilder();
307         new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._24h.ltp.list.output.PaginationBuilder();
308         outputBuilder.setPagination(
309                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._24h.ltp.list.output.PaginationBuilder(
310                         result.getPagination()).build());
311         outputBuilder.setData(result.getResult().getHits());
312         return outputBuilder;
313     }
314
315     public ReadPmdata24hDeviceListOutputBuilder readPmdata24hDeviceList(EntityInput input) throws IOException {
316
317         QueryResult<String> result = pm24hRW.getDataDeviceList(input);
318
319         ReadPmdata24hDeviceListOutputBuilder outputBuilder = new ReadPmdata24hDeviceListOutputBuilder();
320         outputBuilder.setPagination(
321                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._24h.device.list.output.PaginationBuilder(
322                         result.getPagination()).build());
323         outputBuilder.setData(result.getResult().getHits());
324         return outputBuilder;
325     }
326
327     public ReadStatusOutputBuilder readStatus() throws IOException {
328         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.status.output.Data> result =
329                 readStatus.getDataStatus();
330
331         ReadStatusOutputBuilder outputBuilder = new ReadStatusOutputBuilder();
332         outputBuilder.setData(result.getResult().getHits());
333         return outputBuilder;
334     }
335
336     public boolean waitForYellowDatabaseStatus(long timeout, TimeUnit unit) {
337         return this.dbClient.waitForYellowStatus(unit.toMillis(timeout));
338     }
339
340     public CreateNetworkElementConnectionOutputBuilder createNetworkElementConnection(
341             NetworkElementConnectionEntity input) throws IOException {
342         String id = this.networkelementConnectionRW.update(input, input.getNodeId());
343         if (id == null) {
344             throw new IOException(EXCEPTION_UNABLE_TO_WRITE_IN_DATABASE);
345         }
346         CreateNetworkElementConnectionOutputBuilder builder = new CreateNetworkElementConnectionOutputBuilder();
347         builder.setId(id).setNodeId(input.getNodeId()).setHost(input.getHost()).setPort(input.getPort())
348                 .setUsername(input.getUsername()).setPassword(input.getPassword()).setIsRequired(input.isIsRequired())
349                 .setCoreModelCapability(input.getCoreModelCapability()).setDeviceType(input.getDeviceType());
350         return builder;
351     }
352
353     public UpdateNetworkElementConnectionOutputBuilder updateNetworkElementConnection(
354             UpdateNetworkElementConnectionInput input) throws IOException {
355         String id = this.networkelementConnectionRW.update(input, input.getId());
356         if (id == null) {
357             throw new IOException(EXCEPTION_UNABLE_TO_UPDATE_IN_DATABASE);
358         }
359         UpdateNetworkElementConnectionOutputBuilder builder = new UpdateNetworkElementConnectionOutputBuilder();
360         builder.setId(id).setNodeId(input.getNodeId()).setHost(input.getHost()).setPort(input.getPort())
361                 .setUsername(input.getUsername()).setPassword(input.getPassword())
362                 .setCoreModelCapability(input.getCoreModelCapability()).setDeviceType(input.getDeviceType());
363         return builder;
364     }
365
366     public DeleteNetworkElementConnectionOutputBuilder deleteNetworkElementConnection(
367             DeleteNetworkElementConnectionInput input) throws IOException {
368         boolean removed = this.networkelementConnectionRW.remove(input.getId());
369         if (!removed) {
370             throw new IOException(EXCEPTION_UNABLE_TO_REMOVE_FROM_DATABASE);
371         }
372         return new DeleteNetworkElementConnectionOutputBuilder();
373     }
374
375     public DeleteMediatorServerOutputBuilder deleteMediatorServer(DeleteMediatorServerInput input) throws IOException {
376         boolean removed = this.mediatorserverRW.remove(input.getId());
377         if (!removed) {
378             throw new IOException(EXCEPTION_UNABLE_TO_REMOVE_FROM_DATABASE);
379         }
380         return new DeleteMediatorServerOutputBuilder();
381     }
382
383     public DeleteMaintenanceOutputBuilder deleteMaintenance(DeleteMaintenanceInput input) throws IOException {
384         boolean removed = this.maintenanceRW.remove(input.getId());
385         if (!removed) {
386             throw new IOException(EXCEPTION_UNABLE_TO_REMOVE_FROM_DATABASE);
387         }
388         return new DeleteMaintenanceOutputBuilder();
389     }
390
391     public UpdateMaintenanceOutputBuilder updateMaintenance(UpdateMaintenanceInput input) throws IOException {
392         if (input.getId() == null) {
393             throw new IOException("please give the id for updating entry");
394         }
395         String id = this.maintenanceRW.update(input, input.getId());
396         if (id == null) {
397             throw new IOException(EXCEPTION_UNABLE_TO_UPDATE_IN_DATABASE);
398         }
399         UpdateMaintenanceOutputBuilder builder = new UpdateMaintenanceOutputBuilder(input).setId(id);
400         return builder;
401     }
402
403     public UpdateMediatorServerOutputBuilder updateMediatorServer(UpdateMediatorServerInput input) throws IOException {
404         if (input.getId() == null) {
405             throw new IOException("please give the id for updating entry");
406         }
407         String id = this.mediatorserverRW.update(input, input.getId());
408         if (id == null) {
409             throw new IOException(EXCEPTION_UNABLE_TO_UPDATE_IN_DATABASE);
410         }
411         UpdateMediatorServerOutputBuilder builder = new UpdateMediatorServerOutputBuilder();
412         builder.setId(id).setName(input.getName()).setUrl(input.getUrl());
413         return builder;
414     }
415
416     public CreateMaintenanceOutputBuilder createMaintenance(CreateMaintenanceInput input) throws IOException {
417         String id = this.maintenanceRW.write(input, input.getNodeId());
418         if (id == null) {
419             throw new IOException(EXCEPTION_UNABLE_TO_WRITE_IN_DATABASE);
420         }
421         CreateMaintenanceOutputBuilder builder = new CreateMaintenanceOutputBuilder(input).setId(id);
422         return builder;
423     }
424
425     public CreateMediatorServerOutputBuilder createMediatorServer(CreateMediatorServerInput input) throws IOException {
426         String id = this.mediatorserverRW.write(input, null);
427
428         if (id == null) {
429             throw new IOException(EXCEPTION_UNABLE_TO_WRITE_IN_DATABASE);
430         }
431         CreateMediatorServerOutputBuilder builder = new CreateMediatorServerOutputBuilder();
432         builder.setId(id).setName(input.getName()).setUrl(input.getUrl());
433         return builder;
434     }
435
436     public ReadGuiCutThroughEntryOutputBuilder readGuiCutThroughEntry(EntityInput input) {
437         ReadGuiCutThroughEntryOutputBuilder outputBuilder = new ReadGuiCutThroughEntryOutputBuilder();
438         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.gui.cut.through.entry.output.Data> result =
439                 this.guicutthroughRW.getData(input);
440         outputBuilder.setData(result.getResult().getHits());
441         outputBuilder.setPagination(
442                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.gui.cut.through.entry.output.PaginationBuilder(
443                         ).build());
444         return outputBuilder;
445     }
446
447     public DataProvider getDataProvider() {
448         return this.databaseService;
449     }
450
451     public HtDatabaseMaintenance getHtDatabaseMaintenance() {
452         return this.databaseMaintenanceService;
453     }
454
455 }