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.health.HealthAdaptorFactory;
7 import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element;
8 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo;
9 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement;
10 import com.amdocs.zusammen.commons.health.data.HealthInfo;
11 import com.amdocs.zusammen.datatypes.Id;
12 import com.amdocs.zusammen.datatypes.SessionContext;
13 import com.amdocs.zusammen.datatypes.Space;
14 import com.amdocs.zusammen.datatypes.item.ElementContext;
15 import com.amdocs.zusammen.datatypes.item.Info;
16 import com.amdocs.zusammen.datatypes.item.Item;
17 import com.amdocs.zusammen.datatypes.item.ItemVersion;
18 import com.amdocs.zusammen.datatypes.item.ItemVersionData;
19 import com.amdocs.zusammen.datatypes.itemversion.Tag;
20 import com.amdocs.zusammen.datatypes.response.Response;
21 import com.amdocs.zusammen.datatypes.response.ReturnCode;
22 import org.openecomp.core.zusammen.db.ZusammenConnector;
23 import org.openecomp.core.zusammen.impl.CassandraConnectionInitializer;
24 import org.openecomp.core.zusammen.impl.ItemElementLoggerTargetServiceName;
25 import org.openecomp.sdc.datatypes.error.ErrorLevel;
26 import org.openecomp.sdc.logging.context.impl.MdcDataErrorMessage;
27 import org.openecomp.sdc.logging.types.LoggerConstants;
28 import org.openecomp.sdc.logging.types.LoggerErrorCode;
30 import java.util.Collection;
31 import java.util.Optional;
33 public class ZusammenConnectorImpl implements ZusammenConnector {
35 private ItemAdaptorFactory itemAdaptorFactory;
36 private ItemVersionAdaptorFactory versionAdaptorFactory;
37 private ElementAdaptorFactory elementAdaptorFactory;
38 private HealthAdaptorFactory healthAdaptorFactory;
39 public ZusammenConnectorImpl(
40 ItemAdaptorFactory itemAdaptorFactory,
41 ItemVersionAdaptorFactory versionAdaptorFactory,
42 ElementAdaptorFactory elementAdaptorFactory,
43 HealthAdaptorFactory healthAdaptorFactory) {
44 this.itemAdaptorFactory = itemAdaptorFactory;
45 this.versionAdaptorFactory = versionAdaptorFactory;
46 this.elementAdaptorFactory = elementAdaptorFactory;
47 this.healthAdaptorFactory = healthAdaptorFactory;
48 CassandraConnectionInitializer.setCassandraConnectionPropertiesToSystem();
52 public Collection<HealthInfo> checkHealth(SessionContext sessionContext) {
53 return healthAdaptorFactory.createInterface(sessionContext).getHealthStatus(sessionContext);
57 public String getVersion(SessionContext sessionContext) {
58 return healthAdaptorFactory.createInterface(sessionContext).getVersion();
62 public Collection<Item> listItems(SessionContext context) {
63 Response<Collection<Item>> response = itemAdaptorFactory.createInterface(context).list(context);
64 if (!response.isSuccessful()) {
65 throw new RuntimeException(
66 "Failed to list Items. message:" + response.getReturnCode().toString());
68 return response.getValue();
72 public Id createItem(SessionContext context, Info info) {
73 Response<Id> response = itemAdaptorFactory.createInterface(context).create(context, info);
74 if (response.isSuccessful()) {
75 return response.getValue();
77 throw new RuntimeException(
78 "failed to create Item. message:" + response.getReturnCode().toString());
83 public void updateItem(SessionContext context, Id itemId, Info info) {
84 Response<Void> response =
85 itemAdaptorFactory.createInterface(context).update(context, itemId, info);
87 if (!response.isSuccessful()) {
88 throw new RuntimeException("failed to update Item . ItemId:" + itemId + "" +
89 " message:" + response.getReturnCode().toString());
94 public Collection<ItemVersion> listVersions(SessionContext context, Id itemId) {
95 Response<Collection<ItemVersion>> versions =
96 versionAdaptorFactory.createInterface(context).list(context, Space.PRIVATE, itemId);
97 if (!versions.isSuccessful()) {
98 logErrorMessageToMdc(ItemElementLoggerTargetServiceName.ITEM_VERSION_RETRIEVAL, versions
100 throw new RuntimeException(versions.getReturnCode().toString()); // TODO: 3/26/2017
102 return versions.getValue();
106 public Id createVersion(SessionContext context, Id itemId, Id baseVersionId,
107 ItemVersionData itemVersionData) {
108 Response<Id> response = versionAdaptorFactory.createInterface(context).create(context, itemId,
109 baseVersionId, itemVersionData);
110 if (response.isSuccessful()) {
111 return response.getValue();
113 throw new RuntimeException("failed to create Item Version. ItemId:" + itemId + " based " +
114 "on:" + baseVersionId +
115 " message:" + response
116 .getReturnCode().toString());
121 public void updateVersion(SessionContext context, Id itemId, Id versionId,
122 ItemVersionData itemVersionData) {
123 Response<Void> response = versionAdaptorFactory.createInterface(context)
124 .update(context, itemId, versionId, itemVersionData);
125 if (!response.isSuccessful()) {
126 throw new RuntimeException(
127 String.format("failed to create Item Version. ItemId: %s, versionId: %s, message: %s",
128 itemId.getValue(), versionId.getValue(), response.getReturnCode().toString()));
133 public void tagVersion(SessionContext context, Id itemId, Id versionId, Tag tag) {
134 Response<Void> response = versionAdaptorFactory.createInterface(context)
135 .tag(context, itemId, versionId, null, tag);
136 if (!response.isSuccessful()) {
137 throw new RuntimeException(String.format(
138 "failed to tag Item Version with tag %s. ItemId: %s, versionId: %s, message: %s",
139 tag.getName(), itemId.getValue(), versionId.getValue(), response.getReturnCode()
145 public void resetVersionHistory(SessionContext context, Id itemId, Id versionId,
147 Response<Void> response = versionAdaptorFactory.createInterface(context)
148 .resetHistory(context, itemId, versionId, changeRef);
149 if (!response.isSuccessful()) {
150 throw new RuntimeException(String.format(
151 "failed to reset Item Version back to %s. ItemId: %s, versionId: %s, message: %s",
152 changeRef, itemId.getValue(), versionId.getValue(),
153 response.getReturnCode().toString()));
158 public Collection<ElementInfo> listElements(SessionContext context,
159 ElementContext elementContext,
160 Id parentElementId) {
161 Response<Collection<ElementInfo>> elementInfosResponse = elementAdaptorFactory
162 .createInterface(context).list(context, elementContext, parentElementId);
163 if (elementInfosResponse.isSuccessful()) {
164 return elementInfosResponse.getValue();
166 logErrorMessageToMdc(ItemElementLoggerTargetServiceName.ELEMENT_GET_BY_PROPERTY,
167 elementInfosResponse.getReturnCode());
168 throw new RuntimeException(elementInfosResponse.getReturnCode().toString());
173 public Response<ElementInfo> getElementInfo(SessionContext context, ElementContext elementContext,
175 return elementAdaptorFactory.createInterface(context)
176 .getInfo(context, elementContext, elementId);
181 public Response<Element> getElement(SessionContext context, ElementContext elementContext,
183 return elementAdaptorFactory.createInterface(context).get(context, elementContext, elementId);
187 public Optional<Element> saveElement(SessionContext context, ElementContext elementContext,
188 ZusammenElement element, String message) {
189 Response<Element> response = elementAdaptorFactory.createInterface(context)
190 .save(context, elementContext, element, message);
191 if (!response.isSuccessful()) {
192 throw new RuntimeException(String
193 .format("Failed to save element %s. ItemId: %s, versionId: %s, message: %s",
194 element.getElementId().getValue(), elementContext.getItemId().getValue(),
195 elementContext.getVersionId().getValue(), response.getReturnCode().toString()));
197 return Optional.of(response.getValue());
200 private void logErrorMessageToMdc(ItemElementLoggerTargetServiceName
201 itemElementLoggerTargetServiceName,
202 ReturnCode returnCode) {
203 logErrorMessageToMdc(itemElementLoggerTargetServiceName, returnCode.toString());
206 private void logErrorMessageToMdc(ItemElementLoggerTargetServiceName
207 itemElementLoggerTargetServiceName,
209 MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
210 itemElementLoggerTargetServiceName.getDescription(),
211 ErrorLevel.ERROR.name(),
212 LoggerErrorCode.BUSINESS_PROCESS_ERROR.getErrorCode(),