package org.ovirt.engine.core.common.businessentities; import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.HashSet; import java.util.Objects; import javax.validation.constraints.Size; import org.ovirt.engine.core.common.businessentities.aaa.DbUser; import org.ovirt.engine.core.compat.Guid; public class EngineSession implements IVdcQueryable { private static final long serialVersionUID = 6964615561527013329L; private long id; private String engineSessionId; private Guid userId; private String sourceIp; @Size(min = 1, max = BusinessEntitiesDefinitions.USER_LOGIN_NAME_SIZE) private String userName; @Size(min = 1, max = BusinessEntitiesDefinitions.USER_DOMAIN_SIZE) private String authzName; private Collection<Guid> roleIds; private Collection<Guid> groupIds; private Date startTime; private Date lastActiveTime; public EngineSession() {} public EngineSession(DbUser dbUser, String engineSessionId, String sourceIp) { setUserId(dbUser.getId()); setUserName(dbUser.getLoginName()); setAuthzName(dbUser.getDomain()); setGroupIds(dbUser.getGroupIds()); setEngineSessionId(engineSessionId); setSourceIp(sourceIp); } @Override public Object getQueryableId() { return getId(); } /** * Session id assigned by engine for the user's session */ public String getEngineSessionId() { return engineSessionId; } public void setEngineSessionId(String engineSessionId) { this.engineSessionId = engineSessionId; } /** * Identifier assigned by the engine to this user for internal use only. */ public Guid getUserId() { return userId; } public void setUserId(Guid userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public Collection<Guid> getRoleIds() { if (roleIds == null) { roleIds = Collections.emptySet(); } return new HashSet<>(roleIds); } public void setRoleIds(Collection<Guid> roleIds) { this.roleIds = roleIds; } /** * Comma delimited list of group identifiers. */ public Collection<Guid> getGroupIds() { if (groupIds == null) { groupIds = Collections.emptyList(); } return new HashSet<>(groupIds); } public void setGroupIds(Collection<Guid> groupIds) { this.groupIds = groupIds; } @Override public int hashCode() { return Objects.hash( engineSessionId, userId ); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof EngineSession)) { return false; } EngineSession other = (EngineSession) obj; return Objects.equals(engineSessionId, other.engineSessionId) && Objects.equals(userId, other.userId); } public long getId() { return id; } public void setId(long id) { this.id = id; } public String getSourceIp() { return sourceIp; } public void setSourceIp(String sourceIp) { this.sourceIp = sourceIp; } public String getAuthzName() { return authzName; } public void setAuthzName(String authzName) { this.authzName = authzName; } public Date getStartTime() { return startTime; } public void setStartTime(Date startTime) { this.startTime = startTime; } public Date getLastActiveTime() { return lastActiveTime; } public void setLastActiveTime(Date lastActiveTime) { this.lastActiveTime = lastActiveTime; } }