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