Lists all groups who have access to a particular Essbase Server, application or database. Similar to EssListGroups, but the group list structure can include user directories and unique identity attributes.
Syntax
ESS_FUNC_M EssListGroupsInfoEx (hCtx, AppName, DbName, pCount, ppGroupList);
Parameter | Data Type | Description |
---|---|---|
hCtx | ESS_HCTX_T | API context handle (input). |
AppName | ESS_STR_T | Application name (input). If NULL, lists all groups. |
DbName | ESS_STR_T | Database name (input). If NULL, lists groups for all databases within the application. |
pCount | ESS_PUSHORT_T | Address of variable to receive count of groups (output). |
ppGroupList | ESS_PPGROUPINFOID_T | Address of pointer to receive an allocated array of group info structures (output). The group list structure can include user directories and unique identity attributes. |
Notes
If both AppName and DbName are not NULL, only groups with access to the specified application and database will be listed. If DbName is NULL, only groups with access to the specified application will be listed. If AppName is NULL, all groups on the logged in server will be listed.
The memory allocated for ppGroupList should be freed using EssFree().
Return Value
If successful, returns a count of the number of groups in pCount, and list of groups with access to the specified application and database in ppGroupList.
Access
This function requires no special privileges.
Example
void DisplayGroupsInfoEx(ESS_GROUPINFOID_T groupInfo) { ESS_STS_T sts = ESS_STS_NOERR; ESS_BOOL_T isDefined = ESS_TRUE; printf("\tUser Name: %s\n", groupInfo.Name); printf("\tProvider Name: %s\n", groupInfo.ProviderName); printf("\tIdentity: %s\n", groupInfo.connparam); printf("\tDescription: %s\n", groupInfo.Description); printf("\tEMail Identification: %s\n", groupInfo.EMailID); if (groupInfo.LockedOut) printf("\tLocked out: Yes\n"); else printf("\tLocked out: No\n"); if (groupInfo.PwdChgNow) printf("\tChange the password now: Yes\n"); else printf("\tChange the password now: No\n"); printf("\tPassword: %s\n", groupInfo.Password); printf("\tApplication: %s\n", groupInfo.AppName); printf("\tDatabase: %s\n", groupInfo.DbName); if (groupInfo.Login) printf("\tLogged in: Yes\n"); else printf("\tLogged in: No\n"); switch(groupInfo.Access) { case ESS_ACCESS_ADMIN: printf("\tAccess: %d - ESS_ACCESS_ADMIN\n", groupInfo.Access); break; case ESS_ACCESS_APPALL: printf("\tAccess: %d - ESS_ACCESS_APPALL\n", groupInfo.Access); break; case ESS_ACCESS_DBALL: printf("\tAccess: %d - ESS_ACCESS_DBALL\n", groupInfo.Access); break; case ESS_ACCESS_APPCREATE: printf("\tAccess: %d - ESS_ACCESS_DBALL\n", groupInfo.Access); break; case ESS_ACCESS_APPMANAGE: printf("\tAccess: %d - ESS_ACCESS_APPMANAGE\n", groupInfo.Access); break; case ESS_ACCESS_DBCREATE: printf("\tAccess: %d - ESS_ACCESS_DBCREATE\n", groupInfo.Access); break; case ESS_ACCESS_DBMANAGE: printf("\tAccess: %d - ESS_ACCESS_DBMANAGE\n", groupInfo.Access); break; case ESS_ACCESS_CALC: printf("\tAccess: %d - ESS_ACCESS_CALC\n", groupInfo.Access); break; case ESS_ACCESS_WRITE: printf("\tAccess: %d - ESS_ACCESS_WRITE\n", groupInfo.Access); break; case ESS_ACCESS_READ: printf("\tAccess: %d - ESS_ACCESS_READ\n", groupInfo.Access); break; case ESS_PRIV_USERCREATE: printf("\tAccess: %d - ESS_PRIV_USERCREATE\n", groupInfo.Access); break; case ESS_PRIV_APPCREATE: printf("\tAccess: %d - ESS_PRIV_APPCREATE\n", groupInfo.Access); break; case ESS_PRIV_APPMANAGE: printf("\tAccess: %d - ESS_PRIV_APPMANAGE\n", groupInfo.Access); break; case ESS_PRIV_APPLOAD: printf("\tAccess: %d - ESS_PRIV_APPLOAD\n", groupInfo.Access); break; case ESS_PRIV_DBCREATE: printf("\tAccess: %d - ESS_PRIV_DBCREATE\n", groupInfo.Access); break; case ESS_PRIV_DBMANAGE: printf("\tAccess: %d - ESS_PRIV_DBMANAGE\n", groupInfo.Access); break; case ESS_PRIV_DBLOAD: printf("\tAccess: %d - ESS_PRIV_DBLOAD\n", groupInfo.Access); break; case ESS_PRIV_CALC: printf("\tAccess: %d - ESS_ACCESS_DBALL\n", groupInfo.Access); break; case ESS_PRIV_WRITE: printf("\tAccess: %d - ESS_PRIV_WRITE\n", groupInfo.Access); break; case ESS_PRIV_READ: printf("\tAccess: %d - ESS_PRIV_READ\n", groupInfo.Access); break; case ESS_PRIV_NONE: printf("\tAccess: %d - ESS_PRIV_NONE\n", groupInfo.Access); break; default: printf("\tAccess: Unknown\n"); } switch(groupInfo.MaxAccess) { case ESS_ACCESS_ADMIN: printf("\tMax Access: %d - ESS_ACCESS_ADMIN\n", groupInfo.MaxAccess); break; case ESS_ACCESS_APPALL: printf("\tMax Access: %d - ESS_ACCESS_APPALL\n", groupInfo.MaxAccess); break; case ESS_ACCESS_DBALL: printf("\tMax Access: %d - ESS_ACCESS_DBALL\n", groupInfo.MaxAccess); break; case ESS_ACCESS_APPCREATE: printf("\tMax Access: %d - ESS_ACCESS_DBALL\n", groupInfo.MaxAccess); break; case ESS_ACCESS_APPMANAGE: printf("\tMax Access: %d - ESS_ACCESS_APPMANAGE\n", groupInfo.MaxAccess); break; case ESS_ACCESS_DBCREATE: printf("\tMax Access: %d - ESS_ACCESS_DBCREATE\n", groupInfo.MaxAccess); break; case ESS_ACCESS_DBMANAGE: printf("\tMax Access: %d - ESS_ACCESS_DBMANAGE\n", groupInfo.MaxAccess); break; case ESS_ACCESS_CALC: printf("\tMax Access: %d - ESS_ACCESS_CALC\n", groupInfo.MaxAccess); break; case ESS_ACCESS_WRITE: printf("\tMax Access: %d - ESS_ACCESS_WRITE\n", groupInfo.MaxAccess); break; case ESS_ACCESS_READ: printf("\tMax Access: %d - ESS_ACCESS_READ\n", groupInfo.MaxAccess); break; case ESS_PRIV_USERCREATE: printf("\tMax Access: %d - ESS_PRIV_USERCREATE\n", groupInfo.MaxAccess); break; case ESS_PRIV_APPCREATE: printf("\tMax Access: %d - ESS_PRIV_APPCREATE\n", groupInfo.MaxAccess); break; case ESS_PRIV_APPMANAGE: printf("\tMax Access: %d - ESS_PRIV_APPMANAGE\n", groupInfo.MaxAccess); break; case ESS_PRIV_APPLOAD: printf("\tMax Access: %d - ESS_PRIV_APPLOAD\n", groupInfo.MaxAccess); break; case ESS_PRIV_DBCREATE: printf("\tMax Access: %d - ESS_PRIV_DBCREATE\n", groupInfo.MaxAccess); break; case ESS_PRIV_DBMANAGE: printf("\tMax Access: %d - ESS_PRIV_DBMANAGE\n", groupInfo.MaxAccess); break; case ESS_PRIV_DBLOAD: printf("\tMax Access: %d - ESS_PRIV_DBLOAD\n", groupInfo.MaxAccess); break; case ESS_PRIV_CALC: printf("\tMax Access: %d - ESS_ACCESS_DBALL\n", groupInfo.MaxAccess); break; case ESS_PRIV_WRITE: printf("\tMax Access: %d - ESS_PRIV_WRITE\n", groupInfo.MaxAccess); break; case ESS_PRIV_READ: printf("\tMax Access: %d - ESS_PRIV_READ\n", groupInfo.MaxAccess); break; case ESS_PRIV_NONE: printf("\tMax Access: %d - ESS_PRIV_NONE\n", groupInfo.MaxAccess); break; default: printf("\tMax Access: Unknown\n"); } printf("\tPassword Expiration in Dates: %d\n",groupInfo.Expiration); printf("\tFailed Login Attempts Since Then: %d\n", groupInfo.FailCount); printf("\tLogin ID: %d\n", groupInfo.LoginId); printf("\tProtocol: %s\n", groupInfo.protocol); printf("\tConnection Parameter: %s\n", groupInfo.connparam); printf( "\n"); } ESS_FUNC_M ESS_ListGroupsInfoEx (ESS_HCTX_T hCtx, ESS_HINST_T hInst) { ESS_STS_T sts = ESS_STS_NOERR; ESS_USHORT_T count, i; ESS_PGROUPINFOID_T pGroupList = ESS_NULL; sts = EssListGroupsInfoEx(hCtx, AppName, DbName, &count, &pGroupList); printf("EssListGroupsInfoEx sts: %ld\n", sts); if(!sts) { printf("\nNumber of group(s): %d\n", count); for(i = 0; i < count; i++) { DisplayGroupsInfoEx(pGroupList[i]); } } return (sts); }
See Also