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=========================================================
20 package org.openecomp.sdc.be.model.operations.impl;
22 import fj.data.Either;
23 import java.util.Collections;
24 import java.util.List;
25 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphGenericDao;
26 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
27 import org.openecomp.sdc.be.dao.neo4j.GraphPropertiesDictionary;
28 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
29 import org.openecomp.sdc.be.model.operations.api.IConsumerOperation;
30 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
31 import org.openecomp.sdc.be.resources.data.ConsumerData;
32 import org.openecomp.sdc.common.log.wrappers.Logger;
33 import org.springframework.beans.factory.annotation.Qualifier;
34 import org.springframework.stereotype.Component;
36 @Component("consumer-operation")
37 public class ConsumerOperation implements IConsumerOperation {
39 private static final Logger log = Logger.getLogger(ConsumerOperation.class.getName());
40 private JanusGraphGenericDao janusGraphGenericDao;
42 public ConsumerOperation(@Qualifier("janusgraph-generic-dao") JanusGraphGenericDao janusGraphGenericDao) {
43 this.janusGraphGenericDao = janusGraphGenericDao;
47 public Either<ConsumerData, StorageOperationStatus> getCredentials(String consumerName) {
48 Either<ConsumerData, StorageOperationStatus> result = null;
49 log.debug("retriving Credentials for: {}", consumerName);
50 Either<ConsumerData, JanusGraphOperationStatus> getNode = janusGraphGenericDao
51 .getNode(GraphPropertiesDictionary.CONSUMER_NAME.getProperty(), consumerName, ConsumerData.class);
52 if (getNode.isRight()) {
53 JanusGraphOperationStatus status = getNode.right().value();
54 log.error("Error returned after get Consumer Data node {}. status returned is {}", consumerName, status);
55 result = Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(status));
58 ConsumerData consumerData = getNode.left().value();
59 return Either.left(consumerData);
63 public Either<List<ConsumerData>, StorageOperationStatus> getAll() {
64 log.debug("retrieving all consumers");
65 return janusGraphGenericDao.getByCriteria(NodeTypeEnum.ConsumerCredentials, Collections.emptyMap(), ConsumerData.class).right()
66 .map(DaoStatusConverter::convertJanusGraphStatusToStorageStatus);
70 public Either<ConsumerData, StorageOperationStatus> createCredentials(ConsumerData consumerData) {
71 return createCredentials(consumerData, false);
75 public Either<ConsumerData, StorageOperationStatus> createCredentials(ConsumerData consumerData, boolean inTransaction) {
76 Either<ConsumerData, StorageOperationStatus> result = null;
78 log.debug("creating Credentials for: {}", consumerData.getUniqueId());
79 Either<ConsumerData, JanusGraphOperationStatus> createNode = janusGraphGenericDao.createNode(consumerData, ConsumerData.class);
80 if (createNode.isRight()) {
81 JanusGraphOperationStatus status = createNode.right().value();
82 log.error("Error returned after creating Consumer Data node {}. status returned is {}", consumerData.getUniqueId(), status);
83 result = Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(status));
86 ConsumerData createdConsumerData = createNode.left().value();
87 result = Either.left(createdConsumerData);
90 handleTransaction(inTransaction, result);
95 public Either<ConsumerData, StorageOperationStatus> deleteCredentials(String consumerName) {
96 return deleteCredentials(consumerName, false);
100 public Either<ConsumerData, StorageOperationStatus> deleteCredentials(String consumerName, boolean inTransaction) {
101 Either<ConsumerData, StorageOperationStatus> result = null;
103 log.debug("delete Credentials for: {}", consumerName);
104 Either<ConsumerData, JanusGraphOperationStatus> deleteNode = janusGraphGenericDao
105 .deleteNode(GraphPropertiesDictionary.CONSUMER_NAME.getProperty(), consumerName, ConsumerData.class);
106 if (deleteNode.isRight()) {
107 JanusGraphOperationStatus status = deleteNode.right().value();
108 log.error("Error returned after delete Consumer Data node {}. status returned is {}", consumerName, status);
109 result = Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(status));
112 ConsumerData deletedConsumerData = deleteNode.left().value();
113 result = Either.left(deletedConsumerData);
116 handleTransaction(inTransaction, result);
121 public Either<ConsumerData, StorageOperationStatus> updateCredentials(ConsumerData consumerData) {
122 return updateCredentials(consumerData, false);
126 public Either<ConsumerData, StorageOperationStatus> updateCredentials(ConsumerData consumerData, boolean inTransaction) {
127 Either<ConsumerData, StorageOperationStatus> result = null;
129 log.debug("update Credentials for: {}", consumerData.getUniqueId());
130 Either<ConsumerData, JanusGraphOperationStatus> updateNode = janusGraphGenericDao.updateNode(consumerData, ConsumerData.class);
131 if (updateNode.isRight()) {
132 JanusGraphOperationStatus status = updateNode.right().value();
133 log.error("Error returned after delete Consumer Data node {}. status returned is {}", consumerData.getUniqueId(), status);
134 result = Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(status));
137 ConsumerData updatedConsumerData = updateNode.left().value();
138 result = Either.left(updatedConsumerData);
141 handleTransaction(inTransaction, result);
145 private void handleTransaction(boolean inTransaction, Either<ConsumerData, StorageOperationStatus> result) {
146 if (!inTransaction) {
147 if (result == null || result.isRight()) {
148 log.error("Going to execute rollback on graph.");
149 janusGraphGenericDao.rollback();
151 log.debug("Going to execute commit on graph.");
152 janusGraphGenericDao.commit();