package org.apereo.cas.web.flow.services; import org.apereo.cas.services.RegisteredService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.util.StringUtils; import java.io.Serializable; import java.net.URL; import java.util.ArrayList; import java.util.Collection; /** * This is {@link DefaultRegisteredServiceUserInterfaceInfo}. * * @author Misagh Moayyed * @since 5.1.0 */ public class DefaultRegisteredServiceUserInterfaceInfo implements Serializable { private static final int DEFAULT_IMAGE_SIZE = 32; private static final long serialVersionUID = -2416684486715358748L; private static final Logger LOGGER = LoggerFactory.getLogger(DefaultRegisteredServiceUserInterfaceInfo.class); /** the registered service. **/ protected final transient RegisteredService registeredService; public DefaultRegisteredServiceUserInterfaceInfo(final RegisteredService registeredService) { this.registeredService = registeredService; } /** * Gets description. * * @return the description */ public String getDescription() { final Collection<String> items = getDescriptions(); if (items.isEmpty()) { return this.registeredService.getDescription(); } return StringUtils.collectionToDelimitedString(items, "."); } /** * Gets display name. * * @return the display name */ public String getDisplayName() { final Collection<String> items = getDisplayNames(); if (items.isEmpty()) { return this.registeredService.getName(); } return StringUtils.collectionToDelimitedString(items, "."); } /** * Gets descriptions. * * @return the descriptions */ public Collection<String> getDescriptions() { return new ArrayList<>(); } public Collection<String> getDisplayNames() { return new ArrayList<>(); } /** * Gets information uRL. * * @return the information uRL */ public String getInformationURL() { final Collection<String> items = getInformationURLs(); return StringUtils.collectionToDelimitedString(items, "."); } /** * Gets information uR ls. * * @return the information uR ls */ public Collection<String> getInformationURLs() { return new ArrayList<>(); } /** * Gets privacy statement uRL. * * @return the privacy statement uRL */ public String getPrivacyStatementURL() { final Collection<String> items = getPrivacyStatementURLs(); return StringUtils.collectionToDelimitedString(items, "."); } /** * Gets privacy statement uR ls. * * @return the privacy statement uR ls */ public Collection<String> getPrivacyStatementURLs() { return new ArrayList<>(); } /** * Gets logo height. * * @return the logo url */ public long getLogoWidth() { try { final Collection<Logo> items = getLogoUrls(); if (!items.isEmpty()) { return items.iterator().next().getWidth(); } } catch (final Exception e) { LOGGER.debug(e.getMessage(), e); } return DEFAULT_IMAGE_SIZE; } /** * Gets logo height. * * @return the logo url */ public long getLogoHeight() { try { final Collection<Logo> items = getLogoUrls(); if (!items.isEmpty()) { return items.iterator().next().getHeight(); } } catch (final Exception e) { LOGGER.debug(e.getMessage(), e); } return DEFAULT_IMAGE_SIZE; } /** * Gets logo url. * * @return the logo url */ public URL getLogoUrl() { try { final Collection<Logo> items = getLogoUrls(); if (!items.isEmpty()) { return new URL(items.iterator().next().getUrl()); } } catch (final Exception e) { LOGGER.debug(e.getMessage(), e); } return this.registeredService.getLogo(); } /** * Gets logo urls. * * @return the logo urls */ public Collection<Logo> getLogoUrls() { return new ArrayList<>(); } /** * The Logo wrapper class for services UI. */ public static class Logo implements Serializable { private static final long serialVersionUID = -1434231982864628179L; private String url; private long height = DEFAULT_IMAGE_SIZE; private long width = DEFAULT_IMAGE_SIZE; public Logo() { } public Logo(final String url, final long height, final long width) { this.url = url; this.height = height; this.width = width; } public long getHeight() { return height; } public void setHeight(final long height) { this.height = height; } public long getWidth() { return width; } public void setWidth(final long width) { this.width = width; } public String getUrl() { return url; } public void setUrl(final String url) { this.url = url; } } }