diff options
Diffstat (limited to 'openecomp-be/lib/openecomp-core-lib/openecomp-zusammen-lib/openecomp-zusammen-core/src/main/java/org/openecomp/core/zusammen/db')
4 files changed, 321 insertions, 0 deletions
diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-zusammen-lib/openecomp-zusammen-core/src/main/java/org/openecomp/core/zusammen/db/ZusammenConnector.java b/openecomp-be/lib/openecomp-core-lib/openecomp-zusammen-lib/openecomp-zusammen-core/src/main/java/org/openecomp/core/zusammen/db/ZusammenConnector.java new file mode 100644 index 0000000000..f746d706e1 --- /dev/null +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-zusammen-lib/openecomp-zusammen-core/src/main/java/org/openecomp/core/zusammen/db/ZusammenConnector.java @@ -0,0 +1,51 @@ +package org.openecomp.core.zusammen.db; + +import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element; +import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo; +import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement; +import com.amdocs.zusammen.datatypes.Id; +import com.amdocs.zusammen.datatypes.SessionContext; +import com.amdocs.zusammen.datatypes.item.ElementContext; +import com.amdocs.zusammen.datatypes.item.Info; +import com.amdocs.zusammen.datatypes.item.Item; +import com.amdocs.zusammen.datatypes.item.ItemVersion; +import com.amdocs.zusammen.datatypes.item.ItemVersionData; +import com.amdocs.zusammen.datatypes.itemversion.Tag; +import com.amdocs.zusammen.datatypes.response.Response; + +import java.util.Collection; +import java.util.Optional; + +public interface ZusammenConnector { + + Collection<Item> listItems(SessionContext context); + + Id createItem(SessionContext context, Info info); + + void updateItem(SessionContext context, Id itemId, Info info); + + + Collection<ItemVersion> listVersions(SessionContext context, Id itemId); + + Id createVersion(SessionContext context, Id itemId, Id baseVersionId, + ItemVersionData itemVersionData); + + void updateVersion(SessionContext context, Id itemId, Id versionId, + ItemVersionData itemVersionData); + + void tagVersion(SessionContext context, Id itemId, Id versionId, Tag tag); + + void resetVersionHistory(SessionContext context, Id itemId, Id versionId, String changeRef); + + + Collection<ElementInfo> listElements(SessionContext context, ElementContext elementContext, + Id parentElementId); + + Response<ElementInfo> getElementInfo(SessionContext context, ElementContext elementContext, Id + elementId); + + Response<Element> getElement(SessionContext context, ElementContext elementContext, Id elementId); + + Optional<Element> saveElement(SessionContext context, ElementContext elementContext, + ZusammenElement element, String message); +} diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-zusammen-lib/openecomp-zusammen-core/src/main/java/org/openecomp/core/zusammen/db/ZusammenConnectorFactory.java b/openecomp-be/lib/openecomp-core-lib/openecomp-zusammen-lib/openecomp-zusammen-core/src/main/java/org/openecomp/core/zusammen/db/ZusammenConnectorFactory.java new file mode 100644 index 0000000000..31a8bf598d --- /dev/null +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-zusammen-lib/openecomp-zusammen-core/src/main/java/org/openecomp/core/zusammen/db/ZusammenConnectorFactory.java @@ -0,0 +1,31 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.core.zusammen.db; + +import org.openecomp.core.factory.api.AbstractComponentFactory; +import org.openecomp.core.factory.api.AbstractFactory; + +public abstract class ZusammenConnectorFactory extends AbstractComponentFactory<ZusammenConnector> { + + public static ZusammenConnectorFactory getInstance() { + return AbstractFactory.getInstance(ZusammenConnectorFactory.class); + } +} diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-zusammen-lib/openecomp-zusammen-core/src/main/java/org/openecomp/core/zusammen/db/impl/ZusammenConnectorFactoryImpl.java b/openecomp-be/lib/openecomp-core-lib/openecomp-zusammen-lib/openecomp-zusammen-core/src/main/java/org/openecomp/core/zusammen/db/impl/ZusammenConnectorFactoryImpl.java new file mode 100644 index 0000000000..f3916521dd --- /dev/null +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-zusammen-lib/openecomp-zusammen-core/src/main/java/org/openecomp/core/zusammen/db/impl/ZusammenConnectorFactoryImpl.java @@ -0,0 +1,39 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.core.zusammen.db.impl; + +import com.amdocs.zusammen.adaptor.inbound.api.item.ElementAdaptorFactory; +import com.amdocs.zusammen.adaptor.inbound.api.item.ItemAdaptorFactory; +import com.amdocs.zusammen.adaptor.inbound.api.item.ItemVersionAdaptorFactory; +import org.openecomp.core.zusammen.db.ZusammenConnector; +import org.openecomp.core.zusammen.db.ZusammenConnectorFactory; + +public class ZusammenConnectorFactoryImpl extends ZusammenConnectorFactory { + private static final ZusammenConnector INSTANCE = + new ZusammenConnectorImpl(ItemAdaptorFactory.getInstance(), + ItemVersionAdaptorFactory.getInstance(), + ElementAdaptorFactory.getInstance()); + + @Override + public ZusammenConnector createInterface() { + return INSTANCE; + } +} diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-zusammen-lib/openecomp-zusammen-core/src/main/java/org/openecomp/core/zusammen/db/impl/ZusammenConnectorImpl.java b/openecomp-be/lib/openecomp-core-lib/openecomp-zusammen-lib/openecomp-zusammen-core/src/main/java/org/openecomp/core/zusammen/db/impl/ZusammenConnectorImpl.java new file mode 100644 index 0000000000..8aa8e129df --- /dev/null +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-zusammen-lib/openecomp-zusammen-core/src/main/java/org/openecomp/core/zusammen/db/impl/ZusammenConnectorImpl.java @@ -0,0 +1,200 @@ +package org.openecomp.core.zusammen.db.impl; + +import com.amdocs.zusammen.adaptor.inbound.api.item.ElementAdaptorFactory; +import com.amdocs.zusammen.adaptor.inbound.api.item.ItemAdaptorFactory; +import com.amdocs.zusammen.adaptor.inbound.api.item.ItemVersionAdaptorFactory; +import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element; +import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo; +import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement; +import com.amdocs.zusammen.datatypes.Id; +import com.amdocs.zusammen.datatypes.SessionContext; +import com.amdocs.zusammen.datatypes.Space; +import com.amdocs.zusammen.datatypes.item.ElementContext; +import com.amdocs.zusammen.datatypes.item.Info; +import com.amdocs.zusammen.datatypes.item.Item; +import com.amdocs.zusammen.datatypes.item.ItemVersion; +import com.amdocs.zusammen.datatypes.item.ItemVersionData; +import com.amdocs.zusammen.datatypes.itemversion.Tag; +import com.amdocs.zusammen.datatypes.response.Response; +import com.amdocs.zusammen.datatypes.response.ReturnCode; +import org.openecomp.core.zusammen.db.ZusammenConnector; +import org.openecomp.core.zusammen.impl.CassandraConnectionInitializer; +import org.openecomp.core.zusammen.impl.ItemElementLoggerTargetServiceName; +import org.openecomp.sdc.datatypes.error.ErrorLevel; +import org.openecomp.sdc.logging.context.impl.MdcDataErrorMessage; +import org.openecomp.sdc.logging.types.LoggerConstants; +import org.openecomp.sdc.logging.types.LoggerErrorCode; + +import java.util.Collection; +import java.util.Optional; + +public class ZusammenConnectorImpl implements ZusammenConnector { + + private ItemAdaptorFactory itemAdaptorFactory; + private ItemVersionAdaptorFactory versionAdaptorFactory; + private ElementAdaptorFactory elementAdaptorFactory; + + public ZusammenConnectorImpl( + ItemAdaptorFactory itemAdaptorFactory, + ItemVersionAdaptorFactory versionAdaptorFactory, + ElementAdaptorFactory elementAdaptorFactory) { + this.itemAdaptorFactory = itemAdaptorFactory; + this.versionAdaptorFactory = versionAdaptorFactory; + this.elementAdaptorFactory = elementAdaptorFactory; + CassandraConnectionInitializer.setCassandraConnectionPropertiesToSystem(); + } + + @Override + public Collection<Item> listItems(SessionContext context) { + Response<Collection<Item>> response = + itemAdaptorFactory.createInterface(context).list(context); + if (response.isSuccessful()) { + return response.getValue(); + } else { + return null; + } + } + + @Override + public Id createItem(SessionContext context, Info info) { + Response<Id> response = itemAdaptorFactory.createInterface(context).create(context, info); + if (response.isSuccessful()) { + return response.getValue(); + } else { + throw new RuntimeException( + "failed to create Item. message:" + response.getReturnCode().getMessage()); + } + } + + @Override + public void updateItem(SessionContext context, Id itemId, Info info) { + Response<Void> response = + itemAdaptorFactory.createInterface(context).update(context, itemId, info); + + if (!response.isSuccessful()) { + throw new RuntimeException("failed to update Item . ItemId:" + itemId + "" + + " message:" + response.getReturnCode().getMessage()); + } + } + + @Override + public Collection<ItemVersion> listVersions(SessionContext context, Id itemId) { + Response<Collection<ItemVersion>> versions = + versionAdaptorFactory.createInterface(context).list(context, Space.PRIVATE, itemId); + if (!versions.isSuccessful()) { + logErrorMessageToMdc(ItemElementLoggerTargetServiceName.ITEM_VERSION_RETRIEVAL, versions + .getReturnCode()); + throw new RuntimeException(versions.getReturnCode().getMessage()); // TODO: 3/26/2017 + } + return versions.getValue(); + } + + @Override + public Id createVersion(SessionContext context, Id itemId, Id baseVersionId, + ItemVersionData itemVersionData) { + Response<Id> response = versionAdaptorFactory.createInterface(context).create(context, itemId, + baseVersionId, itemVersionData); + if (response.isSuccessful()) { + return response.getValue(); + } else { + throw new RuntimeException("failed to create Item Version. ItemId:" + itemId + " based " + + "on:" + baseVersionId + + " message:" + response + .getReturnCode().getMessage()); + } + } + + @Override + public void updateVersion(SessionContext context, Id itemId, Id versionId, + ItemVersionData itemVersionData) { + Response<Void> response = versionAdaptorFactory.createInterface(context) + .update(context, itemId, versionId, itemVersionData); + if (!response.isSuccessful()) { + throw new RuntimeException( + String.format("failed to create Item Version. ItemId: %s, versionId: %s, message: %s", + itemId.getValue(), versionId.getValue(), response.getReturnCode().getMessage())); + } + } + + @Override + public void tagVersion(SessionContext context, Id itemId, Id versionId, Tag tag) { + Response<Void> response = versionAdaptorFactory.createInterface(context) + .tag(context, itemId, versionId, null, tag); + if (!response.isSuccessful()) { + throw new RuntimeException(String.format( + "failed to tag Item Version with tag %s. ItemId: %s, versionId: %s, message: %s", + tag.getName(), itemId.getValue(), versionId.getValue(), response.getReturnCode() + .getMessage())); + } + } + + @Override + public void resetVersionHistory(SessionContext context, Id itemId, Id versionId, + String changeRef) { + Response<Void> response = versionAdaptorFactory.createInterface(context) + .resetHistory(context, itemId, versionId, changeRef); + if (!response.isSuccessful()) { + throw new RuntimeException(String.format( + "failed to reset Item Version back to %s. ItemId: %s, versionId: %s, message: %s", + changeRef, itemId.getValue(), versionId.getValue(), + response.getReturnCode().getMessage())); + } + } + + @Override + public Collection<ElementInfo> listElements(SessionContext context, + ElementContext elementContext, + Id parentElementId) { + Response<Collection<ElementInfo>> elementInfosResponse = elementAdaptorFactory + .createInterface(context).list(context, elementContext, parentElementId); + if (elementInfosResponse.isSuccessful()) { + return elementInfosResponse.getValue(); + } else { + logErrorMessageToMdc(ItemElementLoggerTargetServiceName.ELEMENT_GET_BY_PROPERTY, + elementInfosResponse.getReturnCode()); + throw new RuntimeException(elementInfosResponse.getReturnCode().getMessage()); + } + } + + @Override + public Response<ElementInfo> getElementInfo(SessionContext context, ElementContext elementContext, + Id elementId) { + return elementAdaptorFactory.createInterface(context) + .getInfo(context, elementContext, elementId); + } + + + @Override + public Response<Element> getElement(SessionContext context, ElementContext elementContext, + Id elementId) { + return elementAdaptorFactory.createInterface(context).get(context, elementContext, elementId); + } + + @Override + public Optional<Element> saveElement(SessionContext context, ElementContext elementContext, + ZusammenElement element, String message) { + Response<Element> saveResponse = elementAdaptorFactory.createInterface(context) + .save(context, elementContext, element, message); + return saveResponse.isSuccessful() + ? Optional.of(saveResponse.getValue()) + : Optional.empty(); // TODO: 3/21/2017 error? + } + + private void logErrorMessageToMdc(ItemElementLoggerTargetServiceName + itemElementLoggerTargetServiceName, + ReturnCode returnCode) { + logErrorMessageToMdc(itemElementLoggerTargetServiceName, returnCode.toString()); + } + + private void logErrorMessageToMdc(ItemElementLoggerTargetServiceName + itemElementLoggerTargetServiceName, + String message) { + MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, + itemElementLoggerTargetServiceName.getDescription(), + ErrorLevel.ERROR.name(), + LoggerErrorCode.BUSINESS_PROCESS_ERROR.getErrorCode(), + message); + } + + +} |