Okay, now I see.
Let me know if you want to submit a patch for this

On Thu, Dec 25, 2008 at 3:35 PM, webpaul <[email protected]> wrote:

>
> Los rows son... Oh wait, English. The way I am using it is that I have
> a set of rows that contains multiple "types" - I branch based on those
> types and the output from both of those branches is a lesser amount of
> rows but I still want to do something with them. With the original
> branchingoperation it specifically eats all the output rows. This one
> just passes them through so they can be used after that if needed.
>
>
> On Dec 25, 12:01 am, "Ayende Rahien" <[email protected]> wrote:
> > Can you explain, in English, what it is suppose to do?
> >
> >
> >
> > On Wed, Dec 24, 2008 at 12:06 AM, webpaul <[email protected]> wrote:
> >
> > > I created a BranchAndReturnOperation which allows me to do this:
> >
> > >                new BranchAndReturnOperation(this)
> > >                .AddBranch(
> > >                        new FilterRowsOnType(this, "type1")
> > >                        new DoSomeStuff1AndReturnRows(this)
> > >                )
> > >                .AddBranch(
> > >                new FilterRowsOnType(this, "type2"),
> > >                new DoSomeStuff2AndReturnRows(this)
> > >                ),
> >
> > > And then use the result rows from both of those branches. Just putting
> > > the idea here in case anyone wants it, the code below will need a
> > > little bit of cleanup before it could go in the etl trunk. But I'm
> > > more curious if anyone sees a reason why this wasn't done in the first
> > > place. I also changed the syntax a bit because I didn't like the
> > > partial.register stuff. If you didn't want one of the branches to
> > > return rows you could just make a null operation which ate the rows.
> >
> > >        public class BranchAndReturnOperation : BaseOperation
> > >        {
> > >                private readonly List<IOperation> operations = new
> > > List<IOperation>
> > > ();
> >
> > >        public BranchAndReturnOperation(BaseProcess Process) : base
> > > (Process) { }
> >
> > >                /// <summary>
> > >                /// Adds the specified operation to this branching
> operation
> > >                /// </summary>
> > >                /// <param name="operation">The operation.</param>
> > >                /// <returns></returns>
> > >        public BranchAndReturnOperation Add(IOperation operation)
> > >                {
> > >                        operations.Add(operation);
> > >                        return this;
> > >                }
> >
> > >        public BranchAndReturnOperation AddBranch(params IOperation[]
> > > branchOperations)
> > >        {
> > >            PartialProcessOperation subProcess = new
> > > PartialProcessOperation();
> >
> > >            foreach (IOperation operation in branchOperations)
> > >                subProcess.Register(operation);
> >
> > >            operations.Add(subProcess);
> >
> > >            return this;
> > >        }
> >
> > >                /// <summary>
> > >                /// Initializes this instance
> > >                /// </summary>
> > >                /// <param name="pipelineExecuter">The current pipeline
> > > executer.</
> > > param>
> > >                public override void
> PrepareForExecution(IPipelineExecuter
> > > pipelineExecuter)
> > >                {
> > >                        base.PrepareForExecution(pipelineExecuter);
> > >                        foreach (IOperation operation in operations)
> > >                        {
> >
> > >  operation.PrepareForExecution(pipelineExecuter);
> > >                        }
> > >                }
> >
> > >                /// <summary>
> > >                /// Executes this operation, sending the input of this
> > > operation
> > >                /// to all its child operations
> > >                /// </summary>
> > >                /// <param name="rows">The rows.</param>
> > >                /// <returns></returns>
> > >                public override IEnumerable<Row>
> Execute(IEnumerable<Row>
> > > rows)
> > >                {
> > >                        List<Row> copiedRows = new List<Row>(rows);
> > >                        foreach (IOperation operation in operations)
> > >                        {
> > >                                List<Row> cloned =
> > > copiedRows.ConvertAll<Row>(delegate(Row row)
> > >                                {
> > >                                        return row.Clone();
> > >                                });
> >
> > >                IEnumerable<Row> enumerable = operation.Execute
> > > (cloned);
> > >                foreach (Row row in enumerable)
> > >                    yield return row;
> > >                        }
> > >                }
> > >        }
> > > }- Hide quoted text -
> >
> > - Show quoted text -
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Rhino Tools Dev" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rhino-tools-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to