I would first find a use for them, then eventually add them. On Thu, Dec 23, 2010 at 22:14, Gauthier Segay <gauthier.se...@gmail.com>wrote:
> yes other Inline operations I have in mind / or in some code base: > > InlineFilterOperation (takes a predicate) > > InlineAggregationOperation (with possibility to unnest aggregation > within same operation since it's pretty common and more convenient > than chainning two independant operations) > > InlineGenerateRowsOperation (which has issue you mention about yield, > but can be work arround by passing method reference instead of > anonymous method, also Linq Select as Jason mention is nifty solution) > > InlineTransformOperation (applies a Func<Row,Row> to transform rows) > > InlineExpandOperation (applies a Func<Row,IEnumerable<Row>> to > generate multiple rows from a single row) > > InlineConventionInputSqlCommand (takes sql statement and > Action<IDbCommand> commandPreparer) > > I think all those are pretty useful to avoid kingdom of nouns, > although nouns are useful for more involved operations, simple > processes gain not having to define that many classes > > Thanks again for your feedback > > On Dec 23, 11:02 am, Nathan Palmer <snowpal...@gmail.com> wrote: > > Have you looked into making the other operations inline? You may run into > an > > issue with using yield. Optimally it would be great to specify an > abstract > > operation using an anonymous method. But yield is not allowed there which > > causes issues. > > > > Register(new Operation { > > Execute = (r) => { > > yield return r; > > } > > > > }); > > > > Nathan Palmer > > > > On Thu, Dec 23, 2010 at 11:56 AM, Gauthier Segay > > <gauthier.se...@gmail.com>wrote: > > > > > > > > > > > > > > > > > Thanks Jason and Nathan > > > > > regarding constructor / property initializer syntax, I think my issue > > > is that a join operation without proper settings is not valid, the > > > constructor enforce proper initialization. For those using c#4 with > > > named arguments that is not looking that much different than property > > > intializers > > > > > But I'm ok to use property initializer for optional things (like > > > orphan row handlers, operation name, etc.) > > > > > Thanks for your feedback, I'll be pushing other operations and unit > > > tests in my fork > > > > > On Dec 23, 7:21 am, Nathan Palmer <snowpal...@gmail.com> wrote: > > > > I like the idea of having this require less code when doing it in C#. > I > > > use > > > > the DSL most of the time for that very reason. > > > > > > I do prefer the instantiators over the constructor though. > > > > > > Nathan Palmer > > > > > > On Thu, Dec 23, 2010 at 6:41 AM, Jason Meckley < > jasonmeck...@gmail.com > > > >wrote: > > > > > > > I would go with properties instead of ctor args and take advantage > of > > > > > 3.0s instantiators. This way you don't need builder objects. > > > > > > > Register(new InLineJoinOperation > > > > > { > > > > > JoinType = JoinType.Inner > > > > > LeftOperation = ThisOp(), > > > > > LeftColumnsToJoinOn = new[]{"column1"}, > > > > > RightOperation = ThisOp(), > > > > > RightColumnsToJoinOn = new[]{"column1"}, > > > > > Action = (left, right) => {left} > > > > > }); > > > > > > > On Dec 22, 3:29 pm, Gauthier Segay <gauthier.se...@gmail.com> > wrote: > > > > > > Hi, > > > > > > > > I started to use Rhino ETL framework and found useful to be able > to > > > > > > define operations inline in my processes, what I mean is that I > don't > > > > > > have to define a class for each typical operation (like join, > > > > > > aggregation, filtering, inline sql output, etc.). > > > > > > > > I intend to add those inline operation to the framework itself > > > because > > > > > > I think it would be useful to other people as well, I started > with > > > > > > InlineJoinOperation that you can look at here: > > > > >https://github.com/smoothdeveloper/rhino-etl/blob/master/Rhino.Etl.Co. > .. > > > > > > > > so to do a plain join operation I can now register something like > > > > > > this: > > > > > > > > var ensureMergerReturnsNewRow = true; > > > > > > new InlineJoinOperation( > > > > > > columnsToJoinOn, > > > > > > columnsToJoinOn, > > > > > > JoinType.Inner, > > > > > > (left, row) => { // return join result; }, > > > > > > leftoperation, > > > > > > rightoperation, > > > > > > ensureMergerReturnsNewRow > > > > > > ); > > > > > > > > instead of having to define a specific class > > > > > > > > Anybody think it's a good thing to have those baked in the > framework? > > > > > > Do you have any feedback on what is shown in this first class? > > > > > > > > The icing on the cake for this would be to have fluent operation > > > > > > builder to encapsulate the bulky constructors, for this I'm > looking > > > > > > for syntax ideas. > > > > > > > > Thanks for your feedback > > > > > > > -- > > > > > You received this message because you are subscribed to the Google > > > Groups > > > > > "Rhino Tools Dev" group. > > > > > To post to this group, send email to > rhino-tools-...@googlegroups.com. > > > > > To unsubscribe from this group, send email to > > > > > rhino-tools-dev+unsubscr...@googlegroups.com<rhino-tools-dev%2bunsubscr...@googlegroups.com> > <rhino-tools-dev%2Bunsubscribe@ googlegroups.com> > > > <rhino-tools-dev%2Bunsubscribe@ googlegroups.com> > > > > > . > > > > > For more options, visit this group at > > > > >http://groups.google.com/group/rhino-tools-dev?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "Rhino Tools Dev" group. > To post to this group, send email to rhino-tools-...@googlegroups.com. > To unsubscribe from this group, send email to > rhino-tools-dev+unsubscr...@googlegroups.com<rhino-tools-dev%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/rhino-tools-dev?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Rhino Tools Dev" group. To post to this group, send email to rhino-tools-...@googlegroups.com. To unsubscribe from this group, send email to rhino-tools-dev+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rhino-tools-dev?hl=en.