private GroupOperationResult SetRetentionPolicyInternal(StoreObjectId itemId, PolicyTag policyTag, bool isArchiveAction) { PropertyDefinition[] propsToReturn = isArchiveAction ? PolicyTagHelper.ArchiveProperties : PolicyTagHelper.RetentionProperties; using (Item item = Item.Bind(this.session, itemId, propsToReturn)) { item.OpenAsReadWrite(); if (isArchiveAction) { if (policyTag == null) { PolicyTagHelper.ClearPolicyTagForArchiveOnItem(item); } else { PolicyTagHelper.SetPolicyTagForArchiveOnItem(policyTag, item); } } else if (policyTag == null) { PolicyTagHelper.ClearPolicyTagForDeleteOnItem(item); } else { PolicyTagHelper.SetPolicyTagForDeleteOnItem(policyTag, item); } item.Save(SaveMode.ResolveConflicts); } return(new GroupOperationResult(OperationResult.Succeeded, new StoreObjectId[] { itemId }, null)); }
public static void SetKeepInPlaceForArchiveOnItem(StoreObject item) { PolicyTagHelper.ClearPolicyTagForArchiveOnItem(item); object valueOrDefault = item.GetValueOrDefault <object>(StoreObjectSchema.RetentionFlags); RetentionAndArchiveFlags retentionAndArchiveFlags; if (valueOrDefault != null && valueOrDefault is int) { retentionAndArchiveFlags = (RetentionAndArchiveFlags)((int)valueOrDefault | 32); } else { retentionAndArchiveFlags = RetentionAndArchiveFlags.KeepInPlace; } item[StoreObjectSchema.RetentionFlags] = (int)retentionAndArchiveFlags; }