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.janusgraph.JanusGraphGenericDao;
25 import org.openecomp.sdc.be.dao.neo4j.GraphPropertiesDictionary;
26 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
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 JanusGraphGenericDao janusGraphGenericDao;
43 private static final Logger log = Logger.getLogger(ConsumerOperation.class.getName());
45 public ConsumerOperation(@Qualifier("janusgraph-generic-dao")
46 JanusGraphGenericDao janusGraphGenericDao) {
47 this.janusGraphGenericDao = janusGraphGenericDao;
51 public Either<ConsumerData, StorageOperationStatus> getCredentials(String consumerName) {
52 Either<ConsumerData, StorageOperationStatus> result = null;
53 log.debug("retriving Credentials for: {}", consumerName);
54 Either<ConsumerData, JanusGraphOperationStatus> getNode = janusGraphGenericDao
55 .getNode(GraphPropertiesDictionary.CONSUMER_NAME.getProperty(), consumerName, ConsumerData.class);
56 if (getNode.isRight()) {
57 JanusGraphOperationStatus status = getNode.right().value();
58 log.error("Error returned after get Consumer Data node {}. status returned is {}", consumerName, status);
59 result = Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(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 janusGraphGenericDao
70 .getByCriteria(NodeTypeEnum.ConsumerCredentials, Collections.emptyMap(), ConsumerData.class)
71 .right().map(DaoStatusConverter::convertJanusGraphStatusToStorageStatus);
75 public Either<ConsumerData, StorageOperationStatus> createCredentials(ConsumerData consumerData) {
76 return createCredentials(consumerData, false);
80 public Either<ConsumerData, StorageOperationStatus> createCredentials(ConsumerData consumerData, boolean inTransaction) {
81 Either<ConsumerData, StorageOperationStatus> result = null;
83 log.debug("creating Credentials for: {}", consumerData.getUniqueId());
84 Either<ConsumerData, JanusGraphOperationStatus> createNode = janusGraphGenericDao
85 .createNode(consumerData, ConsumerData.class);
86 if (createNode.isRight()) {
87 JanusGraphOperationStatus status = createNode.right().value();
88 log.error("Error returned after creating Consumer Data node {}. status returned is {}", consumerData.getUniqueId(), status);
89 result = Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(status));
92 ConsumerData createdConsumerData = createNode.left().value();
93 result = Either.left(createdConsumerData);
96 handleTransaction(inTransaction, result);
101 public Either<ConsumerData, StorageOperationStatus> deleteCredentials(String consumerName) {
102 return deleteCredentials(consumerName, false);
106 public Either<ConsumerData, StorageOperationStatus> deleteCredentials(String consumerName, boolean inTransaction) {
107 Either<ConsumerData, StorageOperationStatus> result = null;
109 log.debug("delete Credentials for: {}", consumerName);
110 Either<ConsumerData, JanusGraphOperationStatus> deleteNode = janusGraphGenericDao
111 .deleteNode(GraphPropertiesDictionary.CONSUMER_NAME.getProperty(), consumerName, ConsumerData.class);
112 if (deleteNode.isRight()) {
113 JanusGraphOperationStatus status = deleteNode.right().value();
114 log.error("Error returned after delete Consumer Data node {}. status returned is {}", consumerName, status);
115 result = Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(status));
119 ConsumerData deletedConsumerData = deleteNode.left().value();
120 result = Either.left(deletedConsumerData);
123 handleTransaction(inTransaction, result);
129 public Either<ConsumerData, StorageOperationStatus> updateCredentials(ConsumerData consumerData) {
130 return updateCredentials(consumerData, false);
134 public Either<ConsumerData, StorageOperationStatus> updateCredentials(ConsumerData consumerData, boolean inTransaction) {
136 Either<ConsumerData, StorageOperationStatus> result = null;
138 log.debug("update Credentials for: {}", consumerData.getUniqueId());
139 Either<ConsumerData, JanusGraphOperationStatus> updateNode = janusGraphGenericDao
140 .updateNode(consumerData, ConsumerData.class);
141 if (updateNode.isRight()) {
142 JanusGraphOperationStatus status = updateNode.right().value();
143 log.error("Error returned after delete Consumer Data node {}. status returned is {}", consumerData.getUniqueId(), status);
144 result = Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(status));
147 ConsumerData updatedConsumerData = updateNode.left().value();
148 result = Either.left(updatedConsumerData);
151 handleTransaction(inTransaction, result);
155 private void handleTransaction(boolean inTransaction, Either<ConsumerData, StorageOperationStatus> result) {
156 if (!inTransaction) {
157 if (result == null || result.isRight()) {
158 log.error("Going to execute rollback on graph.");
159 janusGraphGenericDao.rollback();
161 log.debug("Going to execute commit on graph.");
162 janusGraphGenericDao.commit();