import java.util.logging.Level; import java.util.logging.LogManager; import java.util.logging.Logger; enum SecurityRole { ACCOUNTANT; } class UserSecurityProfile { } public enum BookCloseLockLevel { PARTIALLY_CLOSED("xxxxx", new SecurityRole[] {SecurityRole.ACCOUNTANT}, new SecurityRole[] {SecurityRole.ACCOUNTANT}) { public boolean isReadyToLock(final Bar target, final Bar previousOfTarget) { assert (target != null); return true; } }; static private Logger getLogger() { return Logger.global; } BookCloseLockLevel(final String displayName, final SecurityRole[] rolesAllowedToModifyObjects, final SecurityRole[] rolesAllowedToChangeLevel) { this.displayName = displayName; this.rolesAllowedToChangeLevel = rolesAllowedToChangeLevel; this.rolesAllowedToModifyObjects = rolesAllowedToModifyObjects; } public String getDisplayName() { return displayName; } private SecurityRole[] getRolesAllowedToChangeLevel() { return rolesAllowedToChangeLevel; } public boolean isObjectModificationAllowedBy(final UserSecurityProfile user) { return false; } public boolean isLockLevelChangeAllowedBy(final UserSecurityProfile user) { return false; } abstract public boolean isReadyToLock(final Bar target, final Bar previousOfTarget); final private String displayName; final private SecurityRole[] rolesAllowedToModifyObjects; final private SecurityRole[] rolesAllowedToChangeLevel; public static void main(String... args) { BookCloseLockLevel level = PARTIALLY_CLOSED; System.out.println(level); System.out.println(level.name()); System.out.println(level.ordinal()); System.out.println(level.getDisplayName()); } }