2 * Copyright © 2016-2017 European Support Limited
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org.openecomp.core.zusammen.db.impl;
18 import com.amdocs.zusammen.adaptor.inbound.api.health.HealthAdaptorFactory;
19 import com.amdocs.zusammen.adaptor.inbound.api.item.ElementAdaptorFactory;
20 import com.amdocs.zusammen.adaptor.inbound.api.item.ItemAdaptorFactory;
21 import com.amdocs.zusammen.adaptor.inbound.api.item.ItemVersionAdaptorFactory;
22 import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element;
23 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementConflict;
24 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo;
25 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ItemVersionConflict;
26 import com.amdocs.zusammen.adaptor.inbound.api.types.item.MergeResult;
27 import com.amdocs.zusammen.commons.health.data.HealthInfo;
28 import com.amdocs.zusammen.datatypes.Id;
29 import com.amdocs.zusammen.datatypes.SessionContext;
30 import com.amdocs.zusammen.datatypes.Space;
31 import com.amdocs.zusammen.datatypes.item.ElementContext;
32 import com.amdocs.zusammen.datatypes.item.Info;
33 import com.amdocs.zusammen.datatypes.item.Item;
34 import com.amdocs.zusammen.datatypes.item.ItemVersion;
35 import com.amdocs.zusammen.datatypes.item.ItemVersionData;
36 import com.amdocs.zusammen.datatypes.item.ItemVersionStatus;
37 import com.amdocs.zusammen.datatypes.item.Resolution;
38 import com.amdocs.zusammen.datatypes.itemversion.ItemVersionRevisions;
39 import com.amdocs.zusammen.datatypes.itemversion.Tag;
40 import com.amdocs.zusammen.datatypes.response.Response;
41 import java.util.Collection;
42 import org.openecomp.core.zusammen.db.ZusammenConnector;
43 import org.openecomp.core.zusammen.impl.CassandraConnectionInitializer;
44 import org.openecomp.sdc.common.errors.SdcRuntimeException;
46 public class ZusammenConnectorImpl implements ZusammenConnector {
48 private static final String GET_ELEMENT_ERR_MSG =
49 "Failed to get element. Item Id: %s, version Id: %s, element Id: %s message: %s";
50 private static final String GET_ELEMENT_IN_REV_ERR_MSG =
51 "Failed to get element. Item Id: %s, version Id: %s, revision Id: %s, element Id: %s message: %s";
52 private final ItemAdaptorFactory itemAdaptorFactory;
53 private final ItemVersionAdaptorFactory versionAdaptorFactory;
54 private final ElementAdaptorFactory elementAdaptorFactory;
55 private final HealthAdaptorFactory healthAdaptorFactory;
57 public ZusammenConnectorImpl(
58 ItemAdaptorFactory itemAdaptorFactory,
59 ItemVersionAdaptorFactory versionAdaptorFactory,
60 ElementAdaptorFactory elementAdaptorFactory,
61 HealthAdaptorFactory healthAdaptorFactory) {
62 this.itemAdaptorFactory = itemAdaptorFactory;
63 this.versionAdaptorFactory = versionAdaptorFactory;
64 this.elementAdaptorFactory = elementAdaptorFactory;
65 this.healthAdaptorFactory = healthAdaptorFactory;
66 CassandraConnectionInitializer.setCassandraConnectionPropertiesToSystem();
70 public Collection<HealthInfo> checkHealth(SessionContext sessionContext) {
71 return healthAdaptorFactory.createInterface(sessionContext).getHealthStatus(sessionContext);
75 public String getVersion(SessionContext sessionContext) {
76 return healthAdaptorFactory.createInterface(sessionContext).getVersion();
80 public Collection<Item> listItems(SessionContext context) {
81 Response<Collection<Item>> response = itemAdaptorFactory.createInterface(context).list(context);
82 if (!response.isSuccessful()) {
83 throw new SdcRuntimeException(
84 "Failed to list Items. message:" + response.getReturnCode().toString());
86 return response.getValue();
90 public Item getItem(SessionContext context, Id itemId) {
91 Response<Item> response = itemAdaptorFactory.createInterface(context).get(context, itemId);
92 if (!response.isSuccessful()) {
93 throw new SdcRuntimeException(
94 "Failed to get Item. message:" + response.getReturnCode().toString());
96 return response.getValue();
100 public Id createItem(SessionContext context, Info info) {
101 Response<Id> response = itemAdaptorFactory.createInterface(context).create(context, info);
102 if (!response.isSuccessful()) {
103 throw new SdcRuntimeException(
104 "Failed to create Item. message:" + response.getReturnCode().toString());
106 return response.getValue();
110 public void deleteItem(SessionContext context, Id itemId){
111 Response<Void> response = itemAdaptorFactory.createInterface(context).delete(context, itemId);
112 if (!response.isSuccessful()) {
113 throw new SdcRuntimeException(
114 "Failed to delete Item. message:" + response.getReturnCode().toString());
119 public void updateItem(SessionContext context, Id itemId, Info info) {
120 Response<Void> response =
121 itemAdaptorFactory.createInterface(context).update(context, itemId, info);
123 if (!response.isSuccessful()) {
124 throw new SdcRuntimeException("failed to update Item . ItemId:" + itemId + "" +
125 " message:" + response.getReturnCode().toString());
130 public Collection<ItemVersion> listPublicVersions(SessionContext context, Id itemId) {
131 Response<Collection<ItemVersion>> versions =
132 versionAdaptorFactory.createInterface(context).list(context, Space.PUBLIC, itemId);
133 if (!versions.isSuccessful()) {
134 throw new SdcRuntimeException("failed to list public versions. message: " +
135 versions.getReturnCode().toString());
137 return versions.getValue();
141 public ItemVersion getPublicVersion(SessionContext context, Id itemId, Id versionId) {
142 Response<ItemVersion> response = versionAdaptorFactory.createInterface(context)
143 .get(context, Space.PUBLIC, itemId, versionId);
144 if (!response.isSuccessful()) {
145 throw new SdcRuntimeException(
146 String.format("failed to get public Item Version. ItemId: %s, versionId: %s, message: %s",
147 itemId.getValue(), versionId.getValue(), response.getReturnCode().toString()));
149 return response.getValue();
153 public Id createVersion(SessionContext context, Id itemId, Id baseVersionId,
154 ItemVersionData itemVersionData) {
155 Response<Id> response = versionAdaptorFactory.createInterface(context).create(context, itemId,
156 baseVersionId, itemVersionData);
157 if (response.isSuccessful()) {
158 return response.getValue();
160 throw new SdcRuntimeException(String.format(
161 "failed to create Item Version. ItemId: %s, base versionId: %s, message: %s",
162 itemId.getValue(), baseVersionId.getValue(), response.getReturnCode().toString()));
167 public void updateVersion(SessionContext context, Id itemId, Id versionId,
168 ItemVersionData itemVersionData) {
169 Response<Void> response = versionAdaptorFactory.createInterface(context)
170 .update(context, itemId, versionId, itemVersionData);
171 if (!response.isSuccessful()) {
172 throw new SdcRuntimeException(
173 String.format("failed to update Item Version. ItemId: %s, versionId: %s, message: %s",
174 itemId.getValue(), versionId.getValue(), response.getReturnCode().toString()));
179 public ItemVersion getVersion(SessionContext context, Id itemId, Id versionId) {
180 Response<ItemVersion> response = versionAdaptorFactory.createInterface(context)
181 .get(context, Space.PRIVATE, itemId, versionId);
182 if (!response.isSuccessful()) {
183 throw new SdcRuntimeException(
184 String.format("failed to get Item Version. ItemId: %s, versionId: %s, message: %s",
185 itemId.getValue(), versionId.getValue(), response.getReturnCode().toString()));
187 return response.getValue();
191 public ItemVersionStatus getVersionStatus(SessionContext context, Id itemId, Id versionId) {
192 Response<ItemVersionStatus> response =
193 versionAdaptorFactory.createInterface(context).getStatus(context, itemId, versionId);
194 if (!response.isSuccessful()) {
195 throw new SdcRuntimeException(
196 String.format("failed to get Item Version status. ItemId: %s, versionId: %s, message: %s",
197 itemId.getValue(), versionId.getValue(), response.getReturnCode().toString()));
199 return response.getValue();
203 public void tagVersion(SessionContext context, Id itemId, Id versionId, Tag tag) {
204 Response<Void> response = versionAdaptorFactory.createInterface(context)
205 .tag(context, itemId, versionId, null, tag);
206 if (!response.isSuccessful()) {
207 throw new SdcRuntimeException(String.format(
208 "failed to tag Item Version with tag %s. ItemId: %s, versionId: %s, message: %s",
209 tag.getName(), itemId.getValue(), versionId.getValue(),
210 response.getReturnCode().toString()));
215 public void resetVersionRevision(SessionContext context, Id itemId, Id versionId,
217 Response<Void> response = versionAdaptorFactory.createInterface(context)
218 .resetRevision(context, itemId, versionId, revisionId);
219 if (!response.isSuccessful()) {
220 throw new SdcRuntimeException(String.format(
221 "failed to reset Item Version back to revision: %s. ItemId: %s, versionId: %s, message:" +
223 revisionId.getValue(), itemId.getValue(), versionId.getValue(),
224 response.getReturnCode().toString()));
229 public void revertVersionRevision(SessionContext context, Id itemId, Id versionId,
231 Response<Void> response = versionAdaptorFactory.createInterface(context)
232 .revertRevision(context, itemId, versionId, revisionId);
233 if (!response.isSuccessful()) {
234 throw new SdcRuntimeException(String.format(
235 "failed to revert Item Version back to revision: %s. ItemId: %s, versionId: %s, " +
237 revisionId.getValue(), itemId.getValue(), versionId.getValue(),
238 response.getReturnCode().toString()));
243 public ItemVersionRevisions listVersionRevisions(SessionContext context, Id itemId,
245 Response<ItemVersionRevisions> response =
246 versionAdaptorFactory.createInterface(context)
247 .listRevisions(context, itemId, versionId);
248 if (!response.isSuccessful()) {
249 throw new SdcRuntimeException(String.format(
250 "failed to list revisions of Item Version. ItemId: %s, versionId: %s, message: %s",
251 itemId.getValue(), versionId.getValue(), response.getReturnCode().toString()));
253 return response.getValue();
258 public void publishVersion(SessionContext context, Id itemId, Id versionId, String message) {
259 Response<Void> response =
260 versionAdaptorFactory.createInterface(context).publish(context, itemId, versionId, message);
261 if (!response.isSuccessful()) {
262 throw new SdcRuntimeException(String.format(
263 "failed to publish item Version. ItemId: %s, versionId: %s, message: %s",
264 itemId.getValue(), versionId.getValue(), response.getReturnCode().toString()));
269 public void syncVersion(SessionContext context, Id itemId, Id versionId) {
270 Response<MergeResult> response =
271 versionAdaptorFactory.createInterface(context).sync(context, itemId, versionId);
272 if (!response.isSuccessful()) {
273 throw new SdcRuntimeException(String.format(
274 "failed to sync item Version. ItemId: %s, versionId: %s, message: %s",
275 itemId.getValue(), versionId.getValue(), response.getReturnCode().toString()));
280 public void forceSyncVersion(SessionContext context, Id itemId, Id versionId) {
281 Response<MergeResult> response =
282 versionAdaptorFactory.createInterface(context).forceSync(context, itemId, versionId);
283 if (!response.isSuccessful()) {
284 throw new SdcRuntimeException(String.format(
285 "failed to force sync item Version. ItemId: %s, versionId: %s, message: %s",
286 itemId.getValue(), versionId.getValue(), response.getReturnCode().toString()));
291 public void cleanVersion(SessionContext context, Id itemId, Id versionId) {
292 Response<Void> response =
293 versionAdaptorFactory.createInterface(context).delete(context, itemId, versionId);
294 if (!response.isSuccessful()) {
295 throw new SdcRuntimeException(String.format(
296 "failed to clean item Version. ItemId: %s, versionId: %s, message: %s",
297 itemId.getValue(), versionId.getValue(), response.getReturnCode().toString()));
302 public ItemVersionConflict getVersionConflict(SessionContext context, Id itemId, Id versionId) {
303 Response<ItemVersionConflict> response =
304 versionAdaptorFactory.createInterface(context).getConflict(context, itemId, versionId);
305 if (!response.isSuccessful()) {
306 throw new SdcRuntimeException(String
307 .format("failed to get Item Version conflict. ItemId: %s, versionId: %s, message: %s",
308 itemId.getValue(), versionId.getValue(), response.getReturnCode().toString()));
310 return response.getValue();
314 public Collection<ElementInfo> listElements(SessionContext context,
315 ElementContext elementContext,
316 Id parentElementId) {
317 Response<Collection<ElementInfo>> response = elementAdaptorFactory
318 .createInterface(context).list(context, elementContext, parentElementId);
319 if (response.isSuccessful()) {
320 return response.getValue();
322 throw new SdcRuntimeException(response.getReturnCode().toString());
328 public ElementInfo getElementInfo(SessionContext context, ElementContext elementContext,
330 Response<ElementInfo> response =
331 elementAdaptorFactory.createInterface(context).getInfo(context, elementContext, elementId);
332 if (!response.isSuccessful()) {
333 throw buildGetElementException(elementContext, elementId,
334 response.getReturnCode().toString());
337 return response.getValue();
341 public Element getElement(SessionContext context, ElementContext elementContext,
343 Response<Element> response =
344 elementAdaptorFactory.createInterface(context).get(context, elementContext, elementId);
345 if (!response.isSuccessful()) {
346 throw buildGetElementException(elementContext, elementId,
347 response.getReturnCode().toString());
349 return response.getValue();
353 public ElementConflict getElementConflict(SessionContext context, ElementContext elementContext,
355 Response<ElementConflict> response = elementAdaptorFactory.createInterface(context)
356 .getConflict(context, elementContext, elementId);
357 if (!response.isSuccessful()) {
358 throw new SdcRuntimeException(String.format(
359 "Failed to get element conflict. Item Id: %s, version Id: %s, element Id: %s message: %s",
360 elementContext.getItemId().getValue(), elementContext.getVersionId().getValue(),
361 elementId.getValue(), response.getReturnCode().toString()));
363 return response.getValue();
367 public Element saveElement(SessionContext context, ElementContext elementContext, Element element, String message) {
368 Response<Element> response = elementAdaptorFactory.createInterface(context)
369 .save(context, elementContext, element, message);
370 if (!response.isSuccessful()) {
371 throw new SdcRuntimeException(String
372 .format("Failed to create element %s. ItemId: %s, versionId: %s, message: %s",
373 element.getElementId().getValue(), elementContext.getItemId().getValue(),
374 elementContext.getVersionId().getValue(), response.getReturnCode().toString()));
376 return response.getValue();
380 public void resolveElementConflict(SessionContext context, ElementContext elementContext, Element element,
381 Resolution resolution) {
382 Response<Void> response = elementAdaptorFactory.createInterface(context)
383 .resolveConflict(context, elementContext, element, resolution);
384 if (!response.isSuccessful()) {
385 throw new SdcRuntimeException(
386 "Failed to resolve conflict. message:" + response.getReturnCode().toString());
391 public void resetVersionHistory(SessionContext context, Id itemId, Id versionId,
393 // no-op, required by the interface
396 private SdcRuntimeException buildGetElementException(ElementContext elementContext, Id elementId,
397 String zusammenErrorMessage) {
398 if (elementContext.getRevisionId() == null) {
399 return new SdcRuntimeException(String.format(GET_ELEMENT_ERR_MSG,
400 elementContext.getItemId().getValue(), elementContext.getVersionId().getValue(),
401 elementId.getValue(), zusammenErrorMessage));
403 return new SdcRuntimeException(String.format(GET_ELEMENT_IN_REV_ERR_MSG,
404 elementContext.getItemId().getValue(), elementContext.getVersionId().getValue(),
405 elementContext.getRevisionId().getValue(),
406 elementId.getValue(), zusammenErrorMessage));