1 package org.openecomp.core.zusammen.db.impl;
3 import com.amdocs.zusammen.adaptor.inbound.api.item.ElementAdaptorFactory;
4 import com.amdocs.zusammen.adaptor.inbound.api.item.ItemAdaptorFactory;
5 import com.amdocs.zusammen.adaptor.inbound.api.item.ItemVersionAdaptorFactory;
6 import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element;
7 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo;
8 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement;
9 import com.amdocs.zusammen.datatypes.Id;
10 import com.amdocs.zusammen.datatypes.SessionContext;
11 import com.amdocs.zusammen.datatypes.Space;
12 import com.amdocs.zusammen.datatypes.item.ElementContext;
13 import com.amdocs.zusammen.datatypes.item.Info;
14 import com.amdocs.zusammen.datatypes.item.Item;
15 import com.amdocs.zusammen.datatypes.item.ItemVersion;
16 import com.amdocs.zusammen.datatypes.item.ItemVersionData;
17 import com.amdocs.zusammen.datatypes.itemversion.Tag;
18 import com.amdocs.zusammen.datatypes.response.Response;
19 import com.amdocs.zusammen.datatypes.response.ReturnCode;
20 import org.openecomp.core.zusammen.db.ZusammenConnector;
21 import org.openecomp.core.zusammen.impl.CassandraConnectionInitializer;
22 import org.openecomp.core.zusammen.impl.ItemElementLoggerTargetServiceName;
23 import org.openecomp.sdc.datatypes.error.ErrorLevel;
24 import org.openecomp.sdc.logging.context.impl.MdcDataErrorMessage;
25 import org.openecomp.sdc.logging.types.LoggerConstants;
26 import org.openecomp.sdc.logging.types.LoggerErrorCode;
28 import java.util.Collection;
29 import java.util.Optional;
31 public class ZusammenConnectorImpl implements ZusammenConnector {
33 private ItemAdaptorFactory itemAdaptorFactory;
34 private ItemVersionAdaptorFactory versionAdaptorFactory;
35 private ElementAdaptorFactory elementAdaptorFactory;
37 public ZusammenConnectorImpl(
38 ItemAdaptorFactory itemAdaptorFactory,
39 ItemVersionAdaptorFactory versionAdaptorFactory,
40 ElementAdaptorFactory elementAdaptorFactory) {
41 this.itemAdaptorFactory = itemAdaptorFactory;
42 this.versionAdaptorFactory = versionAdaptorFactory;
43 this.elementAdaptorFactory = elementAdaptorFactory;
44 CassandraConnectionInitializer.setCassandraConnectionPropertiesToSystem();
48 public Collection<Item> listItems(SessionContext context) {
49 Response<Collection<Item>> response =
50 itemAdaptorFactory.createInterface(context).list(context);
51 if (response.isSuccessful()) {
52 return response.getValue();
59 public Id createItem(SessionContext context, Info info) {
60 Response<Id> response = itemAdaptorFactory.createInterface(context).create(context, info);
61 if (response.isSuccessful()) {
62 return response.getValue();
64 throw new RuntimeException(
65 "failed to create Item. message:" + response.getReturnCode().getMessage());
70 public void updateItem(SessionContext context, Id itemId, Info info) {
71 Response<Void> response =
72 itemAdaptorFactory.createInterface(context).update(context, itemId, info);
74 if (!response.isSuccessful()) {
75 throw new RuntimeException("failed to update Item . ItemId:" + itemId + "" +
76 " message:" + response.getReturnCode().getMessage());
81 public Collection<ItemVersion> listVersions(SessionContext context, Id itemId) {
82 Response<Collection<ItemVersion>> versions =
83 versionAdaptorFactory.createInterface(context).list(context, Space.PRIVATE, itemId);
84 if (!versions.isSuccessful()) {
85 logErrorMessageToMdc(ItemElementLoggerTargetServiceName.ITEM_VERSION_RETRIEVAL, versions
87 throw new RuntimeException(versions.getReturnCode().getMessage()); // TODO: 3/26/2017
89 return versions.getValue();
93 public Id createVersion(SessionContext context, Id itemId, Id baseVersionId,
94 ItemVersionData itemVersionData) {
95 Response<Id> response = versionAdaptorFactory.createInterface(context).create(context, itemId,
96 baseVersionId, itemVersionData);
97 if (response.isSuccessful()) {
98 return response.getValue();
100 throw new RuntimeException("failed to create Item Version. ItemId:" + itemId + " based " +
101 "on:" + baseVersionId +
102 " message:" + response
103 .getReturnCode().getMessage());
108 public void updateVersion(SessionContext context, Id itemId, Id versionId,
109 ItemVersionData itemVersionData) {
110 Response<Void> response = versionAdaptorFactory.createInterface(context)
111 .update(context, itemId, versionId, itemVersionData);
112 if (!response.isSuccessful()) {
113 throw new RuntimeException(
114 String.format("failed to create Item Version. ItemId: %s, versionId: %s, message: %s",
115 itemId.getValue(), versionId.getValue(), response.getReturnCode().getMessage()));
120 public void tagVersion(SessionContext context, Id itemId, Id versionId, Tag tag) {
121 Response<Void> response = versionAdaptorFactory.createInterface(context)
122 .tag(context, itemId, versionId, null, tag);
123 if (!response.isSuccessful()) {
124 throw new RuntimeException(String.format(
125 "failed to tag Item Version with tag %s. ItemId: %s, versionId: %s, message: %s",
126 tag.getName(), itemId.getValue(), versionId.getValue(), response.getReturnCode()
132 public void resetVersionHistory(SessionContext context, Id itemId, Id versionId,
134 Response<Void> response = versionAdaptorFactory.createInterface(context)
135 .resetHistory(context, itemId, versionId, changeRef);
136 if (!response.isSuccessful()) {
137 throw new RuntimeException(String.format(
138 "failed to reset Item Version back to %s. ItemId: %s, versionId: %s, message: %s",
139 changeRef, itemId.getValue(), versionId.getValue(),
140 response.getReturnCode().getMessage()));
145 public Collection<ElementInfo> listElements(SessionContext context,
146 ElementContext elementContext,
147 Id parentElementId) {
148 Response<Collection<ElementInfo>> elementInfosResponse = elementAdaptorFactory
149 .createInterface(context).list(context, elementContext, parentElementId);
150 if (elementInfosResponse.isSuccessful()) {
151 return elementInfosResponse.getValue();
153 logErrorMessageToMdc(ItemElementLoggerTargetServiceName.ELEMENT_GET_BY_PROPERTY,
154 elementInfosResponse.getReturnCode());
155 throw new RuntimeException(elementInfosResponse.getReturnCode().getMessage());
160 public Response<ElementInfo> getElementInfo(SessionContext context, ElementContext elementContext,
162 return elementAdaptorFactory.createInterface(context)
163 .getInfo(context, elementContext, elementId);
168 public Response<Element> getElement(SessionContext context, ElementContext elementContext,
170 return elementAdaptorFactory.createInterface(context).get(context, elementContext, elementId);
174 public Optional<Element> saveElement(SessionContext context, ElementContext elementContext,
175 ZusammenElement element, String message) {
176 Response<Element> saveResponse = elementAdaptorFactory.createInterface(context)
177 .save(context, elementContext, element, message);
178 return saveResponse.isSuccessful()
179 ? Optional.of(saveResponse.getValue())
180 : Optional.empty(); // TODO: 3/21/2017 error?
183 private void logErrorMessageToMdc(ItemElementLoggerTargetServiceName
184 itemElementLoggerTargetServiceName,
185 ReturnCode returnCode) {
186 logErrorMessageToMdc(itemElementLoggerTargetServiceName, returnCode.toString());
189 private void logErrorMessageToMdc(ItemElementLoggerTargetServiceName
190 itemElementLoggerTargetServiceName,
192 MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
193 itemElementLoggerTargetServiceName.getDescription(),
194 ErrorLevel.ERROR.name(),
195 LoggerErrorCode.BUSINESS_PROCESS_ERROR.getErrorCode(),