2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.be.model.operations.impl;
23 import fj.data.Either;
24 import org.openecomp.sdc.be.dao.neo4j.GraphPropertiesDictionary;
25 import org.openecomp.sdc.be.dao.titan.TitanGenericDao;
26 import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
27 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
28 import org.openecomp.sdc.be.model.operations.api.IConsumerOperation;
29 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
30 import org.openecomp.sdc.be.resources.data.ConsumerData;
31 import org.openecomp.sdc.common.log.wrappers.Logger;
32 import org.springframework.beans.factory.annotation.Qualifier;
33 import org.springframework.stereotype.Component;
35 import java.util.Collections;
36 import java.util.List;
38 @Component("consumer-operation")
39 public class ConsumerOperation implements IConsumerOperation {
41 private TitanGenericDao titanGenericDao;
43 private static final Logger log = Logger.getLogger(ConsumerOperation.class.getName());
45 public ConsumerOperation(@Qualifier("titan-generic-dao") TitanGenericDao titanGenericDao) {
46 this.titanGenericDao = titanGenericDao;
50 public Either<ConsumerData, StorageOperationStatus> getCredentials(String consumerName) {
51 Either<ConsumerData, StorageOperationStatus> result = null;
52 log.debug("retriving Credentials for: {}", consumerName);
53 Either<ConsumerData, TitanOperationStatus> getNode = titanGenericDao.getNode(GraphPropertiesDictionary.CONSUMER_NAME.getProperty(), consumerName, ConsumerData.class);
54 if (getNode.isRight()) {
55 TitanOperationStatus status = getNode.right().value();
56 log.error("Error returned after get Consumer Data node {}. status returned is {}", consumerName, status);
57 result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
60 ConsumerData consumerData = getNode.left().value();
61 return Either.left(consumerData);
65 public Either<List<ConsumerData>, StorageOperationStatus> getAll() {
66 log.debug("retrieving all consumers");
67 return titanGenericDao.getByCriteria(NodeTypeEnum.ConsumerCredentials, Collections.emptyMap(), ConsumerData.class)
68 .right().map(DaoStatusConverter::convertTitanStatusToStorageStatus);
72 public Either<ConsumerData, StorageOperationStatus> createCredentials(ConsumerData consumerData) {
73 return createCredentials(consumerData, false);
77 public Either<ConsumerData, StorageOperationStatus> createCredentials(ConsumerData consumerData, boolean inTransaction) {
78 Either<ConsumerData, StorageOperationStatus> result = null;
80 log.debug("creating Credentials for: {}", consumerData.getUniqueId());
81 Either<ConsumerData, TitanOperationStatus> createNode = titanGenericDao.createNode(consumerData, ConsumerData.class);
82 if (createNode.isRight()) {
83 TitanOperationStatus status = createNode.right().value();
84 log.error("Error returned after creating Consumer Data node {}. status returned is {}", consumerData.getUniqueId(), status);
85 result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
88 ConsumerData createdConsumerData = createNode.left().value();
89 result = Either.left(createdConsumerData);
92 handleTransaction(inTransaction, result);
97 public Either<ConsumerData, StorageOperationStatus> deleteCredentials(String consumerName) {
98 return deleteCredentials(consumerName, false);
102 public Either<ConsumerData, StorageOperationStatus> deleteCredentials(String consumerName, boolean inTransaction) {
103 Either<ConsumerData, StorageOperationStatus> result = null;
105 log.debug("delete Credentials for: {}", consumerName);
106 Either<ConsumerData, TitanOperationStatus> deleteNode = titanGenericDao.deleteNode(GraphPropertiesDictionary.CONSUMER_NAME.getProperty(), consumerName, ConsumerData.class);
107 if (deleteNode.isRight()) {
108 TitanOperationStatus status = deleteNode.right().value();
109 log.error("Error returned after delete Consumer Data node {}. status returned is {}", consumerName, status);
110 result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
114 ConsumerData deletedConsumerData = deleteNode.left().value();
115 result = Either.left(deletedConsumerData);
118 handleTransaction(inTransaction, result);
124 public Either<ConsumerData, StorageOperationStatus> updateCredentials(ConsumerData consumerData) {
125 return updateCredentials(consumerData, false);
129 public Either<ConsumerData, StorageOperationStatus> updateCredentials(ConsumerData consumerData, boolean inTransaction) {
131 Either<ConsumerData, StorageOperationStatus> result = null;
133 log.debug("update Credentials for: {}", consumerData.getUniqueId());
134 Either<ConsumerData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(consumerData, ConsumerData.class);
135 if (updateNode.isRight()) {
136 TitanOperationStatus status = updateNode.right().value();
137 log.error("Error returned after delete Consumer Data node {}. status returned is {}", consumerData.getUniqueId(), status);
138 result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
141 ConsumerData updatedConsumerData = updateNode.left().value();
142 result = Either.left(updatedConsumerData);
145 handleTransaction(inTransaction, result);
149 private void handleTransaction(boolean inTransaction, Either<ConsumerData, StorageOperationStatus> result) {
150 if (!inTransaction) {
151 if (result == null || result.isRight()) {
152 log.error("Going to execute rollback on graph.");
153 titanGenericDao.rollback();
155 log.debug("Going to execute commit on graph.");
156 titanGenericDao.commit();