Exemplo n.º 1
0
        public void CallBatch(IBatchDataProvider <TInputElement, TOutputElement, TContext> prov, TElement[] currentElements, out TElement[] elementsToUpdate)
        {
            var elementsToUpdateList = new List <TElement>();

            try
            {
                // Exceptions here will cause going to next data provider
                var currentOutput = prov.GetBatch(currentElements.Select(elm => elm.Input).ToArray(), Context);

                if (currentOutput.Length != currentElements.Length)
                {
                    throw new Exception(string.Format("Output count mismatch when calling <{0}>, expected=<{1}, found=<{2}>>", prov.GetType().Name, currentElements.Length, currentOutput.Length));
                }

                // Smooth code, no exceptions expected
                for (int i = 0; i < currentElements.Length; i++)
                {
                    var elm = currentElements[i];
                    elm.Output = currentOutput[i];

                    if (IsElementUpdatable(elm))
                    {
                        elementsToUpdateList.Add(elm);
                    }
                }
            }
            catch (Exception ex)
            {
                Local.Admin.LogException(ex);
            }
            elementsToUpdate = elementsToUpdateList.ToArray();
        }
Exemplo n.º 2
0
 public BatchService(IBatchDataProvider batchDataProvider, IBeerDataProvider beerDataProvider)
 {
     BatchDataProvider = batchDataProvider;
     BeerDataProvider  = beerDataProvider;
 }