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 org.openecomp.sdc.be.dao.neo4j.GraphPropertiesDictionary;
24 import org.openecomp.sdc.be.dao.titan.TitanGenericDao;
25 import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
26 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
27 import org.openecomp.sdc.be.model.operations.api.IConsumerOperation;
28 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
29 import org.openecomp.sdc.be.resources.data.ConsumerData;
30 import org.slf4j.Logger;
31 import org.slf4j.LoggerFactory;
32 import org.springframework.beans.factory.annotation.Qualifier;
33 import org.springframework.stereotype.Component;
35 import fj.data.Either;
37 import java.util.Collections;
38 import java.util.List;
40 @Component("consumer-operation")
41 public class ConsumerOperation implements IConsumerOperation {
43 private TitanGenericDao titanGenericDao;
45 private static Logger log = LoggerFactory.getLogger(ConsumerOperation.class.getName());
47 public ConsumerOperation(@Qualifier("titan-generic-dao") TitanGenericDao titanGenericDao) {
48 this.titanGenericDao = titanGenericDao;
52 public Either<ConsumerData, StorageOperationStatus> getCredentials(String consumerName) {
53 Either<ConsumerData, StorageOperationStatus> result = null;
54 log.debug("retriving Credentials for: {}", consumerName);
55 Either<ConsumerData, TitanOperationStatus> getNode = titanGenericDao.getNode(GraphPropertiesDictionary.CONSUMER_NAME.getProperty(), consumerName, ConsumerData.class);
56 if (getNode.isRight()) {
57 TitanOperationStatus status = getNode.right().value();
58 log.error("Error returned after get Consumer Data node {}. status returned is {}", consumerName, status);
59 result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
62 ConsumerData consumerData = getNode.left().value();
63 return Either.left(consumerData);
67 public Either<List<ConsumerData>, StorageOperationStatus> getAll() {
68 log.debug("retrieving all consumers");
69 return titanGenericDao.getByCriteria(NodeTypeEnum.ConsumerCredentials, Collections.emptyMap(), ConsumerData.class)
70 .right().map(DaoStatusConverter::convertTitanStatusToStorageStatus);
74 public Either<ConsumerData, StorageOperationStatus> createCredentials(ConsumerData consumerData) {
75 return createCredentials(consumerData, false);
79 public Either<ConsumerData, StorageOperationStatus> createCredentials(ConsumerData consumerData, boolean inTransaction) {
80 Either<ConsumerData, StorageOperationStatus> result = null;
82 log.debug("creating Credentials for: {}", consumerData.getUniqueId());
83 Either<ConsumerData, TitanOperationStatus> createNode = titanGenericDao.createNode(consumerData, ConsumerData.class);
84 if (createNode.isRight()) {
85 TitanOperationStatus status = createNode.right().value();
86 log.error("Error returned after creating Consumer Data node {}. status returned is {}", consumerData.getUniqueId(), status);
87 result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
90 ConsumerData createdConsumerData = createNode.left().value();
91 result = Either.left(createdConsumerData);
94 handleTransaction(inTransaction, result);
99 public Either<ConsumerData, StorageOperationStatus> deleteCredentials(String consumerName) {
100 return deleteCredentials(consumerName, false);
104 public Either<ConsumerData, StorageOperationStatus> deleteCredentials(String consumerName, boolean inTransaction) {
105 Either<ConsumerData, StorageOperationStatus> result = null;
107 log.debug("delete Credentials for: {}", consumerName);
108 Either<ConsumerData, TitanOperationStatus> deleteNode = titanGenericDao.deleteNode(GraphPropertiesDictionary.CONSUMER_NAME.getProperty(), consumerName, ConsumerData.class);
109 if (deleteNode.isRight()) {
110 TitanOperationStatus status = deleteNode.right().value();
111 log.error("Error returned after delete Consumer Data node {}. status returned is {}", consumerName, status);
112 result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
116 ConsumerData deletedConsumerData = deleteNode.left().value();
117 result = Either.left(deletedConsumerData);
120 handleTransaction(inTransaction, result);
126 public Either<ConsumerData, StorageOperationStatus> updateCredentials(ConsumerData consumerData) {
127 return updateCredentials(consumerData, false);
131 public Either<ConsumerData, StorageOperationStatus> updateCredentials(ConsumerData consumerData, boolean inTransaction) {
133 Either<ConsumerData, StorageOperationStatus> result = null;
135 log.debug("update Credentials for: {}", consumerData.getUniqueId());
136 Either<ConsumerData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(consumerData, ConsumerData.class);
137 if (updateNode.isRight()) {
138 TitanOperationStatus status = updateNode.right().value();
139 log.error("Error returned after delete Consumer Data node {}. status returned is {}", consumerData.getUniqueId(), status);
140 result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
143 ConsumerData updatedConsumerData = updateNode.left().value();
144 result = Either.left(updatedConsumerData);
147 handleTransaction(inTransaction, result);
151 private void handleTransaction(boolean inTransaction, Either<ConsumerData, StorageOperationStatus> result) {
152 if (false == inTransaction) {
153 if (result == null || result.isRight()) {
154 log.error("Going to execute rollback on graph.");
155 titanGenericDao.rollback();
157 log.debug("Going to execute commit on graph.");
158 titanGenericDao.commit();