Update the dependencies to use project version
[aai/sparky-be.git] / src / main / java / org / onap / aai / sparky / dal / elasticsearch / ElasticSearchAdapter.java
1 /**
2  * ============LICENSE_START=======================================================
3  * org.onap.aai
4  * ================================================================================
5  * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
6  * Copyright © 2017 Amdocs
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  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22  */
23 package org.onap.aai.sparky.dal.elasticsearch;
24
25 import org.onap.aai.sparky.dal.elasticsearch.config.ElasticSearchConfig;
26 import org.onap.aai.sparky.dal.rest.HttpMethod;
27 import org.onap.aai.sparky.dal.rest.OperationResult;
28 import org.onap.aai.sparky.dal.rest.RestDataProvider;
29 import org.onap.aai.sparky.dal.rest.RestfulDataAccessor;
30
31 /**
32  * The Class ElasticSearchAdapter.
33  *
34  * @author davea.
35  */
36 public class ElasticSearchAdapter implements ElasticSearchDataProvider {
37
38   private static final String BULK_IMPORT_INDEX_TEMPLATE =
39       "{\"index\":{\"_index\":\"%s\",\"_type\":\"%s\",\"_id\":\"%s\", \"_version\":\"%s\"}}\n";
40
41   private final RestDataProvider restDataProvider;
42   private final ElasticSearchConfig esConfig;
43
44   /**
45    * Instantiates a new elastic search adapter.
46    *
47    * @param provider the provider
48    */
49   public ElasticSearchAdapter(RestDataProvider provider, ElasticSearchConfig esConfig) {
50     this.restDataProvider = provider;
51     this.esConfig = esConfig;
52   }
53
54   /*
55    * (non-Javadoc)
56    * 
57    * @see org.onap.aai.sparky.dal.rest.RestDataProvider#doGet(java.lang.String, java.lang.String)
58    */
59   @Override
60   public OperationResult doGet(String url, String acceptContentType) {
61     return restDataProvider.doGet(url, acceptContentType);
62   }
63
64   /*
65    * (non-Javadoc)
66    * 
67    * @see org.onap.aai.sparky.dal.rest.RestDataProvider#doDelete(java.lang.String, java.lang.String)
68    */
69   @Override
70   public OperationResult doDelete(String url, String acceptContentType) {
71     return restDataProvider.doDelete(url, acceptContentType);
72   }
73
74   /*
75    * (non-Javadoc)
76    * 
77    * @see org.onap.aai.sparky.dal.rest.RestDataProvider#doPost(java.lang.String, java.lang.String,
78    * java.lang.String)
79    */
80   @Override
81   public OperationResult doPost(String url, String jsonPayload, String acceptContentType) {
82     return restDataProvider.doPost(url, jsonPayload, acceptContentType);
83   }
84
85   /*
86    * (non-Javadoc)
87    * 
88    * @see org.onap.aai.sparky.dal.rest.RestDataProvider#doPut(java.lang.String, java.lang.String,
89    * java.lang.String)
90    */
91   @Override
92   public OperationResult doPut(String url, String jsonPayload, String acceptContentType) {
93     return restDataProvider.doPut(url, jsonPayload, acceptContentType);
94   }
95
96   /*
97    * (non-Javadoc)
98    * 
99    * @see org.onap.aai.sparky.dal.rest.RestDataProvider#doPatch(java.lang.String, java.lang.String,
100    * java.lang.String)
101    */
102   @Override
103   public OperationResult doPatch(String url, String jsonPayload, String acceptContentType) {
104     return restDataProvider.doPatch(url, jsonPayload, acceptContentType);
105   }
106
107   /*
108    * (non-Javadoc)
109    * 
110    * @see org.onap.aai.sparky.dal.rest.RestDataProvider#doHead(java.lang.String, java.lang.String)
111    */
112   @Override
113   public OperationResult doHead(String url, String acceptContentType) {
114     return restDataProvider.doHead(url, acceptContentType);
115   }
116
117   /*
118    * (non-Javadoc)
119    * 
120    * @see org.onap.aai.sparky.dal.rest.RestDataProvider#clearCache()
121    */
122   @Override
123   public void clearCache() {
124     restDataProvider.clearCache();
125   }
126
127   /*
128    * (non-Javadoc)
129    * 
130    * @see org.onap.aai.sparky.dal.elasticsearch.ElasticSearchDataProvider#doBulkOperation(java.lang.
131    * String, java.lang.String)
132    */
133   @Override
134   public OperationResult doBulkOperation(String url, String payload) {
135
136     return doRestfulOperation(HttpMethod.PUT, url, payload,
137         RestfulDataAccessor.APPLICATION_X_WWW_FORM_URL_ENCODED,
138         RestfulDataAccessor.APPLICATION_JSON);
139   }
140
141   /*
142    * (non-Javadoc)
143    * 
144    * @see org.onap.aai.sparky.dal.elasticsearch.ElasticSearchDataProvider#shutdown()
145    */
146   @Override
147   public void shutdown() {
148     restDataProvider.shutdown();
149   }
150
151   /*
152    * (non-Javadoc)
153    * 
154    * @see
155    * org.onap.aai.sparky.dal.rest.RestDataProvider#doRestfulOperation(org.onap.aai.sparky.dal.rest.
156    * HttpMethod, java.lang.String, java.lang.String, java.lang.String, java.lang.String)
157    */
158   @Override
159   public OperationResult doRestfulOperation(HttpMethod method, String url, String payload,
160       String payloadType, String acceptContentType) {
161     return restDataProvider.doRestfulOperation(method, url, payload, payloadType,
162         acceptContentType);
163   }
164
165   /*
166    * (non-Javadoc)
167    * 
168    * @see
169    * org.onap.aai.sparky.dal.elasticsearch.ElasticSearchDataProvider#buildBulkImportOperationRequest
170    * (java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)
171    */
172   @Override
173   public String buildBulkImportOperationRequest(String index, String type, String id,
174       String version, String payload) {
175
176     StringBuilder requestPayload = new StringBuilder(128);
177
178     requestPayload.append(String.format(BULK_IMPORT_INDEX_TEMPLATE, index, type, id, version));
179     requestPayload.append(payload).append("\n");
180
181     return requestPayload.toString();
182
183   }
184
185   @Override
186   public OperationResult retrieveEntityById(String entityId) throws Exception {
187
188     String url = esConfig.getElasticFullUrl("/" + entityId);
189     return doGet(url, "application/json");
190   }
191
192   /**
193    * @return the bulkImportIndexTemplate
194    */
195   public static String getBulkImportIndexTemplate() {
196     return BULK_IMPORT_INDEX_TEMPLATE;
197   }
198
199   /**
200    * @return the restDataProvider
201    */
202   public RestDataProvider getRestDataProvider() {
203     return restDataProvider;
204   }
205
206   /**
207    * @return the esConfig
208    */
209   public ElasticSearchConfig getEsConfig() {
210     return esConfig;
211   }
212
213 }