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

io.imunity.vaadin.auth.services.layout.AuthnLayoutConfigToUIConverter Maven / Gradle / Ivy

There is a newer version: 4.0.4
Show newest version
/*
 * Copyright (c) 2021 Bixbit - Krzysztof Benedyczak. All rights reserved.
 * See LICENCE.txt file for licensing information.
 */

package io.imunity.vaadin.auth.services.layout;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

import io.imunity.vaadin.auth.services.layout.configuration.AuthnLayoutColumnConfiguration;
import io.imunity.vaadin.auth.services.layout.configuration.AuthnLayoutConfiguration;
import io.imunity.vaadin.auth.services.layout.configuration.elements.AuthnElementConfiguration;
import io.imunity.vaadin.auth.services.layout.ui.AuthenticationLayoutContent;
import io.imunity.vaadin.auth.services.layout.ui.AuthnLayoutColumn;
import io.imunity.vaadin.auth.services.layout.ui.ColumnComponent;
import io.imunity.vaadin.auth.services.layout.ui.components.AuthnLayoutComponentsFactory;
import io.imunity.vaadin.elements.LocalizedTextFieldDetails;
import pl.edu.icm.unity.base.i18n.I18nString;


/**
 * Converts authentication layout UI elements to authentication layout
 * configuration elements and revert
 * 
 * @author P.Piernik
 *
 */
public class AuthnLayoutConfigToUIConverter
{
	public static AuthenticationLayoutContent convertToUI(AuthnLayoutConfiguration config,
			AuthnLayoutComponentsFactory factory)
	{
		List separators = new ArrayList<>();
		for (I18nString s : config.separators)
		{
			separators.add(factory.getSeparatorField(s));
		}

		AuthenticationLayoutContent content = new AuthenticationLayoutContent(
				getColumns(config.columns, factory), separators);
		return content;
	}

	private static List getColumns(List columnsC,
			AuthnLayoutComponentsFactory factory)
	{
		List columns = new ArrayList<>();

		for (AuthnLayoutColumnConfiguration config : columnsC)
		{
			AuthnLayoutColumn c = factory.getColumn();
			c.setColumnTitle(config.title);
			c.setColumnWidth(config.width);
			c.setElements(getColumnElements(config.contents, factory));
			columns.add(c);
		}

		return columns;

	}

	public static List getColumnElements(List contents,
			AuthnLayoutComponentsFactory factory)
	{
		List elements = new ArrayList<>();
		if (contents == null)
			return elements;

		for (AuthnElementConfiguration config : contents)
		{
			Optional el = factory.getForType(config);
			if (el.isPresent())
			{
				ColumnComponent elp = el.get();
				elp.setConfigState(config);
				elements.add(elp);
			}
		}
		return elements;
	}

	public static AuthnLayoutConfiguration convertFromUI(AuthenticationLayoutContent config)
	{
		List separators = new ArrayList<>();
		for (LocalizedTextFieldDetails s : config.separators)
		{
			separators.add(new I18nString(s.getValue()));
		}

		return new AuthnLayoutConfiguration(getColumns(config.columns), separators);
	}

	private static List getColumns(List columns)
	{
		List columnsConfigs = new ArrayList<>();

		for (AuthnLayoutColumn column : columns)
		{
			columnsConfigs.add(new AuthnLayoutColumnConfiguration(column.getColumnTitle(),
					column.getColumnWidth(), getColumnElements(column.getElements())));
		}

		return columnsConfigs;
	}

	public static List getColumnElements(List elements)
	{
		List elemetsC = new ArrayList<>();

		for (ColumnComponent element : elements)
		{
			elemetsC.add(element.getConfigState());
		}

		return elemetsC;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy