package org.eclipse.emf.emfstore.client.ui.views.users;
import org.eclipse.emf.emfstore.server.model.ProjectInfo;
import org.eclipse.emf.emfstore.server.model.accesscontrol.Role;
/**
* instances of this class can be selected in the role selection dialog
*
* @author boehlke
*
*/
public class RoleSelection {
private Role role;
private ProjectInfo projectInfo;
public RoleSelection(Role role, ProjectInfo projectInfo) {
this.role = role;
this.projectInfo = projectInfo;
}
public Role getRole() {
return role;
}
public ProjectInfo getProject() {
return projectInfo;
}
@Override
public int hashCode() {
int roleHash = role == null ? 0 : role.getIdentifier().hashCode();
int projectHash = projectInfo == null ? 0 : projectInfo.getProjectId() == null ? 0 : projectInfo.getProjectId()
.getId().hashCode();
return roleHash + projectHash;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof RoleSelection) {
RoleSelection sel = (RoleSelection) obj;
boolean roleEquals = sel.getRole() == null ? getRole() == null : sel.getRole().getIdentifier()
.equals(getRole() == null ? null : getRole().getIdentifier());
boolean projectEquals = false;
if (sel.getProject() != null && sel.getProject().getProjectId() != null) {
if (getProject() != null && getProject().getProjectId() != null) {
projectEquals = sel.getProject().getProjectId().equals(getProject().getProjectId());
}
} else if (sel.getProject() == null) {
projectEquals = getProject() == null;
} else if (sel.getProject().getProjectId() == null) {
projectEquals = getProject() == null || getProject().getProjectId() == null;
}
return roleEquals && projectEquals;
}
return super.equals(obj);
}
}