Jody Garnett ha scritto:
> Andrea Aime wrote:
>> Hi,
>> so following up from last week discussion, it
>> seems there is currently no supported way to know
>> what the arguments of a function are, you are
>> supposed to know before hand (Jody mentioned
>> the FunctionFinder, but that does not provide
>> any argument lookup method).
>>
>> So it seems that to get unstuck I will have to
>> make a change proposal affecting both GeoTools
>> and GeoApi.
>>
>> In particular, I'm thinking to propose something
>> along these lines:
>> - register a factory for the functions, not the
>>    functions themselves
>>   
> cool.
> Aside: There is an option we have not talked about yet - we are used to 
> having the factory directly make the functions. The alternative is to do 
> our own thing (much like we did for property access). There is no 
> requirement to have many Function implementations around; only that the 
> FilterFactory create a Function that will do something when evaulate is 
> called - ie it could look up the right entry in your factory and execute 
> it.

...

> You will find a few functions that I have implemented using no 
> deprecated code; I generally implement the XXXXFunction; and have an 
> internal class XXXXFunction.Name that extends FunctionName.

You're suggesting that we register functions directly, and have the
convention that there is a static inner class named Name that contains
the metadata?

>> - for the few others (if any) a new factory will be created
>>
>> This would solve the lookup issue at the GeoTools
>> level. At the GeoApi level things are a bit more
>> complicated because the function lookup support
>> has been mutilated quite a bit.
>> We should at least:
>> - add back FilterCapabilities to FilterFactory
>>   
> :-)
>> - add getFunctions to FilterCapabilities,
>>    which in turn provides the getFunctionNames
>>    and getFunctionName methods
>>   
> That is already there in some form; you can find the FunctionNames in 
> the FilterCapabilities data structure.

Is there? This is the GeoApi FilterCapabilities interface:

public interface FilterCapabilities {

        /** Version String for Filter 1.0 specification */
     public String VERSION_100 = "1.0.0";
        /** Version String for Filter 1.1 specification */
     public String VERSION_110 = "1.1.0";

     /**
      *
      */
     @UML(identifier="scalarCapabilities", specification=UNSPECIFIED)
     ScalarCapabilities getScalarCapabilities();

     /**
      *
      */
     @UML(identifier="spatialCapabilities", specification=UNSPECIFIED)
     SpatialCapabilities getSpatialCapabilities();

     /**
      *
      */
     @UML(identifier="idCapabilities", specification=UNSPECIFIED)
     IdCapabilities getIdCapabilities();

     /**
      * Returns the version.
      */
     String getVersion();
}

>> - decide if FunctionName interface is good for
>>    us, or not. At the moment we do have the following:
>>
>> public interface FunctionName extends Operator {
>>      /**
>>       * Number of arguments the function accepts.
>>       */
>>      int getArgumentCount();
>>
>>      /**
>>       * Argument names for documentation purposes if known.
>>      List<String> getArgumentNames();
>> }
>>   
> It is is intended to be good for us; I added getArgumentNames() in order 
> to be good for us; if we need something more then we should add it. The 
> only thing I know I was worried about was handling variable length 
> functions ... I currently handle it by documenting the minimum by 
> getArgumentCount(); and having more argumentNames() that document arg0, 
> arg1, etc...

Ok
Cheers
Andrea

-- 
Andrea Aime
OpenGeo - http://opengeo.org
Expert service straight from the developers.

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Geotools-devel mailing list
Geotools-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-devel

Reply via email to