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