summaryrefslogtreecommitdiffstats
path: root/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/UserAdminOperation.java
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/UserAdminOperation.java')
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/UserAdminOperation.java124
1 files changed, 63 insertions, 61 deletions
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/UserAdminOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/UserAdminOperation.java
index bea9df9639..16073f4e3b 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/UserAdminOperation.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/UserAdminOperation.java
@@ -35,35 +35,39 @@ import org.openecomp.sdc.be.dao.janusgraph.JanusGraphGenericDao;
import org.openecomp.sdc.be.dao.utils.UserStatusEnum;
import org.openecomp.sdc.be.datatypes.enums.GraphPropertyEnum;
import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
+import org.openecomp.sdc.be.model.Component;
import org.openecomp.sdc.be.model.User;
-import org.openecomp.sdc.be.model.operations.api.IUserAdminOperation;
+import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
+import org.openecomp.sdc.be.model.operations.StorageException;
import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
import org.openecomp.sdc.be.resources.data.UserData;
import org.openecomp.sdc.common.datastructure.Wrapper;
+import org.openecomp.sdc.common.log.enums.EcompLoggerErrorCode;
import org.openecomp.sdc.common.log.wrappers.Logger;
import org.openecomp.sdc.common.util.MethodActivationStatusEnum;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.stereotype.Component;
-import java.util.*;
+import javax.validation.constraints.NotNull;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import static org.apache.commons.collections.CollectionUtils.isEmpty;
-@Component("user-operation")
-public class UserAdminOperation implements IUserAdminOperation {
+@org.springframework.stereotype.Component
+public class UserAdminOperation {
- private JanusGraphGenericDao janusGraphGenericDao;
+ private final JanusGraphGenericDao janusGraphGenericDao;
+ private final ToscaOperationFacade toscaOperationFacade;
- public UserAdminOperation(@Qualifier("janusgraph-generic-dao")
- JanusGraphGenericDao janusGraphGenericDao) {
- super();
+ public UserAdminOperation(JanusGraphGenericDao janusGraphGenericDao, ToscaOperationFacade toscaOperationFacade) {
this.janusGraphGenericDao = janusGraphGenericDao;
-
+ this.toscaOperationFacade = toscaOperationFacade;
}
private static final Logger log = Logger.getLogger(UserAdminOperation.class.getName());
- @Override
public Either<User, ActionStatus> getUserData(String id, boolean inTransaction) {
return getUserData(id, true, inTransaction);
}
@@ -124,7 +128,7 @@ public class UserAdminOperation implements IUserAdminOperation {
private void validateUserExists(Wrapper<Either<User, ActionStatus>> resultWrapper, Wrapper<UserData> userWrapper, String id) {
if (id == null) {
log.info("User userId is empty");
- resultWrapper.setInnerElement(Either.right(ActionStatus.MISSING_INFORMATION));
+ resultWrapper.setInnerElement(Either.right(ActionStatus.MISSING_USER_ID));
return;
}
id = id.toLowerCase();
@@ -138,21 +142,19 @@ public class UserAdminOperation implements IUserAdminOperation {
}
}
- @Override
- public Either<User, StorageOperationStatus> saveUserData(User user) {
+ public User saveUserData(User user) {
Either<UserData, JanusGraphOperationStatus> result = null;
try {
UserData userData = convertToUserData(user);
result = janusGraphGenericDao.createNode(userData, UserData.class);
if (result.isRight()) {
- log.debug("Problem while saving User {}. Reason - {}", userData.getUserId(), result.right().value());
- return Either.right(StorageOperationStatus.GENERAL_ERROR);
+ log.error("Problem while saving User {}. Reason - {}", userData.getUserId(), result.right().value());
+ throw new StorageException(StorageOperationStatus.GENERAL_ERROR);
}
log.debug("User {} saved successfully", userData.getUserId());
- return Either.left(convertToUser(result.left().value()));
+ return convertToUser(result.left().value());
} finally {
-
if (result == null || result.isRight()) {
log.error("saveUserData - Failed");
janusGraphGenericDao.rollback();
@@ -163,24 +165,20 @@ public class UserAdminOperation implements IUserAdminOperation {
}
}
- @Override
- public Either<User, StorageOperationStatus> updateUserData(User user) {
+ public User updateUserData(User user) {
Either<UserData, JanusGraphOperationStatus> result = null;
try {
log.debug("updateUserData - start");
UserData userData = convertToUserData(user);
result = janusGraphGenericDao.updateNode(userData, UserData.class);
if (result.isRight()) {
- if (log.isDebugEnabled()) {
- log.debug("Problem while updating User {}. Reason - {}", userData.toString(), result.right().value());
- }
- return Either.right(StorageOperationStatus.GENERAL_ERROR);
+ log.error("Problem while updating User {}. Reason - {}", userData.toString(), result.right().value());
+ throw new StorageException(StorageOperationStatus.GENERAL_ERROR);
}
log.debug("User {} updated successfully",userData.getUserId());
- return Either.left(convertToUser(result.left().value()));
+ return convertToUser(result.left().value());
} finally {
-
if (result == null || result.isRight()) {
log.error("updateUserData - Failed");
janusGraphGenericDao.rollback();
@@ -192,20 +190,11 @@ public class UserAdminOperation implements IUserAdminOperation {
}
}
- @Override
- public Either<User, StorageOperationStatus> deActivateUser(User user) {
- Either<User, StorageOperationStatus> result;
+ public User deActivateUser(User user) {
user.setStatus(UserStatusEnum.INACTIVE);
- Either<User, StorageOperationStatus> status = updateUserData(user);
- if (status.isRight()) {
- result = Either.right(status.right().value());
- } else {
- result = Either.left(user);
- }
- return result;
+ return updateUserData(user);
}
- @Override
public Either<User, ActionStatus> deleteUserData(String id) {
Either<User, ActionStatus> result;
Either<UserData, JanusGraphOperationStatus> eitherGet = janusGraphGenericDao
@@ -269,34 +258,48 @@ public class UserAdminOperation implements IUserAdminOperation {
}
}
- public Either<List<Edge>, StorageOperationStatus> getUserPendingTasksList(User user, Map<String, Object> properties) {
+ public @NotNull List<Edge> getUserPendingTasksList(User user, List<Object> states) {
+
+ JanusGraphVertex userVertex = janusGraphGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.User), user.getUserId())
+ .left()
+ .on(this::handleJanusGraphError);
- Either<JanusGraphVertex, JanusGraphOperationStatus> vertexUser = janusGraphGenericDao
- .getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.User), user.getUserId());
- if (vertexUser.isRight()) {
- JanusGraphOperationStatus tos = vertexUser.right().value();
- log.debug("Failed to get User {} from graph while retrieving pending tasks. Reason - {}", user.getUserId(), tos);
- return Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(tos));
- }
List<Edge> pendingTasks = new ArrayList<>();
- Either<List<Edge>, JanusGraphOperationStatus> edges = janusGraphGenericDao
- .getOutgoingEdgesByCriteria(vertexUser.left().value(), GraphEdgeLabels.STATE, properties);
- if (edges.isRight() || edges.left().value() == null) {
- JanusGraphOperationStatus tos = edges.right().value();
- if (tos == JanusGraphOperationStatus.NOT_FOUND) {
- return Either.left(pendingTasks);
- } else {
- log.debug("Failed while retrieving pending tasks for user {} . Reason - {}", user.getUserId(), tos);
- return Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(tos));
+ for (Object state : states) {
+ Map<String, Object> property = new HashMap<>();
+ property.put(GraphPropertiesDictionary.STATE.getProperty(), state);
+ List<Edge> edges = janusGraphGenericDao.getOutgoingEdgesByCriteria(userVertex, GraphEdgeLabels.STATE, property)
+ .left()
+ .on(this::handleJanusGraphError);
+ for (Edge edge : edges) {
+ Vertex vertex = edge.inVertex();
+ if (!isComponentDeleted(vertex)) {
+ pendingTasks.add(edge);
+ }
}
}
- for (Edge edge : edges.left().value()) {
- if (!isComponentDeleted(edge.inVertex())) {
- pendingTasks.add(edge);
+ logPendingTasks(user, pendingTasks);
+ return pendingTasks;
+ }
+
+ public @NotNull List<Component> getUserActiveComponents(User user, List<Object> states) {
+ List<Component> components = new ArrayList<>();
+ List<Edge> edges = getUserPendingTasksList(user, states);
+ for (Edge edge : edges) {
+ JanusGraphVertex componentVertex = (JanusGraphVertex) edge.inVertex();
+ String componentId = (String) janusGraphGenericDao.getProperty(componentVertex, GraphPropertyEnum.UNIQUE_ID.getProperty());
+ Either<Component, StorageOperationStatus> toscaFullElement = toscaOperationFacade.getToscaFullElement(componentId);
+ if (toscaFullElement.isLeft()) {
+ components.add(toscaFullElement.left().value());
+ } else {
+ log.warn(EcompLoggerErrorCode.SCHEMA_ERROR, "", "", "Failed to retrieve component {} from graph db", componentId);
}
}
- logPendingTasks(user, pendingTasks);
- return Either.left(pendingTasks);
+ return components;
+ }
+
+ private <T> T handleJanusGraphError(JanusGraphOperationStatus janusGraphOperationStatus) {
+ throw new StorageException(janusGraphOperationStatus);
}
private boolean isComponentDeleted(Vertex componentVertex) {
@@ -318,7 +321,6 @@ public class UserAdminOperation implements IUserAdminOperation {
}
}
- @Override
public Either<List<User>, ActionStatus> getAllUsersWithRole(String role, String status) {
try {
Map<String, Object> propertiesToMatch = new HashMap<>();