Forgot to add in earlier email:

+1 for this operator.

~ Yogi

On 8 March 2016 at 17:03, Yogi Devendra <[email protected]> wrote:

> Can we think of better name than Transform operator?
> May be:
> Expression operator
>
> Reason:
> We have many operators which are doing 'transform'. So, this name looks
> very generic.
>
> In fact, from the users perspective, I always consider any operator like a
> black-box doing some transformation.
>
> ~ Yogi
>
> On 8 March 2016 at 16:46, Mohit Jotwani <[email protected]> wrote:
>
>> This can have as many util functions added to it to perform various
>> transformations to the tuple.
>>
>> +1
>>
>> Regards,
>> Mohit
>> On 8 Mar 2016 16:42, "Sandeep Deshmukh" <[email protected]> wrote:
>>
>> > Looks good to me.
>> >
>> > Regards,
>> > Sandeep
>> >
>> > On Mon, Mar 7, 2016 at 9:51 PM, Chinmay Kolhatkar <[email protected]>
>> > wrote:
>> >
>> > > Dear Community,
>> > >
>> > > We're creating a transform operator which will allow the apex users to
>> > > transform data over a stream using this operator.
>> > >
>> > > Use Case:
>> > > ----
>> > > When the data has been received from input source, one can transform
>> data
>> > > using transform operator and then dump it to destination.
>> > >
>> > > Transform means:
>> > > ----
>> > > 1. Conversion of fields from one type to another. Eg. int to Integer,
>> > epoc
>> > > to java.util.Date object, int to String or String to int etc.
>> > > 2. Deriving new fields from one or more input fields.
>> > >     For eg. Input contains 2 fields viz. "firstname", "lastname" and
>> > > derived field is "fullname" which is combination of firstname and
>> > lastname
>> > > in some way.
>> > >     Another example is date of birth present in input tuple, generate
>> age
>> > > from it.
>> > > 3. Change in schema from input to output. For eg. Input schema is
>> subset
>> > of
>> > > output schema and output schema contains some extra derived fields
>> from
>> > > input fields.
>> > >
>> > >
>> > > Functionality:
>> > > ----
>> > > 1. Transform operator will access POJO as input tuple and emit
>> > another/same
>> > > POJO output tuple.
>> > > 2. Operator needs to be configured with input tuple schema and output
>> > tuple
>> > > schema for this. This can be done via TUPLE_CLASS attribute on ports.
>> > > 3. Generation of output tuple from input tuple can be specified using
>> > > simple java based expressions.
>> > >     For eg.
>> > >        outfield1 = <expression using fields of input POJO>
>> > >        outfield2 = <expression using fields of output POJO>
>> > > 4. If no expression is mentioned for a certain output field, then a
>> > > matching field (name and type) will be picked input POJO and contents
>> > will
>> > > be copied to output POJO.
>> > > Otherwise, the output field will be left to default empty value.
>> > >
>> > >
>> > > Expression Support in PojoUtils:
>> > > ----
>> > > 1. For achieving above functionality, I thought about extending
>> PojoUtils
>> > > which already support much of what is required. Then this utility can
>> be
>> > > used in Transform operator.
>> > > 2. Couple of minor enhancements/fixing issues required to this
>> utility:
>> > >     a. Multiple POJO support is not required. Hence will stick to
>> single
>> > > POJO.
>> > >     b. PojoUtils does not work well with resolution of getter methods
>> > when
>> > > more than one fields are mentioned in expression. Will need to fix
>> that.
>> > >     c. Following interface can be added to PojoUtils. This will be the
>> > > return method that can be called for executing the expression
>> > >         interface Expression<O>
>> > >         {
>> > >           O execute(Object obj);
>> > >         }
>> > >     d. Following methods can be added to PojoUtils for addressing
>> > > expression support:
>> > >         // Evaluates given expression
>> > >         Expression evaluateExpression(String expr, Class
>> inputObjectType,
>> > > Class returnType);
>> > >
>> > >         // Adds a custom method that can be used in an expression.
>> > >         // The one who's using this library can utility this method to
>> > > provide predefined functionality to user.
>> > >        void registerCustomMethod(String qualifiedFunc)
>> > >
>> > >
>> > > Please share your valuable inputs on this.
>> > >
>> > > Thanks,
>> > > Chinmay.
>> > >
>> >
>>
>
>

Reply via email to