RealmEntity.java

456 lines | 12.465 kB Blame History Raw Download
package org.keycloak.models.jpa.entities;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.CollectionTable;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.MapKeyColumn;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

/**
 * @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
 * @version $Revision: 1 $
 */
@Table(name = "REALM")
@Entity
@NamedQueries({ @NamedQuery(name = "getAllRealms", query = "select realm from RealmEntity realm"),
		@NamedQuery(name = "getRealmByName", query = "select realm from RealmEntity realm where realm.name = :name"), })
public class RealmEntity {
	@Id
	@Column(name = "ID", length = 36)
	protected String id;

	@Column(name = "NAME", unique = true)
	protected String name;

	@Column(name = "ENABLED")
	protected boolean enabled;
	@Column(name = "SSL_REQUIRED")
	protected String sslRequired;
	@Column(name = "REGISTRATION_ALLOWED")
	protected boolean registrationAllowed;
	@Column(name = "REGISTRATION_EMAIL_AS_USERNAME")
	protected boolean registrationEmailAsUsername;
	@Column(name = "PASSWORD_CRED_GRANT_ALLOWED")
	protected boolean passwordCredentialGrantAllowed;
	@Column(name = "VERIFY_EMAIL")
	protected boolean verifyEmail;
	@Column(name = "RESET_PASSWORD_ALLOWED")
	protected boolean resetPasswordAllowed;
	@Column(name = "REMEMBER_ME")
	protected boolean rememberMe;
	@Column(name = "PASSWORD_POLICY")
	protected String passwordPolicy;

	@Column(name = "SSO_IDLE_TIMEOUT")
	private int ssoSessionIdleTimeout;
	@Column(name = "SSO_MAX_LIFESPAN")
	private int ssoSessionMaxLifespan;
	@Column(name = "ACCESS_TOKEN_LIFESPAN")
	protected int accessTokenLifespan;
	@Column(name = "ACCESS_CODE_LIFESPAN")
	protected int accessCodeLifespan;
	@Column(name = "USER_ACTION_LIFESPAN")
	protected int accessCodeLifespanUserAction;
	@Column(name = "LOGIN_LIFESPAN")
	protected int accessCodeLifespanLogin;
	@Column(name = "NOT_BEFORE")
	protected int notBefore;

	@Column(name = "PUBLIC_KEY", length = 2048)
	protected String publicKeyPem;
	@Column(name = "PRIVATE_KEY", length = 2048)
	protected String privateKeyPem;
	@Column(name = "CERTIFICATE", length = 2048)
	protected String certificatePem;
	@Column(name = "CODE_SECRET", length = 255)
	protected String codeSecret;

	@Column(name = "LOGIN_THEME")
	protected String loginTheme;
	@Column(name = "ACCOUNT_THEME")
	protected String accountTheme;
	@Column(name = "ADMIN_THEME")
	protected String adminTheme;
	@Column(name = "EMAIL_THEME")
	protected String emailTheme;

	@OneToMany(cascade = { CascadeType.REMOVE }, orphanRemoval = true, mappedBy = "realm")
	Collection<RealmAttributeEntity> attributes = new ArrayList<RealmAttributeEntity>();

	@OneToMany(cascade = { CascadeType.REMOVE }, orphanRemoval = true, mappedBy = "realm")
	Collection<RequiredCredentialEntity> requiredCredentials = new ArrayList<RequiredCredentialEntity>();

	@OneToMany(cascade = { CascadeType.REMOVE }, orphanRemoval = true)
	@JoinTable(name = "FED_PROVIDERS")
	List<UserFederationProviderEntity> userFederationProviders = new ArrayList<UserFederationProviderEntity>();

	@OneToMany(fetch = FetchType.LAZY, cascade = { CascadeType.REMOVE }, orphanRemoval = true)
	@JoinTable(name = "REALM_APPLICATION", joinColumns = { @JoinColumn(name = "APPLICATION_ID") }, inverseJoinColumns = { @JoinColumn(name = "REALM_ID") })
	Collection<ApplicationEntity> applications = new ArrayList<ApplicationEntity>();

	@OneToMany(fetch = FetchType.LAZY, cascade = { CascadeType.REMOVE }, orphanRemoval = true, mappedBy = "realm")
	Collection<RoleEntity> roles = new ArrayList<RoleEntity>();

	@ElementCollection
	@MapKeyColumn(name = "NAME")
	@Column(name = "VALUE")
	@CollectionTable(name = "REALM_SMTP_CONFIG", joinColumns = { @JoinColumn(name = "REALM_ID") })
	protected Map<String, String> smtpConfig = new HashMap<String, String>();

	@OneToMany(fetch = FetchType.LAZY, cascade = { CascadeType.REMOVE }, orphanRemoval = true)
	@JoinTable(name = "REALM_DEFAULT_ROLES", joinColumns = { @JoinColumn(name = "REALM_ID") }, inverseJoinColumns = { @JoinColumn(name = "ROLE_ID") })
	protected Collection<RoleEntity> defaultRoles = new ArrayList<RoleEntity>();

	@Column(name = "EVENTS_ENABLED")
	protected boolean eventsEnabled;
	@Column(name = "EVENTS_EXPIRATION")
	protected long eventsExpiration;

	@ElementCollection
	@Column(name = "VALUE")
	@CollectionTable(name = "REALM_EVENTS_LISTENERS", joinColumns = { @JoinColumn(name = "REALM_ID") })
	protected Set<String> eventsListeners = new HashSet<String>();

	@OneToOne
	@JoinColumn(name = "MASTER_ADMIN_APP")
	protected ApplicationEntity masterAdminApp;

	@OneToMany(cascade = { CascadeType.REMOVE }, orphanRemoval = true, mappedBy = "realm")
	protected List<IdentityProviderEntity> identityProviders = new ArrayList<IdentityProviderEntity>();

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public boolean isEnabled() {
		return enabled;
	}

	public void setEnabled(boolean enabled) {
		this.enabled = enabled;
	}

	public String getSslRequired() {
		return sslRequired;
	}

	public void setSslRequired(String sslRequired) {
		this.sslRequired = sslRequired;
	}

	public boolean isPasswordCredentialGrantAllowed() {
		return passwordCredentialGrantAllowed;
	}

	public void setPasswordCredentialGrantAllowed(boolean passwordCredentialGrantAllowed) {
		this.passwordCredentialGrantAllowed = passwordCredentialGrantAllowed;
	}

	public boolean isRegistrationAllowed() {
		return registrationAllowed;
	}

	public void setRegistrationAllowed(boolean registrationAllowed) {
		this.registrationAllowed = registrationAllowed;
	}

	public boolean isRegistrationEmailAsUsername() {
		return registrationEmailAsUsername;
	}

	public void setRegistrationEmailAsUsername(boolean registrationEmailAsUsername) {
		this.registrationEmailAsUsername = registrationEmailAsUsername;
	}

	public boolean isRememberMe() {
		return rememberMe;
	}

	public void setRememberMe(boolean rememberMe) {
		this.rememberMe = rememberMe;
	}

	public boolean isVerifyEmail() {
		return verifyEmail;
	}

	public void setVerifyEmail(boolean verifyEmail) {
		this.verifyEmail = verifyEmail;
	}

	public boolean isResetPasswordAllowed() {
		return resetPasswordAllowed;
	}

	public void setResetPasswordAllowed(boolean resetPasswordAllowed) {
		this.resetPasswordAllowed = resetPasswordAllowed;
	}

	public int getSsoSessionIdleTimeout() {
		return ssoSessionIdleTimeout;
	}

	public void setSsoSessionIdleTimeout(int ssoSessionIdleTimeout) {
		this.ssoSessionIdleTimeout = ssoSessionIdleTimeout;
	}

	public int getSsoSessionMaxLifespan() {
		return ssoSessionMaxLifespan;
	}

	public void setSsoSessionMaxLifespan(int ssoSessionMaxLifespan) {
		this.ssoSessionMaxLifespan = ssoSessionMaxLifespan;
	}

	public int getAccessTokenLifespan() {
		return accessTokenLifespan;
	}

	public void setAccessTokenLifespan(int accessTokenLifespan) {
		this.accessTokenLifespan = accessTokenLifespan;
	}

	public int getAccessCodeLifespan() {
		return accessCodeLifespan;
	}

	public void setAccessCodeLifespan(int accessCodeLifespan) {
		this.accessCodeLifespan = accessCodeLifespan;
	}

	public int getAccessCodeLifespanUserAction() {
		return accessCodeLifespanUserAction;
	}

	public void setAccessCodeLifespanUserAction(int accessCodeLifespanUserAction) {
		this.accessCodeLifespanUserAction = accessCodeLifespanUserAction;
	}

	public int getAccessCodeLifespanLogin() {
		return accessCodeLifespanLogin;
	}

	public void setAccessCodeLifespanLogin(int accessCodeLifespanLogin) {
		this.accessCodeLifespanLogin = accessCodeLifespanLogin;
	}

	public String getPublicKeyPem() {
		return publicKeyPem;
	}

	public void setPublicKeyPem(String publicKeyPem) {
		this.publicKeyPem = publicKeyPem;
	}

	public String getPrivateKeyPem() {
		return privateKeyPem;
	}

	public void setPrivateKeyPem(String privateKeyPem) {
		this.privateKeyPem = privateKeyPem;
	}

	public String getCodeSecret() {
		return codeSecret;
	}

	public void setCodeSecret(String codeSecret) {
		this.codeSecret = codeSecret;
	}

	public Collection<RequiredCredentialEntity> getRequiredCredentials() {
		return requiredCredentials;
	}

	public void setRequiredCredentials(Collection<RequiredCredentialEntity> requiredCredentials) {
		this.requiredCredentials = requiredCredentials;
	}

	public Collection<ApplicationEntity> getApplications() {
		return applications;
	}

	public void setApplications(Collection<ApplicationEntity> applications) {
		this.applications = applications;
	}

	public Collection<RoleEntity> getRoles() {
		return roles;
	}

	public void setRoles(Collection<RoleEntity> roles) {
		this.roles = roles;
	}

	public void addRole(RoleEntity role) {
		if (roles == null) {
			roles = new ArrayList<RoleEntity>();
		}
		roles.add(role);
	}

	public Map<String, String> getSmtpConfig() {
		return smtpConfig;
	}

	public void setSmtpConfig(Map<String, String> smtpConfig) {
		this.smtpConfig = smtpConfig;
	}

	public Collection<RoleEntity> getDefaultRoles() {
		return defaultRoles;
	}

	public void setDefaultRoles(Collection<RoleEntity> defaultRoles) {
		this.defaultRoles = defaultRoles;
	}

	public String getPasswordPolicy() {
		return passwordPolicy;
	}

	public void setPasswordPolicy(String passwordPolicy) {
		this.passwordPolicy = passwordPolicy;
	}

	public String getLoginTheme() {
		return loginTheme;
	}

	public void setLoginTheme(String theme) {
		this.loginTheme = theme;
	}

	public String getAccountTheme() {
		return accountTheme;
	}

	public void setAccountTheme(String theme) {
		this.accountTheme = theme;
	}

	public String getAdminTheme() {
		return adminTheme;
	}

	public void setAdminTheme(String adminTheme) {
		this.adminTheme = adminTheme;
	}

	public String getEmailTheme() {
		return emailTheme;
	}

	public void setEmailTheme(String emailTheme) {
		this.emailTheme = emailTheme;
	}

	public int getNotBefore() {
		return notBefore;
	}

	public void setNotBefore(int notBefore) {
		this.notBefore = notBefore;
	}

	public boolean isEventsEnabled() {
		return eventsEnabled;
	}

	public void setEventsEnabled(boolean eventsEnabled) {
		this.eventsEnabled = eventsEnabled;
	}

	public long getEventsExpiration() {
		return eventsExpiration;
	}

	public void setEventsExpiration(long eventsExpiration) {
		this.eventsExpiration = eventsExpiration;
	}

	public Set<String> getEventsListeners() {
		return eventsListeners;
	}

	public void setEventsListeners(Set<String> eventsListeners) {
		this.eventsListeners = eventsListeners;
	}

	public ApplicationEntity getMasterAdminApp() {
		return masterAdminApp;
	}

	public void setMasterAdminApp(ApplicationEntity masterAdminApp) {
		this.masterAdminApp = masterAdminApp;
	}

	public List<UserFederationProviderEntity> getUserFederationProviders() {
		return userFederationProviders;
	}

	public void setUserFederationProviders(List<UserFederationProviderEntity> userFederationProviders) {
		this.userFederationProviders = userFederationProviders;
	}

	public Collection<RealmAttributeEntity> getAttributes() {
		return attributes;
	}

	public void setAttributes(Collection<RealmAttributeEntity> attributes) {
		this.attributes = attributes;
	}

	public String getCertificatePem() {
		return certificatePem;
	}

	public void setCertificatePem(String certificatePem) {
		this.certificatePem = certificatePem;
	}

	public List<IdentityProviderEntity> getIdentityProviders() {
		return this.identityProviders;
	}

	public void setIdentityProviders(List<IdentityProviderEntity> identityProviders) {
		this.identityProviders = identityProviders;
	}

	public void addIdentityProvider(IdentityProviderEntity entity) {
		entity.setRealm(this);
		getIdentityProviders().add(entity);
	}

}