![JAR search and dependency download from the Maven repository](/logo.png)
io.github.dronesecurity.userapplication.infrastructure.user.repo.AbstractUserRepository Maven / Gradle / Ivy
/*
* Copyright (c) 2021-2022, Mirko Felice & Maxim Derevyanchenko. All rights reserved.
* Licensed under the MIT license. See LICENSE file in the project root for details.
*/
package io.github.dronesecurity.userapplication.infrastructure.user.repo;
import io.github.dronesecurity.userapplication.domain.user.entities.contracts.Courier;
import io.github.dronesecurity.userapplication.domain.user.entities.contracts.Maintainer;
import io.github.dronesecurity.userapplication.domain.user.entities.contracts.Role;
import io.github.dronesecurity.userapplication.domain.user.entities.contracts.User;
import io.github.dronesecurity.userapplication.domain.user.repo.UserRepository;
import io.github.dronesecurity.userapplication.infrastructure.MongoRepository;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import java.util.Optional;
import java.util.function.Function;
/**
* Abstract base implementation of {@link UserRepository} to work with the logged user.
*/
public abstract class AbstractUserRepository extends MongoRepository implements UserRepository {
private Optional loggedUser = Optional.empty();
/**
* {@inheritDoc}
*/
@Override
public final void loggedIn(final User user) {
this.loggedUser = Optional.of(user);
}
/**
* {@inheritDoc}
*/
@Override
public final void loggedOut(final User user) {
this.loggedUser = Optional.empty();
}
/**
* {@inheritDoc}
*/
@Override
public final Optional checkLoggedUserRole() {
return this.loggedUser.map(User::getRole);
}
/**
* {@inheritDoc}
*/
@Override
public final Optional retrieveLoggedCourierIfPresent() {
return this.loggedUser.map(this.mapper(Role.COURIER, Courier.class));
}
/**
* {@inheritDoc}
*/
@Override
public final Optional retrieveLoggedMaintainerIfPresent() {
return this.loggedUser.map(this.mapper(Role.MAINTAINER, Maintainer.class));
}
@Contract(pure = true)
private @NotNull Function mapper(final Role role, final Class clazz) {
return user -> {
if (user.getRole() == role)
return clazz.cast(user);
else
return null;
};
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy