public void VisitSelectedPartitions(ContextPartitionSelector contextPartitionSelector, ContextPartitionVisitor visitor) { int nestingLevel = _factory.FactoryContext.NestingLevel; if (contextPartitionSelector is ContextPartitionSelectorHash) { var hash = (ContextPartitionSelectorHash)contextPartitionSelector; if (hash.Hashes == null || hash.Hashes.IsEmpty()) { return; } foreach (int hashCode in hash.Hashes) { var handle = _partitionKeys.Get(hashCode); if (handle != null) { visitor.Visit(nestingLevel, _pathId, _factory.Binding, hashCode, this, handle); } } return; } if (contextPartitionSelector is ContextPartitionSelectorFiltered) { var filter = (ContextPartitionSelectorFiltered)contextPartitionSelector; var identifierHash = new ContextPartitionIdentifierHash(); foreach (var entry in _partitionKeys) { identifierHash.Hash = entry.Key; identifierHash.ContextPartitionId = entry.Value.ContextPartitionOrPathId; if (filter.Filter(identifierHash)) { visitor.Visit(nestingLevel, _pathId, _factory.Binding, entry.Key, this, entry.Value); } } return; } if (contextPartitionSelector is ContextPartitionSelectorAll) { foreach (var entry in _partitionKeys) { visitor.Visit(nestingLevel, _pathId, _factory.Binding, entry.Key, this, entry.Value); } return; } if (contextPartitionSelector is ContextPartitionSelectorById) { var byId = (ContextPartitionSelectorById)contextPartitionSelector; foreach (var entry in _partitionKeys) { int cpid = entry.Value.ContextPartitionOrPathId; if (byId.ContextPartitionIds.Contains(cpid)) { visitor.Visit(nestingLevel, _pathId, _factory.Binding, entry.Key, this, entry.Value); } } return; } throw ContextControllerSelectorUtil.GetInvalidSelector(new Type[] { typeof(ContextPartitionSelectorHash) }, contextPartitionSelector); }
public void VisitSelectedPartitions(ContextPartitionSelector contextPartitionSelector, ContextPartitionVisitor visitor) { var nestingLevel = _factory.FactoryContext.NestingLevel; if (contextPartitionSelector is ContextPartitionSelectorFiltered filtered) { var identifier = new ContextPartitionIdentifierPartitioned(); foreach (var entry in _partitionKeys) { identifier.ContextPartitionId = entry.Value.ContextPartitionOrPathId; var identifierOA = GetKeyObjectsAccountForMultikey(entry.Key); identifier.Keys = identifierOA; if (filtered.Filter(identifier)) { visitor.Visit(nestingLevel, _pathId, _factory.Binding, identifierOA, this, entry.Value); } } return; } else if (contextPartitionSelector is ContextPartitionSelectorSegmented partitioned) { if (partitioned.PartitionKeys?.IsEmpty() != false) { return; } foreach (var keyObjects in partitioned.PartitionKeys) { var key = GetKeyObjectForLookup(keyObjects); var instanceHandle = _partitionKeys.Get(key); if (instanceHandle != null) { visitor.Visit(nestingLevel, _pathId, _factory.Binding, keyObjects, this, instanceHandle); } } return; } else if (contextPartitionSelector is ContextPartitionSelectorById filteredById) { foreach (var entry in _partitionKeys) { if (filteredById.ContextPartitionIds.Contains(entry.Value.ContextPartitionOrPathId)) { visitor.Visit(nestingLevel, _pathId, _factory.Binding, GetKeyObjectsAccountForMultikey(entry.Key), this, entry.Value); } } return; } else if (contextPartitionSelector is ContextPartitionSelectorAll) { foreach (var entry in _partitionKeys) { visitor.Visit(nestingLevel, _pathId, _factory.Binding, GetKeyObjectsAccountForMultikey(entry.Key), this, entry.Value); } return; } throw ContextControllerSelectorUtil.GetInvalidSelector(new Type[] { typeof(ContextPartitionSelectorSegmented) }, contextPartitionSelector); }
public void VisitSelectedPartitions(ContextPartitionSelector contextPartitionSelector, ContextPartitionVisitor visitor) { var nestingLevel = _factory.FactoryContext.NestingLevel; if (contextPartitionSelector is ContextPartitionSelectorFiltered) { var filter = (ContextPartitionSelectorFiltered)contextPartitionSelector; var identifier = new ContextPartitionIdentifierInitiatedTerminated(); foreach (var entry in EndConditions) { identifier.EndTime = entry.Value.EndTime; identifier.StartTime = entry.Value.StartTime; identifier.Properties = entry.Value.StartProperties; identifier.ContextPartitionId = entry.Value.InstanceHandle.ContextPartitionOrPathId; if (filter.Filter(identifier)) { var state = new ContextControllerInitTermState(_factory.FactoryContext.ServicesContext.SchedulingService.Time, entry.Value.StartProperties); visitor.Visit(nestingLevel, _pathId, _factory.Binding, state, this, entry.Value.InstanceHandle); } } return; } if (contextPartitionSelector is ContextPartitionSelectorById) { var filter = (ContextPartitionSelectorById)contextPartitionSelector; foreach (var entry in EndConditions) { if (filter.ContextPartitionIds.Contains(entry.Value.InstanceHandle.ContextPartitionOrPathId)) { var state = new ContextControllerInitTermState(_factory.FactoryContext.ServicesContext.SchedulingService.Time, entry.Value.StartProperties); visitor.Visit(nestingLevel, _pathId, _factory.Binding, state, this, entry.Value.InstanceHandle); } } return; } if (contextPartitionSelector is ContextPartitionSelectorAll) { foreach (var entry in EndConditions) { var state = new ContextControllerInitTermState(_factory.FactoryContext.ServicesContext.SchedulingService.Time, entry.Value.StartProperties); visitor.Visit(nestingLevel, _pathId, _factory.Binding, state, this, entry.Value.InstanceHandle); } return; } throw ContextControllerSelectorUtil.GetInvalidSelector(new Type[0], contextPartitionSelector); }
public void VisitSelectedPartitions( ContextPartitionSelector contextPartitionSelector, ContextPartitionVisitor visitor) { var nestingLevel = Factory.FactoryContext.NestingLevel; if (contextPartitionSelector is ContextPartitionSelectorFiltered) { var filter = (ContextPartitionSelectorFiltered)contextPartitionSelector; var identifier = new ContextPartitionIdentifierCategory(); foreach (var entry in _handleCategories) { identifier.ContextPartitionId = entry.Value.ContextPartitionOrPathId; var categoryName = _factory.CategorySpec.Items[entry.Key].Name; identifier.Label = categoryName; if (filter.Filter(identifier)) { visitor.Visit(nestingLevel, PathId, _factory.Binding, entry.Key, this, entry.Value); } } return; } if (contextPartitionSelector is ContextPartitionSelectorCategory) { var category = (ContextPartitionSelectorCategory)contextPartitionSelector; if (category.Labels == null || category.Labels.IsEmpty()) { return; } foreach (var entry in _handleCategories) { String categoryName = _factory.CategorySpec.Items[entry.Key].Name; if (category.Labels.Contains(categoryName)) { visitor.Visit(nestingLevel, PathId, _factory.Binding, entry.Key, this, entry.Value); } } return; } if (contextPartitionSelector is ContextPartitionSelectorById) { var byId = (ContextPartitionSelectorById)contextPartitionSelector; foreach (var entry in _handleCategories) { var cpid = entry.Value.ContextPartitionOrPathId; if (byId.ContextPartitionIds.Contains(cpid)) { visitor.Visit(nestingLevel, PathId, _factory.Binding, entry.Key, this, entry.Value); } } return; } if (contextPartitionSelector is ContextPartitionSelectorAll) { foreach (var entry in _handleCategories) { var categoryName = _factory.CategorySpec.Items[entry.Key].Name; visitor.Visit(nestingLevel, PathId, _factory.Binding, entry.Key, this, entry.Value); } return; } throw ContextControllerSelectorUtil.GetInvalidSelector( new Type[] { typeof(ContextPartitionSelectorCategory) }, contextPartitionSelector); }