package net.sf.gazpachoquest.domain.permission; import javax.persistence.Entity; import net.sf.gazpachoquest.domain.support.AbstractPermission; import net.sf.gazpachoquest.domain.user.Directory; import net.sf.gazpachoquest.domain.user.Role; import net.sf.gazpachoquest.domain.user.User; import net.sf.gazpachoquest.types.Perm; @Entity public class DirectoryPermission extends AbstractPermission<Directory> { private static final long serialVersionUID = 8330893603469347818L; public DirectoryPermission() { super(); } public DirectoryPermission(Integer id, User user, Role role, Integer mask, Directory target) { super(id, user, role, mask, target); } public static Builder with() { return new Builder(); } /** * @hidden */ public static class Builder { private Integer id; private User user; private Role role; private int mask; private Directory target; public Builder id(Integer id) { this.id = id; return this; } public Builder user(User user) { this.user = user; return this; } public Builder role(Role role) { this.role = role; return this; } public Builder mask(int mask) { this.mask = mask; return this; } public Builder target(Directory target) { this.target = target; return this; } public Builder addPerm(Perm perm) { if ((mask & perm.getMask()) != perm.getMask()) { mask += perm.getMask(); } return this; } public DirectoryPermission build() { return new DirectoryPermission(id, user, role, mask, target); } } }