public ServiceProcess Execute(string orgItemId, bool countFolders, bool countComponents, bool countSchemas, bool countComponentTemplates, bool countPageTemplates, bool countTemplateBuildingBlocks, bool countStructureGroups, bool countPages, bool countCategories, bool countKeywords) { if (string.IsNullOrEmpty(orgItemId)) { throw new ArgumentNullException("orgItemId"); } CountItemsParameters arguments = new CountItemsParameters { OrgItemUri = orgItemId, CountFolders = countFolders, CountComponents = countComponents, CountSchemas = countSchemas, CountComponentTemplates = countComponentTemplates, CountPageTemplates = countPageTemplates, CountTemplateBuildingBlocks = countTemplateBuildingBlocks, CountStructureGroups = countStructureGroups, CountPages = countPages, CountCategories = countCategories, CountKeywords = countKeywords }; return ExecuteAsync(arguments); }
public ServiceProcess Execute(string orgItemId, bool countFolders, bool countComponents, bool countSchemas, bool countComponentTemplates, bool countPageTemplates, bool countTemplateBuildingBlocks, bool countStructureGroups, bool countPages, bool countCategories, bool countKeywords) { if (string.IsNullOrEmpty(orgItemId)) { throw new ArgumentNullException("orgItemId"); } CountItemsParameters arguments = new CountItemsParameters { OrgItemUri = orgItemId, CountFolders = countFolders, CountComponents = countComponents, CountSchemas = countSchemas, CountComponentTemplates = countComponentTemplates, CountPageTemplates = countPageTemplates, CountTemplateBuildingBlocks = countTemplateBuildingBlocks, CountStructureGroups = countStructureGroups, CountPages = countPages, CountCategories = countCategories, CountKeywords = countKeywords }; return(ExecuteAsync(arguments)); }
/// <summary> /// Contains actual processing logic: instantiates a CoreService client, queries for item list, /// then sets the actual response counts data object, while updating the progress all along. /// </summary> /// <param name="process">the current ServiceProcess</param> /// <param name="arguments">CountItemsParameters arguments</param> public override void Process(ServiceProcess process, object arguments) { CountItemsParameters parameters = (CountItemsParameters)arguments; process.SetCompletePercentage(25); process.SetStatus("Initializing"); using (var coreService = Client.GetCoreService()) { ItemsFilterData filter = GetFilter(parameters); process.SetCompletePercentage(50); process.SetStatus("Retrieving count data"); XElement listXml = coreService.GetListXml(parameters.OrgItemUri, filter); process.SetCompletePercentage(75); process.SetStatus("Extracting item counts"); ProcessCounts(listXml); process.Complete("Done"); } }
/// <summary> /// Create an ItemsFilter for the given Organizational Item type by either instantiating a /// RepositoryItemsFilterData (for Publication) or OrganizationalItemItemsFilterData (for Folder or SG). /// Populates the ItemTypes property with only the types that were requested to improve performance. /// </summary> private static ItemsFilterData GetFilter(CountItemsParameters parameters) { ItemsFilterData filter; if (parameters.OrgItemUri.EndsWith("-1")) // is Publication { filter = new RepositoryItemsFilterData(); } else // is Folder or Structure Group { filter = new OrganizationalItemItemsFilterData(); } filter.Recursive = true; List<ItemType> itemTypesList = new List<ItemType>(); if (parameters.CountFolders) { itemTypesList.Add(ItemType.Folder); } if (parameters.CountComponents) { itemTypesList.Add(ItemType.Component); } if (parameters.CountSchemas) { itemTypesList.Add(ItemType.Schema); } if (parameters.CountComponentTemplates) { itemTypesList.Add(ItemType.ComponentTemplate); } if (parameters.CountPageTemplates) { itemTypesList.Add(ItemType.PageTemplate); } if (parameters.CountTemplateBuildingBlocks) { itemTypesList.Add(ItemType.TemplateBuildingBlock); } if (parameters.CountStructureGroups) { itemTypesList.Add(ItemType.StructureGroup); } if (parameters.CountPages) { itemTypesList.Add(ItemType.Page); } if (parameters.CountCategories) { itemTypesList.Add(ItemType.Category); } if (parameters.CountKeywords) { itemTypesList.Add(ItemType.Keyword); } filter.ItemTypes = itemTypesList.ToArray(); return filter; }
/// <summary> /// Create an ItemsFilter for the given Organizational Item type by either instantiating a /// RepositoryItemsFilterData (for Publication) or OrganizationalItemItemsFilterData (for Folder or SG). /// Populates the ItemTypes property with only the types that were requested to improve performance. /// </summary> private static ItemsFilterData GetFilter(CountItemsParameters parameters) { ItemsFilterData filter; if (parameters.OrgItemUri.EndsWith("-1")) // is Publication { filter = new RepositoryItemsFilterData(); } else // is Folder or Structure Group { filter = new OrganizationalItemItemsFilterData(); } filter.Recursive = true; List <ItemType> itemTypesList = new List <ItemType>(); if (parameters.CountFolders) { itemTypesList.Add(ItemType.Folder); } if (parameters.CountComponents) { itemTypesList.Add(ItemType.Component); } if (parameters.CountSchemas) { itemTypesList.Add(ItemType.Schema); } if (parameters.CountComponentTemplates) { itemTypesList.Add(ItemType.ComponentTemplate); } if (parameters.CountPageTemplates) { itemTypesList.Add(ItemType.PageTemplate); } if (parameters.CountTemplateBuildingBlocks) { itemTypesList.Add(ItemType.TemplateBuildingBlock); } if (parameters.CountStructureGroups) { itemTypesList.Add(ItemType.StructureGroup); } if (parameters.CountPages) { itemTypesList.Add(ItemType.Page); } if (parameters.CountCategories) { itemTypesList.Add(ItemType.Category); } if (parameters.CountKeywords) { itemTypesList.Add(ItemType.Keyword); } filter.ItemTypes = itemTypesList.ToArray(); return(filter); }