All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.imunity.furms.ui.components.layout.UserViewContextHandler Maven / Gradle / Ivy

There is a newer version: 4.3.1
Show newest version
/*
 * Copyright (c) 2021 Bixbit s.c. All rights reserved.
 *  See LICENSE file for licensing information.
 */

package io.imunity.furms.ui.components.layout;

import com.vaadin.flow.router.BeforeEnterEvent;
import com.vaadin.flow.router.Location;
import io.imunity.furms.ui.user_context.FurmsViewUserContext;
import io.imunity.furms.ui.user_context.RoleTranslator;
import io.imunity.furms.ui.user_context.ViewMode;
import org.springframework.stereotype.Component;

import java.util.stream.Stream;

import static java.util.Collections.emptyList;
import static java.util.Optional.ofNullable;

@Component
public class UserViewContextHandler {

	private final static String PARAM_RESOURCE_ID = "resourceId";

	private final RoleTranslator roleTranslator;

	UserViewContextHandler(RoleTranslator roleTranslator) {
		this.roleTranslator = roleTranslator;
	}

	void setUserViewContext(BeforeEnterEvent beforeEnterEvent, ViewMode viewMode) {
		beforeEnterEvent.getLocation()
				.getSubLocation()
				.map(Location::getQueryParameters)
				.flatMap(queryParameters -> ofNullable(queryParameters.getParameters().get(PARAM_RESOURCE_ID)))
				.filter(resourceId -> !resourceId.isEmpty())
				.map(resourceId -> resourceId.iterator().next())
				.ifPresentOrElse(
						resourceId -> setUserViewContext(resourceId, viewMode),
						() -> setUserViewContext(viewMode));
	}

	private void setUserViewContext(String resourceId, ViewMode viewMode) {
		findViewUserContextsByViewMode(viewMode)
				.filter(viewUserContext -> viewUserContext.id.equals(resourceId))
				.findAny()
				.ifPresent(FurmsViewUserContext::setAsCurrent);
	}

	private void setUserViewContext(ViewMode viewMode) {
		findViewUserContextsByViewMode(viewMode)
				.findAny()
				.ifPresent(FurmsViewUserContext::setAsCurrent);
	}

	private Stream findViewUserContextsByViewMode(ViewMode viewMode) {
		return roleTranslator.refreshAuthzRolesAndGetRolesToUserViewContexts()
				.getOrDefault(viewMode, emptyList())
				.stream();
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy