Hi Kasper,

thank you for your quick response. I was having a look at some
stackoverflow threads [1][2] and was start thinking of moving to an
interface solution. With your response I've got a much clear idea.

[1]http://stackoverflow.com/questions/6511453/extending-a-enum-in-java
[2]
http://stackoverflow.com/questions/2642281/is-it-possible-to-extend-java-enums

Kind regards,

Alberto

2015-07-23 12:36 GMT+02:00 Kasper Sørensen <i.am.kasper.soren...@gmail.com>:

> Hi Alberto,
>
> I am thinking that this reminds me a bit of the time (some releases back)
> when we converted ColumnType from an enum into an interface. That change
> opened up a lot of doors IMO. And a similar change to the FunctionType
> could do the trick.
>
> What I have in mind is:
>
>  * Add an interface called AggregateFunction. This interface will have the
> "aggregation specific" methods related to AggregateBuilder etc.
>  * Add an interface called ScalarFunction. This interface will have some
> method that could be used to do the scalar transformation in memory (for
> those DataContext implementations that don't support the function
> natively).
>  * Rename the current FunctionType enum into DefaultAggregateFunction and
> let it implement AggregateFunction
>  * Add a new FunctionType _interface_ which has static final references to
> the aggregate functions. Thereby we facilitate that existing code will
> work, although it will need to be recompiled.
>
> Once these changes have been done then we can start looking at parsers, how
> to execute the different types of functions in different kinds of
> DataContext implementations etc. But having the split in the interfaces
> will allow us to much better generalize that I think.
>
> Best regards,
> Kasper
>
> 2015-07-23 12:28 GMT+02:00 Alberto Rodriguez <ardl...@gmail.com>:
>
> > Hi all,
> >
> > I've just started having a look at how to add scalar functions like
> > SUBSTRING, CONCAT, UPPER... to MetaModel.
> >
> > I started by adding these functions to the MetaModel parser. There is
> > already a FunctionType enum that takes care of all the aggregate
> functions
> > (SUM, COUNT, AVG...) This FunctionType is used in the SelectItemParser to
> > find out the function type and parse it accordingly.
> >
> > Not sure if I should add a new "ScalarFunctionType" enum or modify
> somehow
> > the existing one to take into account the new scalar functions. I do not
> > like the idea of having quite different "semantic" elements within the
> same
> > enum type but neither like the idea of having to ask everywhere whether
> the
> > function is scalar or not.
> >
> > I'm thinking of creating kinda enum hierarchical data structure, but
> still
> > not sure how to do it because the FunctionType has several methods that
> are
> > very coupled to the aggregate functions (abstract AggregateBuilder,
> > evaluate...)
> >
> > Any ideas?
> >
> > Kind regards,
> >
> > Alberto
> >
>

Reply via email to