aboutsummaryrefslogtreecommitdiffstats
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.java161
1 files changed, 86 insertions, 75 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 85bb56f39f..7c45f8f384 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
@@ -20,11 +20,8 @@
package org.openecomp.sdc.be.model.operations.impl;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
+import com.thinkaurelius.titan.core.TitanVertex;
+import fj.data.Either;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.tinkerpop.gremlin.structure.Direction;
import org.apache.tinkerpop.gremlin.structure.Edge;
@@ -47,20 +44,24 @@ import org.openecomp.sdc.common.datastructure.Wrapper;
import org.openecomp.sdc.common.util.MethodActivationStatusEnum;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
-import com.thinkaurelius.titan.core.TitanVertex;
-
-import fj.data.Either;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
@Component("user-operation")
public class UserAdminOperation implements IUserAdminOperation {
- @javax.annotation.Resource
private TitanGenericDao titanGenericDao;
- public UserAdminOperation() {
+ public UserAdminOperation(@Qualifier("titan-generic-dao") TitanGenericDao titanGenericDao) {
super();
+ this.titanGenericDao = titanGenericDao;
+
}
private static Logger log = LoggerFactory.getLogger(UserAdminOperation.class.getName());
@@ -132,8 +133,7 @@ public class UserAdminOperation implements IUserAdminOperation {
}
}
- private void validateUserExists(Wrapper<Either<User, ActionStatus>> resultWrapper, Wrapper<UserData> userWrapper,
- String id) {
+ private void validateUserExists(Wrapper<Either<User, ActionStatus>> resultWrapper, Wrapper<UserData> userWrapper, String id) {
Either<User, ActionStatus> result;
if (id == null) {
log.info("User userId is empty");
@@ -142,19 +142,10 @@ public class UserAdminOperation implements IUserAdminOperation {
return;
}
id = id.toLowerCase();
- Either<UserData, TitanOperationStatus> either = titanGenericDao
- .getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.User), id, UserData.class);
+ Either<UserData, TitanOperationStatus> either = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.User), id, UserData.class);
if (either.isRight()) {
- if (either.right().value() == TitanOperationStatus.NOT_FOUND) {
- log.debug("User with userId {} not found", id);
- result = Either.right(ActionStatus.USER_NOT_FOUND);
- resultWrapper.setInnerElement(result);
- } else {
- log.debug("Problem get User with userId {}. Reason - {}", id, either.right().value().name());
- result = Either.right(ActionStatus.GENERAL_ERROR);
- resultWrapper.setInnerElement(result);
- }
+ resultWrapper.setInnerElement(getUserNotFoundError(id, either.right().value()));
} else {
userWrapper.setInnerElement(either.left().value());
}
@@ -168,10 +159,10 @@ public class UserAdminOperation implements IUserAdminOperation {
UserData userData = convertToUserData(user);
result = titanGenericDao.createNode(userData, UserData.class);
if (result.isRight()) {
- log.debug("Problem while saving User {}. Reason - {}", userData.toString(), result.right().value().name());
+ log.debug("Problem while saving User {}. Reason - {}",userData.toString(),result.right().value().name());
return Either.right(StorageOperationStatus.GENERAL_ERROR);
}
- log.debug("User {} saved successfully", userData.toString());
+ log.debug("User {} saved successfully",userData.toString());
return Either.left(convertToUser(result.left().value()));
} finally {
@@ -194,10 +185,10 @@ public class UserAdminOperation implements IUserAdminOperation {
UserData userData = convertToUserData(user);
result = titanGenericDao.updateNode(userData, UserData.class);
if (result.isRight()) {
- log.debug("Problem while updating User {}. Reason - {}", userData.toString(), result.right().value().name());
+ log.debug("Problem while updating User {}. Reason - {}",userData.toString(),result.right().value().name());
return Either.right(StorageOperationStatus.GENERAL_ERROR);
}
- log.debug("User {} updated successfully", userData.toString());
+ log.debug("User {} updated successfully",userData.toString());
return Either.left(convertToUser(result.left().value()));
} finally {
@@ -229,10 +220,9 @@ public class UserAdminOperation implements IUserAdminOperation {
@Override
public Either<User, ActionStatus> deleteUserData(String id) {
Either<User, ActionStatus> result;
- Either<UserData, TitanOperationStatus> eitherGet = titanGenericDao
- .getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.User), id, UserData.class);
+ Either<UserData, TitanOperationStatus> eitherGet = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.User), id, UserData.class);
if (eitherGet.isRight()) {
- log.debug("Problem while retriving user with userId {}", id);
+ log.debug("Problem while retriving user with userId {}",id);
if (eitherGet.right().value() == TitanOperationStatus.NOT_FOUND) {
result = Either.right(ActionStatus.USER_NOT_FOUND);
} else {
@@ -264,11 +254,11 @@ public class UserAdminOperation implements IUserAdminOperation {
private void deleteUser(Wrapper<Either<User, ActionStatus>> resultWrapper, UserData userData) {
Either<UserData, TitanOperationStatus> eitherDelete = titanGenericDao.deleteNode(userData, UserData.class);
if (eitherDelete.isRight()) {
- log.debug("Problem while deleting User {}. Reason - {}", userData.toString(), eitherDelete.right().value().name());
+ log.debug("Problem while deleting User {}. Reason - {}",userData.toString(),eitherDelete.right().value().name());
Either<User, ActionStatus> result = Either.right(ActionStatus.GENERAL_ERROR);
resultWrapper.setInnerElement(result);
} else {
- log.debug("User {} deleted successfully", userData.toString());
+ log.debug("User {} deleted successfully",userData.toString());
Either<User, ActionStatus> result = Either.left(convertToUser(eitherDelete.left().value()));
resultWrapper.setInnerElement(result);
}
@@ -277,10 +267,9 @@ public class UserAdminOperation implements IUserAdminOperation {
private void validateUserHasNoConnections(Wrapper<Either<User, ActionStatus>> resultWrapper, UserData userData) {
if (resultWrapper.isEmpty()) {
- Either<List<Edge>, TitanOperationStatus> edgesForNode = titanGenericDao.getEdgesForNode(userData,
- Direction.BOTH);
+ Either<List<Edge>, TitanOperationStatus> edgesForNode = titanGenericDao.getEdgesForNode(userData, Direction.BOTH);
if (edgesForNode.isRight()) {
- log.debug("Problem while deleting User {}. Reason - {}", userData.toString(), edgesForNode.right().value().name());
+ log.debug("Problem while deleting User {}. Reason - {}",userData.toString(),edgesForNode.right().value().name());
Either<User, ActionStatus> result = Either.right(ActionStatus.GENERAL_ERROR);
resultWrapper.setInnerElement(result);
} else {
@@ -293,35 +282,31 @@ public class UserAdminOperation implements IUserAdminOperation {
}
}
- public Either<List<Edge>, StorageOperationStatus> getUserPandingTasksList(User user,
- Map<String, Object> properties) {
+ public Either<List<Edge>, StorageOperationStatus> getUserPandingTasksList(User user, Map<String, Object> properties) {
UserData userData = convertToUserData(user);
- Either<TitanVertex, TitanOperationStatus> vertexUser = titanGenericDao
- .getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.User), user.getUserId());
+ Either<TitanVertex, TitanOperationStatus> vertexUser = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.User), user.getUserId());
if (vertexUser.isRight()) {
- log.debug("Problem while deleting User {}. Reason - {}", userData.toString(), vertexUser.right().value().name());
+ log.debug("Problem while deleting User {}. Reason - {}",userData.toString(),vertexUser.right().value().name());
return Either.right(StorageOperationStatus.GENERAL_ERROR);
}
List<Edge> pandingTasks = new ArrayList<>();
- Either<List<Edge>, TitanOperationStatus> edges = titanGenericDao
- .getOutgoingEdgesByCriteria(vertexUser.left().value(), GraphEdgeLabels.STATE, properties);
+ Either<List<Edge>, TitanOperationStatus> edges = titanGenericDao.getOutgoingEdgesByCriteria(vertexUser.left().value(), GraphEdgeLabels.STATE, properties);
if (edges.isRight() || edges.left().value() == null) {
if (edges.right().value() == TitanOperationStatus.NOT_FOUND) {
return Either.left(pandingTasks);
} else {
- log.debug("Problem while deleting User {}", userData.toString(), edges.right().value().name());
+ log.debug("Problem while deleting User {}. Reason - ",userData.toString(),edges.right().value().name());
return Either.right(StorageOperationStatus.GENERAL_ERROR);
}
}
for (Edge edge : edges.left().value()) {
Vertex componentVertex = edge.inVertex();
- VertexProperty<Object> property = componentVertex
- .property(GraphPropertiesDictionary.IS_DELETED.getProperty());
+ VertexProperty<Object> property = componentVertex.property(GraphPropertiesDictionary.IS_DELETED.getProperty());
if (!property.isPresent()) {
pandingTasks.add(edge);
} else {
@@ -347,35 +332,64 @@ public class UserAdminOperation implements IUserAdminOperation {
propertiesToMatch.put(GraphPropertiesDictionary.USER_STATUS.getProperty(), status);
}
- Either<List<UserData>, TitanOperationStatus> userNodes = titanGenericDao.getByCriteria(NodeTypeEnum.User,
- propertiesToMatch, UserData.class);
+ Either<List<UserData>, TitanOperationStatus> userNodes = titanGenericDao.getByCriteria(NodeTypeEnum.User, propertiesToMatch, UserData.class);
titanGenericDao.commit();
- if (userNodes.isRight()) {
- // in case of NOT_FOUND from Titan return empty list
- if (userNodes.right().value().equals(TitanOperationStatus.NOT_FOUND)) {
- return Either.left(result);
- } else {
- log.error("Problem while getting all users with role {}. Reason - {}", role, userNodes.right().value().name());
- return Either.right(ActionStatus.GENERAL_ERROR);
- }
- } else {
- List<UserData> userDataList = userNodes.left().value();
- if (userDataList != null) {
- for (UserData userData : userDataList) {
- User user = convertToUser(userData);
- result.add(user);
- }
- return Either.left(result);
- }
- log.debug("No users were found with role {}", role);
- return Either.left(result);
- }
+ return convertToUsers(role, userNodes);
} finally {
titanGenericDao.commit();
}
}
+ private Either<List<User>, ActionStatus> convertToUsers(String role, Either<List<UserData>, TitanOperationStatus> userNodes) {
+
+ if (userNodes.isRight()) {
+ // in case of NOT_FOUND from Titan return empty list
+ if (userNodes.right().value().equals(TitanOperationStatus.NOT_FOUND)) {
+ return Either.left(Collections.emptyList());
+ } else {
+ log.error("Problem while getting all users with role {}. Reason - {}", role, userNodes.right().value().name());
+ return Either.right(ActionStatus.GENERAL_ERROR);
+ }
+ } else {
+ List<UserData> userDataList = userNodes.left().value();
+ if (userDataList != null) {
+ return Either.left(convertToUsers(userDataList));
+ }
+ log.debug("No users were found with role {}", role);
+ return Either.left(Collections.emptyList());
+ }
+ }
+
+ private List<User> convertToUsers(List<UserData> usersData) {
+ List<User> result = new ArrayList<>();
+ for (UserData userData : usersData) {
+ User user = convertToUser(userData);
+ result.add(user);
+ }
+ return result;
+ }
+
+ @Override
+ public Either<List<User>, ActionStatus> getAllUsers() {
+ try {
+ Either<List<UserData>, TitanOperationStatus> userNodes = titanGenericDao.getAll(NodeTypeEnum.User, UserData.class);
+ return convertToUsers("", userNodes);
+ } finally {
+ titanGenericDao.commit();
+ }
+ }
+
+ private Either<User, ActionStatus> getUserNotFoundError(String uid, TitanOperationStatus status) {
+ if (status == TitanOperationStatus.NOT_FOUND) {
+ log.debug("User with userId {} not found", uid);
+ return Either.right(ActionStatus.USER_NOT_FOUND);
+ } else {
+ log.debug("Problem get User with userId {}. Reason - {}", uid, status.name());
+ return Either.right(ActionStatus.GENERAL_ERROR);
+ }
+ }
+
protected User convertToUser(UserData userData) {
User user = new User();
user.setUserId(userData.getUserId());
@@ -403,6 +417,7 @@ public class UserAdminOperation implements IUserAdminOperation {
return userData;
}
+ @Override
public Either<ImmutablePair<User, FunctionalMenuInfo>, ActionStatus> getUserDataWithFunctionalMenu(String userId) {
Either<User, ActionStatus> userData = getUserData(userId, true, true);
@@ -424,8 +439,7 @@ public class UserAdminOperation implements IUserAdminOperation {
functionalMenuInfo.setFunctionalMenu(userFunctionalMenuData.getFunctionalMenu());
}
- ImmutablePair<User, FunctionalMenuInfo> result = new ImmutablePair<User, FunctionalMenuInfo>(user,
- functionalMenuInfo);
+ ImmutablePair<User, FunctionalMenuInfo> result = new ImmutablePair<User, FunctionalMenuInfo>(user, functionalMenuInfo);
return Either.left(result);
}
@@ -441,8 +455,7 @@ public class UserAdminOperation implements IUserAdminOperation {
userId = userId.toLowerCase();
String uid = UniqueIdBuilder.buildUserFunctionalMenuUid(userId);
- Either<UserFunctionalMenuData, TitanOperationStatus> either = titanGenericDao.getNode(
- UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.UserFunctionalMenu), uid, UserFunctionalMenuData.class);
+ Either<UserFunctionalMenuData, TitanOperationStatus> either = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.UserFunctionalMenu), uid, UserFunctionalMenuData.class);
return either;
}
@@ -457,8 +470,7 @@ public class UserAdminOperation implements IUserAdminOperation {
String uid = UniqueIdBuilder.buildUserFunctionalMenuUid(userId);
UserFunctionalMenuData functionalMenuData = new UserFunctionalMenuData(newFunctionalMenu, uid);
- Either<UserFunctionalMenuData, TitanOperationStatus> createNode = titanGenericDao
- .createNode(functionalMenuData, UserFunctionalMenuData.class);
+ Either<UserFunctionalMenuData, TitanOperationStatus> createNode = titanGenericDao.createNode(functionalMenuData, UserFunctionalMenuData.class);
if (createNode.isRight()) {
return Either.right(createNode.right().value());
@@ -473,8 +485,7 @@ public class UserAdminOperation implements IUserAdminOperation {
} else {
UserFunctionalMenuData userFunctionalMenuData = functionalMenu.left().value();
userFunctionalMenuData.setFunctionalMenu(newFunctionalMenu);
- Either<UserFunctionalMenuData, TitanOperationStatus> updateNode = titanGenericDao
- .updateNode(userFunctionalMenuData, UserFunctionalMenuData.class);
+ Either<UserFunctionalMenuData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(userFunctionalMenuData, UserFunctionalMenuData.class);
if (updateNode.isRight()) {
return Either.right(updateNode.right().value());