package com.constellio.app.ui.entities; import static java.util.Arrays.asList; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import org.joda.time.LocalDate; import com.constellio.model.entities.security.Role; public class AuthorizationVO implements Serializable { String authId; List<String> users; List<String> groups; List<String> records; List<String> accessRoles; List<String> userRoles; List<String> userRolesTitles; LocalDate startDate; LocalDate endDate; boolean synched; public static AuthorizationVO forUsers(String id) { return new AuthorizationVO( asList(id), new ArrayList<String>(), new ArrayList<String>(), new ArrayList<String>(), new ArrayList<String>(), new ArrayList<String>(), null, null, null, false); } public static AuthorizationVO forGroups(String id) { return new AuthorizationVO( new ArrayList<String>(), asList(id), new ArrayList<String>(), new ArrayList<String>(), new ArrayList<String>(), new ArrayList<String>(), null, null, null, false); } public static AuthorizationVO forContent(String id) { return new AuthorizationVO( new ArrayList<String>(), new ArrayList<String>(), asList(id), new ArrayList<String>(), new ArrayList<String>(), new ArrayList<String>(), null, null, null, false); } public AuthorizationVO(List<String> users, List<String> groups, List<String> records, List<String> accessRoles, List<String> userRoles, List<String> userRolesTitles, String authId, LocalDate startDate, LocalDate endDate, boolean synched) { this.users = users; this.records = records; this.accessRoles = accessRoles; this.userRoles = userRoles; this.userRolesTitles = userRolesTitles; this.authId = authId; this.startDate = startDate; this.endDate = endDate; this.groups = groups; this.synched = synched; } public List<String> getUsers() { return users; } public void setUsers(List<String> users) { this.users = users; } public List<String> getGroups() { return groups; } public void setGroups(List<String> groups) { this.groups = groups; } public List<String> getRecords() { return records; } public void setRecords(List<String> records) { this.records = records; } public String getRecord() { return records.isEmpty() ? null : records.get(0); } public void setRecord(String record) { records = asList(record); } public List<String> getAccessRoles() { return accessRoles; } public void setAccessRoles(List<String> accessRoles) { this.accessRoles = accessRoles; } public List<String> getUserRoles() { return userRoles; } public void setUserRoles(List<String> userRoles) { this.userRoles = userRoles; } public List<String> getUserRolesTitles() { return userRolesTitles; } public void setUserRolesTitles(List<String> userRolesTitles) { this.userRolesTitles = userRolesTitles; } public String getAuthId() { return authId; } public void setAuthId(String authId) { this.authId = authId; } public LocalDate getStartDate() { return startDate; } public LocalDate getEndDate() { return endDate; } public void setStartDate(LocalDate startDate) { this.startDate = startDate; } public void setEndDate(LocalDate endDate) { this.endDate = endDate; } public boolean isSynched() { return synched; } public AuthorizationVO withUsers(String... users) { this.users = asList(users); return this; } public AuthorizationVO withGroups(String... groups) { this.groups = asList(groups); return this; } public AuthorizationVO on(String... records) { this.records = asList(records); return this; } public AuthorizationVO givingReadAccess() { this.accessRoles = asList(Role.READ); return this; } public AuthorizationVO givingReadWriteAccess() { this.accessRoles = asList(Role.READ, Role.WRITE); return this; } public AuthorizationVO givingReadWriteDeleteAccess() { this.accessRoles = asList(Role.READ, Role.WRITE, Role.DELETE); return this; } public AuthorizationVO giving(String... roles) { this.userRoles = asList(roles); return this; } @Override public int hashCode() { return HashCodeBuilder.reflectionHashCode(this); } @Override public boolean equals(Object obj) { return EqualsBuilder.reflectionEquals(this, obj); } @Override public String toString() { return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE); } }