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