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 =
64 itemAdaptorFactory.createInterface(context).list(context);
65 if (response.isSuccessful()) {
66 return response.getValue();
73 public Id createItem(SessionContext context, Info info) {
74 Response<Id> response = itemAdaptorFactory.createInterface(context).create(context, info);
75 if (response.isSuccessful()) {
76 return response.getValue();
78 throw new RuntimeException(
79 "failed to create Item. message:" + response.getReturnCode().getMessage());
84 public void updateItem(SessionContext context, Id itemId, Info info) {
85 Response<Void> response =
86 itemAdaptorFactory.createInterface(context).update(context, itemId, info);
88 if (!response.isSuccessful()) {
89 throw new RuntimeException("failed to update Item . ItemId:" + itemId + "" +
90 " message:" + response.getReturnCode().getMessage());
95 public Collection<ItemVersion> listVersions(SessionContext context, Id itemId) {
96 Response<Collection<ItemVersion>> versions =
97 versionAdaptorFactory.createInterface(context).list(context, Space.PRIVATE, itemId);
98 if (!versions.isSuccessful()) {
99 logErrorMessageToMdc(ItemElementLoggerTargetServiceName.ITEM_VERSION_RETRIEVAL, versions
101 throw new RuntimeException(versions.getReturnCode().getMessage()); // TODO: 3/26/2017
103 return versions.getValue();
107 public Id createVersion(SessionContext context, Id itemId, Id baseVersionId,
108 ItemVersionData itemVersionData) {
109 Response<Id> response = versionAdaptorFactory.createInterface(context).create(context, itemId,
110 baseVersionId, itemVersionData);
111 if (response.isSuccessful()) {
112 return response.getValue();
114 throw new RuntimeException("failed to create Item Version. ItemId:" + itemId + " based " +
115 "on:" + baseVersionId +
116 " message:" + response
117 .getReturnCode().getMessage());
122 public void updateVersion(SessionContext context, Id itemId, Id versionId,
123 ItemVersionData itemVersionData) {
124 Response<Void> response = versionAdaptorFactory.createInterface(context)
125 .update(context, itemId, versionId, itemVersionData);
126 if (!response.isSuccessful()) {
127 throw new RuntimeException(
128 String.format("failed to create Item Version. ItemId: %s, versionId: %s, message: %s",
129 itemId.getValue(), versionId.getValue(), response.getReturnCode().getMessage()));
134 public void tagVersion(SessionContext context, Id itemId, Id versionId, Tag tag) {
135 Response<Void> response = versionAdaptorFactory.createInterface(context)
136 .tag(context, itemId, versionId, null, tag);
137 if (!response.isSuccessful()) {
138 throw new RuntimeException(String.format(
139 "failed to tag Item Version with tag %s. ItemId: %s, versionId: %s, message: %s",
140 tag.getName(), itemId.getValue(), versionId.getValue(), response.getReturnCode()
146 public void resetVersionHistory(SessionContext context, Id itemId, Id versionId,
148 Response<Void> response = versionAdaptorFactory.createInterface(context)
149 .resetHistory(context, itemId, versionId, changeRef);
150 if (!response.isSuccessful()) {
151 throw new RuntimeException(String.format(
152 "failed to reset Item Version back to %s. ItemId: %s, versionId: %s, message: %s",
153 changeRef, itemId.getValue(), versionId.getValue(),
154 response.getReturnCode().getMessage()));
159 public Collection<ElementInfo> listElements(SessionContext context,
160 ElementContext elementContext,
161 Id parentElementId) {
162 Response<Collection<ElementInfo>> elementInfosResponse = elementAdaptorFactory
163 .createInterface(context).list(context, elementContext, parentElementId);
164 if (elementInfosResponse.isSuccessful()) {
165 return elementInfosResponse.getValue();
167 logErrorMessageToMdc(ItemElementLoggerTargetServiceName.ELEMENT_GET_BY_PROPERTY,
168 elementInfosResponse.getReturnCode());
169 throw new RuntimeException(elementInfosResponse.getReturnCode().getMessage());
174 public Response<ElementInfo> getElementInfo(SessionContext context, ElementContext elementContext,
176 return elementAdaptorFactory.createInterface(context)
177 .getInfo(context, elementContext, elementId);
182 public Response<Element> getElement(SessionContext context, ElementContext elementContext,
184 return elementAdaptorFactory.createInterface(context).get(context, elementContext, elementId);
188 public Optional<Element> saveElement(SessionContext context, ElementContext elementContext,
189 ZusammenElement element, String message) {
190 Response<Element> saveResponse = elementAdaptorFactory.createInterface(context)
191 .save(context, elementContext, element, message);
192 return saveResponse.isSuccessful()
193 ? Optional.of(saveResponse.getValue())
194 : Optional.empty(); // TODO: 3/21/2017 error?
197 private void logErrorMessageToMdc(ItemElementLoggerTargetServiceName
198 itemElementLoggerTargetServiceName,
199 ReturnCode returnCode) {
200 logErrorMessageToMdc(itemElementLoggerTargetServiceName, returnCode.toString());
203 private void logErrorMessageToMdc(ItemElementLoggerTargetServiceName
204 itemElementLoggerTargetServiceName,
206 MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
207 itemElementLoggerTargetServiceName.getDescription(),
208 ErrorLevel.ERROR.name(),
209 LoggerErrorCode.BUSINESS_PROCESS_ERROR.getErrorCode(),