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

pl.edu.icm.unity.home.console.HomeServiceConfiguration Maven / Gradle / Ivy

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


package pl.edu.icm.unity.home.console;

import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import pl.edu.icm.unity.MessageSource;
import pl.edu.icm.unity.exceptions.InternalException;
import pl.edu.icm.unity.home.HomeEndpointProperties;
import pl.edu.icm.unity.home.HomeEndpointProperties.RemovalModes;
import pl.edu.icm.unity.types.basic.Group;
import pl.edu.icm.unity.webui.common.groups.GroupWithIndentIndicator;

/**
 * 
 * Contains home service configuration
 * 
 * @author P.Piernik
 *
 */
public class HomeServiceConfiguration
{
	private List enabledTabs;
	private List enabledUserDetailsControls;
	private List exposedAttributes;
	private boolean allowRemovalSheduling;
	private RemovalModes removalMode;
	private boolean enableUpMan;
	private String upManService;
	private List enquiryForms;

	HomeServiceConfiguration()
	{
		enabledTabs = new ArrayList<>();
		enabledUserDetailsControls = new ArrayList<>();
		exposedAttributes = new ArrayList<>();
		allowRemovalSheduling = true;
		removalMode = RemovalModes.remove;
		enquiryForms = new ArrayList<>();
	}

	public String toProperties(String extraTab)
	{
		Properties raw = new Properties();
		List allComponents = Stream.of(HomeEndpointProperties.Components.values())
				.map(HomeEndpointProperties.Components::toString).collect(Collectors.toList());
		allComponents.add(extraTab);

		allComponents.removeAll(enabledTabs);
		allComponents.removeAll(enabledUserDetailsControls);

		if (!allComponents.isEmpty())
		{
			allComponents.forEach(c -> raw.put(HomeEndpointProperties.PREFIX
					+ HomeEndpointProperties.DISABLED_COMPONENTS
					+ (allComponents.indexOf(c) + 1), c));
		}

		for (ExposedAttribute a : exposedAttributes)
		{
			raw.put(HomeEndpointProperties.PREFIX + HomeEndpointProperties.ATTRIBUTES
					+ (exposedAttributes.indexOf(a) + 1) + "."
					+ HomeEndpointProperties.GWA_ATTRIBUTE, a.getName());
			raw.put(HomeEndpointProperties.PREFIX + HomeEndpointProperties.ATTRIBUTES
					+ (exposedAttributes.indexOf(a) + 1) + "."
					+ HomeEndpointProperties.GWA_GROUP, a.getGroup().group.toString());

			raw.put(HomeEndpointProperties.PREFIX + HomeEndpointProperties.ATTRIBUTES
					+ (exposedAttributes.indexOf(a) + 1) + "."
					+ HomeEndpointProperties.GWA_EDITABLE, String.valueOf(a.isEditable()));

			raw.put(HomeEndpointProperties.PREFIX + HomeEndpointProperties.ATTRIBUTES
					+ (exposedAttributes.indexOf(a) + 1) + "."
					+ HomeEndpointProperties.GWA_SHOW_GROUP,
					String.valueOf(a.isShowGroup()));
		}

		raw.put(HomeEndpointProperties.PREFIX + HomeEndpointProperties.DISABLE_REMOVAL_SCHEDULE,
				String.valueOf(!allowRemovalSheduling));
		if (allowRemovalSheduling)
		{
			raw.put(HomeEndpointProperties.PREFIX + HomeEndpointProperties.REMOVAL_MODE,
					String.valueOf(removalMode));
		}
		raw.put(HomeEndpointProperties.PREFIX + HomeEndpointProperties.ENABLE_PROJECT_MANAGEMENT_LINK,
				String.valueOf(enableUpMan));
		if (enableUpMan)
		{
			if (upManService != null && !upManService.isEmpty())
			{
				raw.put(HomeEndpointProperties.PREFIX
						+ HomeEndpointProperties.PROJECT_MANAGEMENT_ENDPOINT,
						upManService);
			}
		}

		if (!enquiryForms.isEmpty())
		{
			enquiryForms.forEach(c -> raw.put(HomeEndpointProperties.PREFIX
					+ HomeEndpointProperties.ENQUIRIES + (enquiryForms.indexOf(c) + 1), c));
		}

		HomeEndpointProperties prop = new HomeEndpointProperties(raw);
		return prop.getAsString();
	}

	public void fromProperties(String properties, MessageSource msg, String extraTab,
			List allGroups)
	{
		Properties raw = new Properties();
		try
		{
			raw.load(new StringReader(properties));
		} catch (IOException e)
		{
			throw new InternalException("Invalid configuration of the home ui service", e);
		}

		HomeEndpointProperties homeProperties = new HomeEndpointProperties(raw);

		List disabledComponents = homeProperties
				.getListOfValues(HomeEndpointProperties.DISABLED_COMPONENTS);

		enabledTabs = HomeServiceEditorComponent.getAvailableTabs();
		enabledUserDetailsControls = HomeServiceEditorComponent.getAvailableControls();
		enabledUserDetailsControls.add(extraTab);

		enabledTabs.removeAll(disabledComponents);
		enabledUserDetailsControls.removeAll(disabledComponents);

		Set attrKeys = homeProperties.getStructuredListKeys(HomeEndpointProperties.ATTRIBUTES);
		for (String key : attrKeys)
		{
			ExposedAttribute attr = new ExposedAttribute();
			attr.setName(homeProperties.getValue(key + HomeEndpointProperties.GWA_ATTRIBUTE));

			String groupPath = homeProperties.getValue(key + HomeEndpointProperties.GWA_GROUP);
			attr.setGroup(new GroupWithIndentIndicator(
					allGroups.stream().filter(g -> g.toString().equals(groupPath))
							.findFirst().orElse(new Group(groupPath)),
					false));
			attr.setEditable(homeProperties
					.getBooleanValue(key + HomeEndpointProperties.GWA_EDITABLE));
			attr.setShowGroup(homeProperties
					.getBooleanValue(key + HomeEndpointProperties.GWA_SHOW_GROUP));
			exposedAttributes.add(attr);
		}

		removalMode = homeProperties.getEnumValue(HomeEndpointProperties.REMOVAL_MODE,
				HomeEndpointProperties.RemovalModes.class);
		allowRemovalSheduling = !homeProperties
				.getBooleanValue(HomeEndpointProperties.DISABLE_REMOVAL_SCHEDULE);

		enableUpMan = homeProperties
				.getBooleanValue(HomeEndpointProperties.ENABLE_PROJECT_MANAGEMENT_LINK);
		upManService = homeProperties.getValue(HomeEndpointProperties.PROJECT_MANAGEMENT_ENDPOINT);

		enquiryForms = homeProperties.getListOfValues(HomeEndpointProperties.ENQUIRIES);
	}

	public List getEnabledTabs()
	{
		return enabledTabs;
	}

	public void setEnabledTabs(List enabledTabs)
	{
		this.enabledTabs = enabledTabs;
	}

	public List getEnabledUserDetailsControls()
	{
		return enabledUserDetailsControls;
	}

	public void setEnabledUserDetailsControls(List enabledUserDetailsControls)
	{
		this.enabledUserDetailsControls = enabledUserDetailsControls;
	}

	public List getExposedAttributes()
	{
		return exposedAttributes;
	}

	public void setExposedAttributes(List exposedAttributes)
	{
		this.exposedAttributes = exposedAttributes;
	}

	public boolean isAllowRemovalSheduling()
	{
		return allowRemovalSheduling;
	}

	public void setAllowRemovalSheduling(boolean allowRemovalSheduling)
	{
		this.allowRemovalSheduling = allowRemovalSheduling;
	}

	public RemovalModes getRemovalMode()
	{
		return removalMode;
	}

	public void setRemovalMode(RemovalModes removalMode)
	{
		this.removalMode = removalMode;
	}

	public boolean isEnableUpMan()
	{
		return enableUpMan;
	}

	public void setEnableUpMan(boolean enableUpMan)
	{
		this.enableUpMan = enableUpMan;
	}

	public String getUpManService()
	{
		return upManService;
	}

	public void setUpManService(String upManService)
	{
		this.upManService = upManService;
	}

	public List getEnquiryForms()
	{
		return enquiryForms;
	}

	public void setEnquiryForms(List enquiryForms)
	{
		this.enquiryForms = enquiryForms;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy