Merge "Fix Blocker/Critical sonar issues"
[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   /* (non-Javadoc)
55    * @see org.onap.aai.sparky.dal.rest.RestDataProvider#doGet(java.lang.String, java.lang.String)
56    */
57   @Override
58   public OperationResult doGet(String url, String acceptContentType) {
59     return restDataProvider.doGet(url, acceptContentType);
60   }
61
62   /* (non-Javadoc)
63    * @see org.onap.aai.sparky.dal.rest.RestDataProvider#doDelete(java.lang.String, java.lang.String)
64    */
65   @Override
66   public OperationResult doDelete(String url, String acceptContentType) {
67     return restDataProvider.doDelete(url, acceptContentType);
68   }
69
70   /* (non-Javadoc)
71    * @see org.onap.aai.sparky.dal.rest.RestDataProvider#doPost(java.lang.String, java.lang.String, java.lang.String)
72    */
73   @Override
74   public OperationResult doPost(String url, String jsonPayload, String acceptContentType) {
75     return restDataProvider.doPost(url, jsonPayload, acceptContentType);
76   }
77
78   /* (non-Javadoc)
79    * @see org.onap.aai.sparky.dal.rest.RestDataProvider#doPut(java.lang.String, java.lang.String, java.lang.String)
80    */
81   @Override
82   public OperationResult doPut(String url, String jsonPayload, String acceptContentType) {
83     return restDataProvider.doPut(url, jsonPayload, acceptContentType);
84   }
85
86   /* (non-Javadoc)
87    * @see org.onap.aai.sparky.dal.rest.RestDataProvider#doPatch(java.lang.String, java.lang.String, java.lang.String)
88    */
89   @Override
90   public OperationResult doPatch(String url, String jsonPayload, String acceptContentType) {
91     return restDataProvider.doPatch(url, jsonPayload, acceptContentType);
92   }
93
94   /* (non-Javadoc)
95    * @see org.onap.aai.sparky.dal.rest.RestDataProvider#doHead(java.lang.String, java.lang.String)
96    */
97   @Override
98   public OperationResult doHead(String url, String acceptContentType) {
99     return restDataProvider.doHead(url, acceptContentType);
100   }
101
102   /* (non-Javadoc)
103    * @see org.onap.aai.sparky.dal.rest.RestDataProvider#clearCache()
104    */
105   @Override
106   public void clearCache() {
107     restDataProvider.clearCache();
108   }
109
110   /* (non-Javadoc)
111    * @see org.onap.aai.sparky.dal.elasticsearch.ElasticSearchDataProvider#doBulkOperation(java.lang.String, java.lang.String)
112    */
113   @Override
114   public OperationResult doBulkOperation(String url, String payload) {
115
116     return doRestfulOperation(HttpMethod.PUT, url, payload,
117         RestfulDataAccessor.APPLICATION_X_WWW_FORM_URL_ENCODED,
118         RestfulDataAccessor.APPLICATION_JSON);
119   }
120
121   /* (non-Javadoc)
122    * @see org.onap.aai.sparky.dal.elasticsearch.ElasticSearchDataProvider#shutdown()
123    */
124   @Override
125   public void shutdown() {
126     restDataProvider.shutdown();
127   }
128
129   /* (non-Javadoc)
130    * @see org.onap.aai.sparky.dal.rest.RestDataProvider#doRestfulOperation(org.onap.aai.sparky.dal.rest.HttpMethod, java.lang.String, java.lang.String, java.lang.String, java.lang.String)
131    */
132   @Override
133   public OperationResult doRestfulOperation(HttpMethod method, String url, String payload,
134       String payloadType, String acceptContentType) {
135     return restDataProvider.doRestfulOperation(method, url, payload, payloadType,
136         acceptContentType);
137   }
138
139   /* (non-Javadoc)
140    * @see org.onap.aai.sparky.dal.elasticsearch.ElasticSearchDataProvider#buildBulkImportOperationRequest(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)
141    */
142   @Override
143   public String buildBulkImportOperationRequest(String index, String type, String id,
144       String version, String payload) {
145
146     StringBuilder requestPayload = new StringBuilder(128);
147
148     requestPayload.append(String.format(BULK_IMPORT_INDEX_TEMPLATE, index, type, id, version));
149     requestPayload.append(payload).append("\n");
150
151     return requestPayload.toString();
152
153   }
154
155   @Override
156   public OperationResult retrieveEntityById(String entityId) throws Exception {
157
158     String url = esConfig.getElasticFullUrl("/" +entityId);
159     return doGet( url, "application/json");
160   }
161
162 }