package com.taskadapter.redmineapi.bean;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
/**
* User or group membership.
*/
public class Membership implements Identifiable {
/**
* database ID.
*/
private Integer id;
private Project project;
/**
* User. Not set for "group" membership.
*/
private User user;
private Group group;
private final Collection<Role> roles = new HashSet<Role>();
public Membership() {
}
/**
* Use MembershipFactory to create instances of this class.
*
* @param id database ID.
*
* @see com.taskadapter.redmineapi.bean.MembershipFactory
*/
public Membership(Integer id) {
this.id = id;
}
public void addRoles(Collection<Role> roles) {
this.roles.addAll(roles);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Membership that = (Membership) o;
if (id != null ? !id.equals(that.id) : that.id != null) return false;
return true;
}
public Group getGroup() {
return group;
}
@Override
public Integer getId() {
return id;
}
public Project getProject() {
return project;
}
public Collection<Role> getRoles() {
return Collections.unmodifiableCollection(roles);
}
public User getUser() {
return user;
}
@Override
public int hashCode() {
return id != null ? id.hashCode() : 0;
}
public void setGroup(Group group) {
this.group = group;
}
@Override
public void setId(Integer id) {
this.id = id;
}
public void setProject(Project project) {
this.project = project;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String toString() {
return "Membership [id=" + id + ", project=" + project + ", user="
+ user + ", roles=" + roles + "]";
}
}