2 * ============LICENSE_START=======================================================
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
12 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 * ECOMP is a trademark and service mark of AT&T Intellectual Property.
23 package org.onap.aai.sparky.dal.elasticsearch;
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;
32 * The Class ElasticSearchAdapter.
36 public class ElasticSearchAdapter implements ElasticSearchDataProvider {
38 private static final String BULK_IMPORT_INDEX_TEMPLATE =
39 "{\"index\":{\"_index\":\"%s\",\"_type\":\"%s\",\"_id\":\"%s\", \"_version\":\"%s\"}}\n";
41 private final RestDataProvider restDataProvider;
42 private final ElasticSearchConfig esConfig;
45 * Instantiates a new elastic search adapter.
47 * @param provider the provider
49 public ElasticSearchAdapter(RestDataProvider provider, ElasticSearchConfig esConfig) {
50 this.restDataProvider = provider;
51 this.esConfig = esConfig;
57 * @see org.onap.aai.sparky.dal.rest.RestDataProvider#doGet(java.lang.String, java.lang.String)
60 public OperationResult doGet(String url, String acceptContentType) {
61 return restDataProvider.doGet(url, acceptContentType);
67 * @see org.onap.aai.sparky.dal.rest.RestDataProvider#doDelete(java.lang.String, java.lang.String)
70 public OperationResult doDelete(String url, String acceptContentType) {
71 return restDataProvider.doDelete(url, acceptContentType);
77 * @see org.onap.aai.sparky.dal.rest.RestDataProvider#doPost(java.lang.String, java.lang.String,
81 public OperationResult doPost(String url, String jsonPayload, String acceptContentType) {
82 return restDataProvider.doPost(url, jsonPayload, acceptContentType);
88 * @see org.onap.aai.sparky.dal.rest.RestDataProvider#doPut(java.lang.String, java.lang.String,
92 public OperationResult doPut(String url, String jsonPayload, String acceptContentType) {
93 return restDataProvider.doPut(url, jsonPayload, acceptContentType);
99 * @see org.onap.aai.sparky.dal.rest.RestDataProvider#doPatch(java.lang.String, java.lang.String,
103 public OperationResult doPatch(String url, String jsonPayload, String acceptContentType) {
104 return restDataProvider.doPatch(url, jsonPayload, acceptContentType);
110 * @see org.onap.aai.sparky.dal.rest.RestDataProvider#doHead(java.lang.String, java.lang.String)
113 public OperationResult doHead(String url, String acceptContentType) {
114 return restDataProvider.doHead(url, acceptContentType);
120 * @see org.onap.aai.sparky.dal.rest.RestDataProvider#clearCache()
123 public void clearCache() {
124 restDataProvider.clearCache();
130 * @see org.onap.aai.sparky.dal.elasticsearch.ElasticSearchDataProvider#doBulkOperation(java.lang.
131 * String, java.lang.String)
134 public OperationResult doBulkOperation(String url, String payload) {
136 return doRestfulOperation(HttpMethod.PUT, url, payload,
137 RestfulDataAccessor.APPLICATION_X_WWW_FORM_URL_ENCODED,
138 RestfulDataAccessor.APPLICATION_JSON);
144 * @see org.onap.aai.sparky.dal.elasticsearch.ElasticSearchDataProvider#shutdown()
147 public void shutdown() {
148 restDataProvider.shutdown();
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)
159 public OperationResult doRestfulOperation(HttpMethod method, String url, String payload,
160 String payloadType, String acceptContentType) {
161 return restDataProvider.doRestfulOperation(method, url, payload, payloadType,
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)
173 public String buildBulkImportOperationRequest(String index, String type, String id,
174 String version, String payload) {
176 StringBuilder requestPayload = new StringBuilder(128);
178 requestPayload.append(String.format(BULK_IMPORT_INDEX_TEMPLATE, index, type, id, version));
179 requestPayload.append(payload).append("\n");
181 return requestPayload.toString();
186 public OperationResult retrieveEntityById(String entityId) throws Exception {
188 String url = esConfig.getElasticFullUrl("/" + entityId);
189 return doGet(url, "application/json");
193 * @return the bulkImportIndexTemplate
195 public static String getBulkImportIndexTemplate() {
196 return BULK_IMPORT_INDEX_TEMPLATE;
200 * @return the restDataProvider
202 public RestDataProvider getRestDataProvider() {
203 return restDataProvider;
207 * @return the esConfig
209 public ElasticSearchConfig getEsConfig() {