UserService.java

  1. package de.dlr.shepard.neo4Core.services;

  2. import de.dlr.shepard.neo4Core.dao.UserDAO;
  3. import de.dlr.shepard.neo4Core.entities.User;
  4. import lombok.extern.slf4j.Slf4j;

  5. @Slf4j
  6. public class UserService {
  7.     private UserDAO userDAO = new UserDAO();

  8.     /**
  9.      * Stores a new user in Neo4J.
  10.      *
  11.      * @param user The user to be stored.
  12.      * @return The created user
  13.      */
  14.     public User createUser(User user) {
  15.         log.info("Create user {}", user);
  16.         return userDAO.createOrUpdate(user);
  17.     }

  18.     /**
  19.      * Update a user in Neo4J. The user is created if it does not exist.
  20.      *
  21.      * @param user The user to be updated
  22.      * @return The updated user
  23.      */
  24.     public User updateUser(User user) {
  25.         User old = getUser(user.getUsername());
  26.         if (old == null) {
  27.             log.info("The user {} does not exist, creating...", user.getUsername());
  28.             return userDAO.createOrUpdate(user);
  29.         }

  30.         String firstName = user.getFirstName() != null ? user.getFirstName() : old.getFirstName();
  31.         String lastName = user.getLastName() != null ? user.getLastName() : old.getLastName();
  32.         String email = user.getEmail() != null ? user.getEmail() : old.getEmail();

  33.         if (!firstName.equals(old.getFirstName()) || !lastName.equals(old.getLastName())
  34.                 || !email.equals(old.getEmail())) {
  35.             old.setFirstName(firstName);
  36.             old.setLastName(lastName);
  37.             old.setEmail(email);
  38.             log.info("Update user {}", old);
  39.             return userDAO.createOrUpdate(old);
  40.         }

  41.         return old;
  42.     }

  43.     /**
  44.      * Returns the user with the given name.
  45.      *
  46.      * @param username of the user to be returned.
  47.      * @return The requested user.
  48.      */
  49.     public User getUser(String username) {
  50.         return userDAO.find(username);
  51.     }

  52. }