diff options
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.java | 124 |
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<>(); |