Esempio n. 1
0
 public StdHandler(OutputSource aSource, System.Diagnostics.Process aProcess, ExecOutputDelegate aOutput)
 {
     itsProcess = aProcess;
     Source = aSource;
     Output = aOutput;
     if (Source == OutputSource.stderr) aProcess.ErrorDataReceived += new System.Diagnostics.DataReceivedEventHandler(OutputDataReceived);
     else aProcess.OutputDataReceived += new System.Diagnostics.DataReceivedEventHandler(OutputDataReceived);
 }
Esempio n. 2
0
 public async Task ExecuteAsync() => await OutputSource.ExecuteAsync();
Esempio n. 3
0
 public IDataFlowLinkSource <TInput> LinkTo(IDataFlowLinkTarget <TInput> target)
 => OutputSource.LinkTo(target);
Esempio n. 4
0
        private void SetDestinationTableProperties()
        {
            DestinationTable.ConnectionManager = ConnectionManager;
            DestinationTable.TableName         = TableName;
            DestinationTable.BatchSize         = BatchSize;
            DestinationTable.MaxBufferSize     = this.MaxBufferSize;

            DestinationTable.BeforeBatchWrite = batch =>
            {
                if (MergeMode == MergeMode.Delta)
                {
                    DeltaTable.AddRange(batch.Where(row => GetChangeAction(row) != ChangeAction.Delete));
                }
                else if (MergeMode == MergeMode.UpdatesOnly)
                {
                    DeltaTable.AddRange(batch.Where(row => GetChangeAction(row) == ChangeAction.Exists ||
                                                    GetChangeAction(row) == ChangeAction.Update));
                }
                else
                {
                    DeltaTable.AddRange(batch);
                }

                if (!UseTruncateMethod)
                {
                    if (MergeMode == MergeMode.UpdatesOnly)
                    {
                        SqlUpdateIds(batch.Where(row => GetChangeAction(row) == ChangeAction.Update));
                        return(batch.Where(row => false).ToArray());
                    }
                    else
                    {
                        SqlUpdateIds(batch.Where(row => GetChangeAction(row) == ChangeAction.Update));
                        SqlDeleteIds(batch.Where(row => GetChangeAction(row) == ChangeAction.Delete));
                        return(batch.Where(row => GetChangeAction(row) == ChangeAction.Insert).ToArray());
                    }
                }
                else
                {
                    if (MergeMode == MergeMode.Delta)
                    {
                        throw new ETLBoxNotSupportedException("If you provide a delta load, you must define at least one compare column." +
                                                              "Using the truncate method is not allowed. ");
                    }
                    TruncateDestinationOnce();
                    if (MergeMode == MergeMode.UpdatesOnly)
                    {
                        return(batch.Where(row => GetChangeAction(row) != ChangeAction.Delete &&
                                           GetChangeAction(row) != ChangeAction.Insert).ToArray());
                    }
                    else
                    {
                        return(batch.Where(row => GetChangeAction(row) == ChangeAction.Insert ||
                                           GetChangeAction(row) == ChangeAction.Update ||
                                           GetChangeAction(row) == ChangeAction.Exists)
                               .ToArray());
                    }
                }
            };

            DestinationTable.OnCompletion = () =>
            {
                IdentifyAndDeleteMissingEntries();
                if (UseTruncateMethod && (MergeMode == MergeMode.UpdatesOnly || MergeMode == MergeMode.InsertsAndUpdatesOnly))
                {
                    ReinsertTruncatedRecords();
                }
                if (Successors.Count > 0)
                {
                    OutputSource.ExecuteAsync();
                    OutputSource.Completion.Wait();
                    //Careful: A TPL buffer never completes if it has no consumer linked to it!!!
                    OutputSource.BufferCompletion.Wait();
                }
            };
        }
Esempio n. 5
0
 private void SetOutputFlow()
 {
     OutputSource.MaxBufferSize = this.MaxBufferSize;
     SetOutputReadFunc();
     OutputSource.InitBufferObjects();
 }
Esempio n. 6
0
 public SpectrumAnalyzer(OutputSource output)
 {
     InitializeComponent();
     NotSpectrumAnalyzer.Source = output;
 }
Esempio n. 7
0
 internal override void FaultBufferOnPredecessorCompletion(Exception e)
 {
     Lookup.FaultBufferOnPredecessorCompletion(e);
     OutputSource.FaultBufferOnPredecessorCompletion(e);
 }
Esempio n. 8
0
 public void Execute() => OutputSource.PostAll();
Esempio n. 9
0
 public Timeclock(OutputSource output)
 {
     InitializeComponent();
     NotTimeclock.SourceCollection.Add(output);
 }
Esempio n. 10
0
 public void LinkTo(IDataFlowLinkTarget <TInput> target, Predicate <TInput> predicate) => OutputSource.LinkTo(target);
Esempio n. 11
0
 public void PostAll() => OutputSource.PostAll();
Esempio n. 12
0
 /// <summary>
 /// Generates the OUTPUT clause.
 /// </summary>
 /// <param name="prev">A predecessor table.</param>
 /// <param name="outputSource">Is a data source (Inserted or Deleted) of the OUTPUT clause.</param>
 /// <returns></returns>
 public static OutputChainer Output(this IOutput prev, OutputSource outputSource)
 {
     return(new OutputChainer((Chainer)prev, null, outputSource));
 }
Esempio n. 13
0
 public void Execute() => OutputSource.Execute();
Esempio n. 14
0
 public override void Execute() => OutputSource.Execute();
Esempio n. 15
0
 public void ExecuteAsync() => OutputSource.ExecuteAsync();
Esempio n. 16
0
 public Timeline(OutputSource output)
 {
     InitializeComponent();
     NotTimeline.Source = output;
 }