/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.bbg;
import org.apache.shiro.authz.Permission;
import com.opengamma.util.ArgumentChecker;
import com.opengamma.util.auth.AuthUtils;
/**
* Permissions used to access Bloomberg.
*/
public final class BloombergPermissions {
/**
* The EID permission string prefix.
* The suffix is a Bloomberg EID authorization identifier.
*/
public static final String BLOOMBERG_PREFIX = "Data:Bloomberg:";
/**
* The EID permission string prefix.
* The suffix is a Bloomberg EID authorization identifier.
*/
public static final String EID_PREFIX = BLOOMBERG_PREFIX + "EID:";
/**
* Permission granted to users that allows checking against Bloomberg.
*/
public static final Permission PERMISSION_BLOOMBERG =
AuthUtils.getPermissionResolver().resolvePermission(BLOOMBERG_PREFIX + "view");
/**
* Restricted constructor.
*/
private BloombergPermissions() {
}
//-------------------------------------------------------------------------
/**
* Creates a permission for an EID.
*
* @param eid the Bloomberg EID code
* @return the permission, not null
*/
public static Permission createEidPermission(int eid) {
String perm = createEidPermissionString(eid);
return AuthUtils.getPermissionResolver().resolvePermission(perm);
}
/**
* Creates a permission string for an EID.
*
* @param eid the Bloomberg EID code
* @return the permission string, not null
*/
public static String createEidPermissionString(int eid) {
return EID_PREFIX + eid;
}
//-------------------------------------------------------------------------
/**
* Checks if a permission string represents an EID.
*
* @param permissionString the permission string, null returns false
* @return true if the permission string is a Bloomberg EID permission
*/
public static boolean isEid(String permissionString) {
return permissionString != null && permissionString.startsWith(EID_PREFIX);
}
/**
* Extracts the EID from the permission string.
*
* @param permissionString the permission string, not null
* @return the Bloomberg EID code
* @throws IllegalArgumentException if the permission string is not an EID permission
*/
public static int extractEid(String permissionString) {
ArgumentChecker.notNull(permissionString, "permissionString");
if (isEid(permissionString) == false) {
throw new IllegalArgumentException("Permission string does not represent an EID: " + permissionString);
}
String eidStr = permissionString.substring(EID_PREFIX.length());
try {
return Integer.parseInt(eidStr);
} catch (RuntimeException ex) {
throw new IllegalArgumentException("Permission string does not represent a valid EID: " + permissionString);
}
}
}