There is also a tutorial on writing a function in the geotools library documentation:
https://docs.geotools.org/latest/userguide/tutorial/function.html It also tries to explain about META-INF/services -- Jody Garnett On Thu, 9 Jan 2020 at 15:15, Jim Hughes <[email protected]> wrote: > Hi, > > To answer #1, SPI is the Java 'Service Provider Interface'. It is one > option on the JVM to provide concrete implementations to interfaces at > runtime[1]. To create the jar, you'd need to compile your class and > make sure to include the file in META-INF/services that Andrea > mentioned. Build tools like Maven can help with compiling, etc. > > As a note, we wrote a similar function in GeoMesa[2]. On a good day, > you could add the jar I linked to a GeoServer 2.15.x (newer *may* work, > but things could go wrong) and the function currentDate may work. > > I've used it for layers with live data to run queries like "DATE_COL > > currentDate('-PT5m')" to show only the records which have updated in the > last 5 minutes. As the GeoMesa documentation notes, the syntax for the > duration is here[3]. > > Cheers, > > Jim > > 1. SPI Background: https://www.baeldung.com/java-spi > > > https://www.journaldev.com/31602/java-spi-service-provider-interface-and-serviceloader > > 2. Scala code: > > https://github.com/locationtech/geomesa/blob/master/geomesa-filter/src/main/scala/org/locationtech/geomesa/filter/function/CurrentDateFunction.scala > > Meta-inf line to wire it up: > > https://github.com/locationtech/geomesa/blob/master/geomesa-filter/src/main/resources/META-INF/services/org.opengis.filter.expression.Function#L2 > > Docs: > > https://www.geomesa.org/documentation/user/datastores/filter_functions.html#currentdate > > > Jar: > > https://repo1.maven.org/maven2/org/locationtech/geomesa/geomesa-filter_2.11/2.4.0/geomesa-filter_2.11-2.4.0.jar > > 3. > > https://docs.oracle.com/javase/8/docs/api/java/time/Duration.html#parse-java.lang.CharSequence- > > On 1/9/20 10:34 AM, steefdam via Geoserver-users wrote: > > Hi Andrea, > > > > I know it has been a very long time since this question came up and you > > answered it, but I have a question about this topic. > > > > I want to set a CQL filter in GeoServer which compares a date-attribute > i.e. > > DATE_COL to /now/, with /now/ being a Java function. Very much like this: > > DATE_COL > getDateNow() > > > > In your answer to the OP you wrote that it's quite simple: > > > > > > geowolf wrote > >> It's really just: > >> 1) create the function, e.g. > >> > https://github.com/geotools/geotools/blob/master/modules/library/main/src/main/java/org/geotools/filter/function/string/ConcatenateFunction.java > >> 2) register the function in SPI, eg.: > >> > https://github.com/geotools/geotools/blob/master/modules/library/main/src/main/resources/META-INF/services/org.opengis.filter.expression.Function#L168 > >> > >> You just create a jar with those two files, drop it in GeoServer, and > you > >> get the extra function available to SLD, WFS and so on > > I have two questions about this: > > 1. What do you mean with registering the function in SPI? > > 2. Which two files do you need to create a jar? > > > > > > > > -- > > Sent from: > http://osgeo-org.1560.x6.nabble.com/GeoServer-User-f3786390.html > > > > > > _______________________________________________ > > Geoserver-users mailing list > > > > Please make sure you read the following two resources before posting to > this list: > > - Earning your support instead of buying it, but Ian Turton: > http://www.ianturton.com/talks/foss4g.html#/ > > - The GeoServer user list posting guidelines: > http://geoserver.org/comm/userlist-guidelines.html > > > > If you want to request a feature or an improvement, also see this: > https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer > > > > > > [email protected] > > https://lists.sourceforge.net/lists/listinfo/geoserver-users > > > > > _______________________________________________ > Geoserver-users mailing list > > Please make sure you read the following two resources before posting to > this list: > - Earning your support instead of buying it, but Ian Turton: > http://www.ianturton.com/talks/foss4g.html#/ > - The GeoServer user list posting guidelines: > http://geoserver.org/comm/userlist-guidelines.html > > If you want to request a feature or an improvement, also see this: > https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer > > > [email protected] > https://lists.sourceforge.net/lists/listinfo/geoserver-users >
_______________________________________________ Geoserver-users mailing list Please make sure you read the following two resources before posting to this list: - Earning your support instead of buying it, but Ian Turton: http://www.ianturton.com/talks/foss4g.html#/ - The GeoServer user list posting guidelines: http://geoserver.org/comm/userlist-guidelines.html If you want to request a feature or an improvement, also see this: https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer [email protected] https://lists.sourceforge.net/lists/listinfo/geoserver-users
