Initial commit for AAI-UI(sparky-backend)
[aai/sparky-be.git] / src / main / java / org / openecomp / sparky / dal / elasticsearch / ElasticSearchAdapter.java
1 /**
2  * ============LICENSE_START===================================================
3  * SPARKY (AAI UI service)
4  * ============================================================================
5  * Copyright © 2017 AT&T Intellectual Property.
6  * Copyright © 2017 Amdocs
7  * All rights reserved.
8  * ============================================================================
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  * ============LICENSE_END=====================================================
21  *
22  * ECOMP and OpenECOMP are trademarks
23  * and service marks of AT&T Intellectual Property.
24  */
25
26 package org.openecomp.sparky.dal.elasticsearch;
27
28 import org.openecomp.sparky.dal.elasticsearch.config.ElasticSearchConfig;
29 import org.openecomp.sparky.dal.rest.HttpMethod;
30 import org.openecomp.sparky.dal.rest.OperationResult;
31 import org.openecomp.sparky.dal.rest.RestDataProvider;
32 import org.openecomp.sparky.dal.rest.RestfulDataAccessor;
33
34 /**
35  * The Class ElasticSearchAdapter.
36  *
37  * @author davea.
38  */
39 public class ElasticSearchAdapter implements ElasticSearchDataProvider {
40
41   private static final String BULK_IMPORT_INDEX_TEMPLATE =
42       "{\"index\":{\"_index\":\"%s\",\"_type\":\"%s\",\"_id\":\"%s\", \"_version\":\"%s\"}}\n";
43
44   private final RestDataProvider restDataProvider;
45   private final ElasticSearchConfig esConfig;
46
47   /**
48    * Instantiates a new elastic search adapter.
49    *
50    * @param provider the provider
51    */
52   public ElasticSearchAdapter(RestDataProvider provider, ElasticSearchConfig esConfig) {
53     this.restDataProvider = provider;
54     this.esConfig = esConfig;
55   }
56
57   /* (non-Javadoc)
58    * @see org.openecomp.sparky.dal.rest.RestDataProvider#doGet(java.lang.String, java.lang.String)
59    */
60   @Override
61   public OperationResult doGet(String url, String acceptContentType) {
62     return restDataProvider.doGet(url, acceptContentType);
63   }
64
65   /* (non-Javadoc)
66    * @see org.openecomp.sparky.dal.rest.RestDataProvider#doDelete(java.lang.String, java.lang.String)
67    */
68   @Override
69   public OperationResult doDelete(String url, String acceptContentType) {
70     return restDataProvider.doDelete(url, acceptContentType);
71   }
72
73   /* (non-Javadoc)
74    * @see org.openecomp.sparky.dal.rest.RestDataProvider#doPost(java.lang.String, java.lang.String, java.lang.String)
75    */
76   @Override
77   public OperationResult doPost(String url, String jsonPayload, String acceptContentType) {
78     return restDataProvider.doPost(url, jsonPayload, acceptContentType);
79   }
80
81   /* (non-Javadoc)
82    * @see org.openecomp.sparky.dal.rest.RestDataProvider#doPut(java.lang.String, java.lang.String, java.lang.String)
83    */
84   @Override
85   public OperationResult doPut(String url, String jsonPayload, String acceptContentType) {
86     return restDataProvider.doPut(url, jsonPayload, acceptContentType);
87   }
88
89   /* (non-Javadoc)
90    * @see org.openecomp.sparky.dal.rest.RestDataProvider#doPatch(java.lang.String, java.lang.String, java.lang.String)
91    */
92   @Override
93   public OperationResult doPatch(String url, String jsonPayload, String acceptContentType) {
94     return restDataProvider.doPatch(url, jsonPayload, acceptContentType);
95   }
96
97   /* (non-Javadoc)
98    * @see org.openecomp.sparky.dal.rest.RestDataProvider#doHead(java.lang.String, java.lang.String)
99    */
100   @Override
101   public OperationResult doHead(String url, String acceptContentType) {
102     return restDataProvider.doHead(url, acceptContentType);
103   }
104
105   /* (non-Javadoc)
106    * @see org.openecomp.sparky.dal.rest.RestDataProvider#clearCache()
107    */
108   @Override
109   public void clearCache() {
110     restDataProvider.clearCache();
111   }
112
113   /* (non-Javadoc)
114    * @see org.openecomp.sparky.dal.elasticsearch.ElasticSearchDataProvider#doBulkOperation(java.lang.String, java.lang.String)
115    */
116   @Override
117   public OperationResult doBulkOperation(String url, String payload) {
118
119     return doRestfulOperation(HttpMethod.PUT, url, payload,
120         RestfulDataAccessor.APPLICATION_X_WWW_FORM_URL_ENCODED,
121         RestfulDataAccessor.APPLICATION_JSON);
122   }
123
124   /* (non-Javadoc)
125    * @see org.openecomp.sparky.dal.elasticsearch.ElasticSearchDataProvider#shutdown()
126    */
127   @Override
128   public void shutdown() {
129     restDataProvider.shutdown();
130   }
131
132   /* (non-Javadoc)
133    * @see org.openecomp.sparky.dal.rest.RestDataProvider#doRestfulOperation(org.openecomp.sparky.dal.rest.HttpMethod, java.lang.String, java.lang.String, java.lang.String, java.lang.String)
134    */
135   @Override
136   public OperationResult doRestfulOperation(HttpMethod method, String url, String payload,
137       String payloadType, String acceptContentType) {
138     return restDataProvider.doRestfulOperation(method, url, payload, payloadType,
139         acceptContentType);
140   }
141
142   /* (non-Javadoc)
143    * @see org.openecomp.sparky.dal.elasticsearch.ElasticSearchDataProvider#buildBulkImportOperationRequest(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)
144    */
145   @Override
146   public String buildBulkImportOperationRequest(String index, String type, String id,
147       String version, String payload) {
148
149     StringBuilder requestPayload = new StringBuilder(128);
150
151     requestPayload.append(String.format(BULK_IMPORT_INDEX_TEMPLATE, index, type, id, version));
152     requestPayload.append(payload).append("\n");
153
154     return requestPayload.toString();
155
156   }
157
158   @Override
159   public OperationResult retrieveEntityById(String entityId) throws Exception {
160
161     String url = esConfig.getElasticFullUrl("/" +entityId);
162     return doGet( url, "application/json");
163   }
164
165 }