IDataConsumerNeeds IDataConsumer.GetConsumerNeeds() { if (_dataConsumer == null) { return(null); } return(_dataConsumer.GetConsumerNeeds()); }
/// <summary> /// Adds supplies and suppliers that a consumer depends on /// </summary> private void AddConsumerSupplies(IDataConsumer consumer) { var needs = consumer.GetConsumerNeeds(); if (needs == null) { return; } var dataSupplyDependencies = needs.DataSupplyDependencies; var dataSupplierDependencies = needs.DataSupplierDependencies; #if DETAILED_TRACE Trace.WriteLine("Data context builder #" + Id + " adding consumer supplies for " + consumer); if (dataSupplyDependencies != null && dataSupplyDependencies.Count > 0) { Trace.WriteLine(" consumer needs data supplies:"); foreach (var supply in dataSupplyDependencies) { Trace.WriteLine(" " + supply); } } if (dataSupplierDependencies != null && dataSupplierDependencies.Count > 0) { Trace.WriteLine(" consumer needs suppliers:"); foreach (var supplierDependency in dataSupplierDependencies) { Trace.WriteLine(" " + supplierDependency); } } #endif if (dataSupplyDependencies != null) { foreach (var supply in dataSupplyDependencies) { AddSupply(supply); } } if (dataSupplierDependencies != null) { foreach (var dataSupplier in dataSupplierDependencies) { AddSuppliedDependency(new SuppliedDependency(dataSupplier)); } } }
private void AddConsumerNeeds(IDataConsumer otherDataConsumer) { var thisDataConsumer = _template as IDataConsumer; if (otherDataConsumer == null || thisDataConsumer == null) { return; } var needs = otherDataConsumer.GetConsumerNeeds(); if (needs == null) { return; } if (needs.DataDependencies != null) { foreach (var dependency in needs.DataDependencies) { thisDataConsumer.HasDependency(dependency.DataType, dependency.ScopeName); } } if (needs.DataSupplyDependencies != null) { foreach (var dataSupply in needs.DataSupplyDependencies) { thisDataConsumer.HasDependency(dataSupply); } } if (needs.DataSupplierDependencies != null) { foreach (var dataSupplier in needs.DataSupplierDependencies) { thisDataConsumer.HasDependency(dataSupplier.Item1, dataSupplier.Item2); } } }
/// <summary> /// Resolves all of the data needs of a data consumer and retruns a list of the data /// supplies that it depends on /// </summary> private List <IDataSupply> ResolveConsumerNeeds(IDataConsumer consumer) { if (consumer == null) { return(null); } var needs = consumer.GetConsumerNeeds(); if (needs == null) { return(null); } var dataDependencies = needs.DataDependencies; var dataSupplyDependencies = needs.DataSupplyDependencies; var dataSupplierDependencies = needs.DataSupplierDependencies; #if DETAILED_TRACE Trace.WriteLine("Data context builder #" + Id + " resolving consumer needs for " + consumer); if (dataSupplyDependencies != null && dataSupplyDependencies.Count > 0) { Trace.WriteLine(" consumer needs data supplies:"); foreach (var supply in dataSupplyDependencies) { Trace.WriteLine(" " + supply); } } if (dataSupplierDependencies != null && dataSupplierDependencies.Count > 0) { Trace.WriteLine(" consumer needs suppliers:"); foreach (var supplierDependency in dataSupplierDependencies) { Trace.WriteLine(" " + supplierDependency); } } if (dataDependencies != null && dataDependencies.Count > 0) { Trace.WriteLine(" consumer needs data:"); foreach (var dependency in dataDependencies) { Trace.WriteLine(" " + dependency); } } #endif var dependentSupplies = new List <IDataSupply>(); if (dataSupplyDependencies != null) { foreach (var supply in dataSupplyDependencies) { AddSupply(supply); dependentSupplies.Add(supply); } } if (dataSupplierDependencies != null) { foreach (var dataSupplier in dataSupplierDependencies) { var supplies = ResolveDataSupplierSupplies(dataSupplier.Item1, dataSupplier.Item2, true); if (supplies != null) { dependentSupplies.AddRange(supplies); } } } if (dataDependencies != null) { foreach (var dependency in dataDependencies) { var supplies = ResolveDataDependencySupplies(dependency); if (supplies != null) { dependentSupplies.AddRange(supplies); } } } #if DETAILED_TRACE if (dependentSupplies.Count > 0) { Trace.WriteLine(" consumer depends on supplies:"); foreach (var supply in dependentSupplies) { Trace.WriteLine(" " + supply); } } #endif return(dependentSupplies); }
IDataConsumerNeeds IDataConsumer.GetConsumerNeeds() { return(_dataConsumer.GetConsumerNeeds()); }