UserService.java
package de.dlr.shepard.neo4Core.services;
import de.dlr.shepard.neo4Core.dao.UserDAO;
import de.dlr.shepard.neo4Core.entities.User;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class UserService {
private UserDAO userDAO = new UserDAO();
/**
* Stores a new user in Neo4J.
*
* @param user The user to be stored.
* @return The created user
*/
public User createUser(User user) {
log.info("Create user {}", user);
return userDAO.createOrUpdate(user);
}
/**
* Update a user in Neo4J. The user is created if it does not exist.
*
* @param user The user to be updated
* @return The updated user
*/
public User updateUser(User user) {
User old = getUser(user.getUsername());
if (old == null) {
log.info("The user {} does not exist, creating...", user.getUsername());
return userDAO.createOrUpdate(user);
}
String firstName = user.getFirstName() != null ? user.getFirstName() : old.getFirstName();
String lastName = user.getLastName() != null ? user.getLastName() : old.getLastName();
String email = user.getEmail() != null ? user.getEmail() : old.getEmail();
if (!firstName.equals(old.getFirstName()) || !lastName.equals(old.getLastName())
|| !email.equals(old.getEmail())) {
old.setFirstName(firstName);
old.setLastName(lastName);
old.setEmail(email);
log.info("Update user {}", old);
return userDAO.createOrUpdate(old);
}
return old;
}
/**
* Returns the user with the given name.
*
* @param username of the user to be returned.
* @return The requested user.
*/
public User getUser(String username) {
return userDAO.find(username);
}
}