package org.apereo.cas.configuration.model.core.authentication; import org.apache.commons.lang3.StringUtils; import org.apereo.cas.configuration.model.support.jpa.AbstractJpaProperties; import org.apereo.cas.configuration.model.support.ldap.AbstractLdapProperties; import org.apereo.cas.configuration.support.AbstractConfigProperties; import org.apereo.services.persondir.support.QueryType; import org.apereo.services.persondir.util.CaseCanonicalizationMode; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; /** * This is {@link PrincipalAttributesProperties}. * * @author Misagh Moayyed * @since 5.0.0 */ public class PrincipalAttributesProperties { private int expireInMinutes = 30; private int maximumCacheSize = 10000; private String merger = "REPLACE"; private Set<String> defaultAttributesToRelease = new HashSet<>(); private List<Jdbc> jdbc = new ArrayList<>(); private List<Groovy> groovy = new ArrayList(); private List<Ldap> ldap = new ArrayList(); private List<Json> json = new ArrayList(); private Stub stub = new Stub(); private Grouper grouper = new Grouper(); public Stub getStub() { return stub; } public void setStub(final Stub stub) { this.stub = stub; } public Grouper getGrouper() { return grouper; } public void setGrouper(final Grouper grouper) { this.grouper = grouper; } public List<Groovy> getGroovy() { return groovy; } public void setGroovy(final List<Groovy> groovy) { this.groovy = groovy; } public List<Json> getJson() { return json; } public void setJson(final List<Json> json) { this.json = json; } public List<Ldap> getLdap() { return ldap; } public void setLdap(final List<Ldap> ldap) { this.ldap = ldap; } public String getMerger() { return merger; } public void setMerger(final String merger) { this.merger = merger; } public int getExpireInMinutes() { return expireInMinutes; } public void setExpireInMinutes(final int expireInMinutes) { this.expireInMinutes = expireInMinutes; } public int getMaximumCacheSize() { return maximumCacheSize; } public void setMaximumCacheSize(final int maximumCacheSize) { this.maximumCacheSize = maximumCacheSize; } public List<Jdbc> getJdbc() { return jdbc; } public void setJdbc(final List<Jdbc> jdbc) { this.jdbc = jdbc; } public Set<String> getDefaultAttributesToRelease() { return defaultAttributesToRelease; } public void setDefaultAttributesToRelease(final Set<String> defaultAttributesToRelease) { this.defaultAttributesToRelease = defaultAttributesToRelease; } public static class Grouper { private int order; private boolean enabled; public boolean isEnabled() { return enabled; } public void setEnabled(final boolean enabled) { this.enabled = enabled; } public int getOrder() { return order; } public void setOrder(final int order) { this.order = order; } } public static class Stub { private Map<String, String> attributes = new HashMap(); public Map<String, String> getAttributes() { return attributes; } public void setAttributes(final Map<String, String> attributes) { this.attributes = attributes; } } public static class Jdbc extends AbstractJpaProperties { private String sql; private boolean singleRow = true; private boolean requireAllAttributes = true; private CaseCanonicalizationMode caseCanonicalization = CaseCanonicalizationMode.NONE; private QueryType queryType = QueryType.AND; private Map<String, String> columnMappings = new HashMap<>(); private List<String> username = new ArrayList<>(); private int order; private Map<String, String> attributes = new HashMap(); public Map<String, String> getAttributes() { return attributes; } public void setAttributes(final Map<String, String> attributes) { this.attributes = attributes; } public int getOrder() { return order; } public void setOrder(final int order) { this.order = order; } public String getSql() { return sql; } public void setSql(final String sql) { this.sql = StringUtils.replace(sql, "{user}", "?"); } public List<String> getUsername() { return username; } public void setUsername(final List<String> username) { this.username = username; } public boolean isSingleRow() { return singleRow; } public void setSingleRow(final boolean singleRow) { this.singleRow = singleRow; } public boolean isRequireAllAttributes() { return requireAllAttributes; } public void setRequireAllAttributes(final boolean requireAllAttributes) { this.requireAllAttributes = requireAllAttributes; } public CaseCanonicalizationMode getCaseCanonicalization() { return caseCanonicalization; } public void setCaseCanonicalization(final CaseCanonicalizationMode caseCanonicalization) { this.caseCanonicalization = caseCanonicalization; } public QueryType getQueryType() { return queryType; } public void setQueryType(final QueryType queryType) { this.queryType = queryType; } public Map<String, String> getColumnMappings() { return columnMappings; } public void setColumnMappings(final Map<String, String> columnMappings) { this.columnMappings = columnMappings; } } public static class Json extends AbstractConfigProperties { private int order; public int getOrder() { return order; } public void setOrder(final int order) { this.order = order; } } public static class Groovy extends AbstractConfigProperties { private boolean caseInsensitive; private int order; public int getOrder() { return order; } public void setOrder(final int order) { this.order = order; } public boolean isCaseInsensitive() { return caseInsensitive; } public void setCaseInsensitive(final boolean caseInsensitive) { this.caseInsensitive = caseInsensitive; } } public static class Ldap extends AbstractLdapProperties { private boolean subtreeSearch = true; private String baseDn; private String userFilter; private int order; private Map<String, String> attributes = new HashMap(); public Map<String, String> getAttributes() { return attributes; } public void setAttributes(final Map<String, String> attributes) { this.attributes = attributes; } public int getOrder() { return order; } public void setOrder(final int order) { this.order = order; } public String getBaseDn() { return baseDn; } public void setBaseDn(final String baseDn) { this.baseDn = baseDn; } public String getUserFilter() { return userFilter; } public void setUserFilter(final String userFilter) { this.userFilter = userFilter; } public boolean isSubtreeSearch() { return subtreeSearch; } public void setSubtreeSearch(final boolean subtreeSearch) { this.subtreeSearch = subtreeSearch; } } }