/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.content.category; import java.io.Serializable; import org.apache.commons.lang.builder.HashCodeBuilder; import com.enonic.cms.core.security.group.GroupEntity; public class CategoryAccessEntity implements Serializable { private CategoryAccessKey key; private GroupEntity group; private int readAccess = 0; private int adminBrowseAccess = 0; private int publishAccess = 0; private int createAccess = 0; private int adminAccess = 0; public CategoryAccessKey getKey() { return key; } public GroupEntity getGroup() { return group; } public void setGroup( GroupEntity group ) { this.group = group; } public boolean isReadAccess() { return readAccess != 0; } public boolean isCreateAccess() { return createAccess != 0; } public boolean isPublishAccess() { return publishAccess != 0; } public boolean isAdminAccess() { return adminAccess != 0; } public boolean isAdminBrowseAccess() { return adminBrowseAccess != 0; } public void setKey( CategoryAccessKey key ) { this.key = key; } public void setReadAccess( boolean readAccess ) { this.readAccess = readAccess ? 1 : 0; } public void setCreateAccess( boolean createAccess ) { this.createAccess = createAccess ? 1 : 0; } public void setPublishAccess( boolean publishAccess ) { this.publishAccess = publishAccess ? 1 : 0; } public void setAdminAccess( boolean adminAccess ) { this.adminAccess = adminAccess ? 1 : 0; } public void setAdminBrowseAccess( boolean adminReadAccess ) { this.adminBrowseAccess = adminReadAccess ? 1 : 0; } public void setAll( boolean value ) { this.readAccess = value ? 1 : 0; this.adminBrowseAccess = value ? 1 : 0; this.createAccess = value ? 1 : 0; this.publishAccess = value ? 1 : 0; this.adminAccess = value ? 1 : 0; } public boolean equals( Object o ) { if ( this == o ) { return true; } if ( !( o instanceof CategoryAccessEntity ) ) { return false; } CategoryAccessEntity that = (CategoryAccessEntity) o; return key.equals( that.getKey() ); } public int hashCode() { return new HashCodeBuilder( 741, 173 ).append( key ).toHashCode(); } public boolean givesRead() { return isReadAccess() || isAdminAccess(); } public boolean givesAdminBrowse() { return isAdminBrowseAccess() || isAdminAccess(); } public boolean givesCreate() { return isCreateAccess() || isAdminAccess(); } public boolean givesApprove() { return isPublishAccess() || isAdminAccess(); } public boolean givesAdministrate() { return isAdminAccess(); } public boolean givesContentReadAccess() { return isReadAccess() || isAdminBrowseAccess() || givesApprove(); } public boolean givesContentUpdateAccess() { return givesApprove(); } public boolean givesContentDeleteAccess() { return givesApprove(); } public void setAccess( CategoryAccessControl bluePrint ) { this.readAccess = bluePrint.isReadAccess() ? 1 : 0; this.adminBrowseAccess = bluePrint.isAdminBrowseAccess() ? 1 : 0; this.publishAccess = bluePrint.isPublishAccess() ? 1 : 0; this.createAccess = bluePrint.isCreateAccess() ? 1 : 0; this.adminAccess = bluePrint.isAdminAccess() ? 1 : 0; } public static CategoryAccessEntity create( CategoryKey category, GroupEntity group, CategoryAccessControl car ) { final CategoryAccessEntity ca = new CategoryAccessEntity(); ca.setKey( new CategoryAccessKey( category, group.getGroupKey() ) ); ca.setGroup( group ); ca.setReadAccess( car.isReadAccess() ); ca.setAdminBrowseAccess( car.isAdminBrowseAccess() ); ca.setPublishAccess( car.isPublishAccess() ); ca.setCreateAccess( car.isCreateAccess() ); ca.setAdminAccess( car.isAdminAccess() ); return ca; } public CategoryAccessControl toAccessRights() { CategoryAccessControl car = new CategoryAccessControl(); car.setGroupKey( this.group.getGroupKey() ); car.setReadAccess( this.isReadAccess() ); car.setAdminBrowseAccess( this.isAdminBrowseAccess() ); car.setPublishAccess( this.isPublishAccess() ); car.setCreateAccess( this.isCreateAccess() ); car.setAdminAccess( this.isAdminAccess() ); return car; } }