public static DataTable GenerateClientPermissionDataSource(object clientPermission)
        {
            AutomatedObjectPicker automatedObjectPicker = new AutomatedObjectPicker("PublicFolderClientPermissionConfigurable");
            DataTable             dataTable             = automatedObjectPicker.ObjectPickerProfile.DataTable.Clone();
            List <object>         list = clientPermission as List <object>;

            if (list != null)
            {
                list.RemoveAll(delegate(object entry)
                {
                    PublicFolderUserId user = (entry as PublicFolderClientPermissionEntry).User;
                    return(user.ActiveDirectoryIdentity == null && !user.IsAnonymous && !user.IsDefault);
                });
                foreach (object obj in list)
                {
                    PublicFolderClientPermissionEntry publicFolderClientPermissionEntry = (PublicFolderClientPermissionEntry)obj;
                    ADObjectId identity = PublicFolderClientPermissionHelper.ConvertUserToAdObjectId(publicFolderClientPermissionEntry.User);
                    string     name     = (publicFolderClientPermissionEntry.User.ActiveDirectoryIdentity != null) ? publicFolderClientPermissionEntry.User.ActiveDirectoryIdentity.Name : publicFolderClientPermissionEntry.User.ToString();
                    PublicFolderClientPermissionHelper.AddEntry(dataTable, identity, name, publicFolderClientPermissionEntry.AccessRights);
                }
                dataTable.DefaultView.Sort = "Identity asc";
                dataTable.AcceptChanges();
            }
            return(dataTable);
        }
        internal static ADObjectId ConvertUserToAdObjectId(PublicFolderUserId id)
        {
            ADObjectId result = id.ActiveDirectoryIdentity;

            if (id.IsDefault)
            {
                result = PublicFolderClientPermissionHelper.DefaultUserId;
            }
            if (id.IsAnonymous)
            {
                result = PublicFolderClientPermissionHelper.AnonymousUserId;
            }
            return(result);
        }