do we not have query hints for this purpose?
On Tue, Mar 20, 2018 at 12:07 PM Nuno Oliveira <
[email protected]> wrote:

> Hi Andrea,
> thanks for the feedback, please see my answers bellow:
>
>
> On 03/20/2018 10:21 AM, Andrea Aime wrote:
>
> Hi Nuno,
> last time a new type of filter was in this commit:
>
>
> https://github.com/geotools/geotools/commit/47e9259d74482b92244b4dd301363b434e382baf
>
> Thankfully now there are default methods, allowing for quite a bit less
> painful extension.
>
>
> Thanks, yes default methods help indeed.
>
>
> Overall I see where this need comes from and agree with it, a few
> notes/questions off the top of my head:
>
>    - Can you share how you intend to implement NativeFilter? Is it an
>    interface with store specific implementations, or does it have a single
>    one? Which stores will receive a sample implementation of the concept?
>
>
> My idea is to create an interface (this will help with filter visitors):
>
> public interface NativeFilter extends Filter {
>
>     Expression getNative();
> }
>
>  and then provide a default implementation for it, this default
> implementation should be enough for most use cases.
>
> The JDBC data store will be the first one receiving support for it.
>
>
>
>    - Make sure the functionality is open for programmers but not from the
>    web (e.g., one cannot setup a XML or CQL filter using it
>
>
> Yes this is an important point indeed, no XML binds or CQL support will be
> implemented. The Filter to CQL visitor will throw an exception.
>
>
>
>    - Properly document the intended usage of it including notion of
>    pre/post filter splitting, e.g., if a NativeFilter is supported, but it's
>    OR-ed with another bit using an unsupported filter function, it will end in
>    the post, in memory evaluation, and will blow up.This is unavoidable, but
>    should not be a surprise for users.
>
>
> Yep.
>
>
> Cheers
> Andrea
>
>
>
>
>
> On Mon, Mar 19, 2018 at 11:07 PM, Nuno Oliveira <
> [email protected]> wrote:
>
>> Hi all,
>>
>> Recently I have been dealing with some use cases that require the ability
>> to inject some native filters,
>> specific for each feature type and non static over time, to the final
>> native query build by GeoTools and
>> send to the data store.
>>
>> For example, the content of a feature type is partially controlled by an
>> external service who provides a non
>> static native query (the request changes over time) that filters the
>> content that should be show.
>>
>> Another use case is a complex authorization rules system where the
>> authorization rules are SQL
>> expressions that need to be append to the final SQL WHERE clause build by
>> GeoTools, the system
>> provides SQL expressions for different databases (Oracle, PostgreSQL,
>> MySQL, etc ...).
>>
>> Most of the native filters of this use cases are quite complex and can't
>> be translated to OGC filters.
>>
>> Since we have a pattern here that can be applied to several use cases and
>> data stores I have think about
>> an approach that would allow extensions, external code, etc ... to inject
>> the necessary native filter(s)
>> and allow data stores implementations to handle those native filters in
>> an harmonized way.
>>
>> I have come up with the idea of a new filter named *NativeFilter*:
>>
>>    - this filter will NOT be directly usable by the final users, for
>>    example in WFS requests
>>
>>
>>    - if any code try to evaluate it in memory an exception will be throw
>>
>>
>>    - it will not break any API and data stores will be free to implement
>>    is support has needed
>>
>>
>>    - it will have a method getNative() that will return a String
>>    containing the native filter
>>
>> A new default method would need to be added to the *FilterVisitor*
>> interface and a default
>> implementation would need to be added to *AsbtractFilterVisitor and
>> DuplicatingFilterVisitor *
>> classes (like for any other filter).
>>
>> The data store who wants to supports this filter will need to extends it
>> custom visitor, for example,
>> for relational databases we only need to add a new visit method to
>> *FilterToSQL* visitor.
>>
>> This gives the necessary flexibility for third party code (codes that use
>> GeoTools) to inject native
>> filters without any specific extension points or cumbersome handling. It
>> is also worth notice unless
>> some code is using native filters this will have no impact on other
>> usages.
>>
>> Any thoughts on this ? Objections ?
>>
>> King regards,
>>
>> Nuno Oliveira
>>
>> --
>> Regards,
>> Nuno Oliveira
>> ==
>> GeoServer Professional Services from the experts! Visit http://goo.gl/it488V 
>> for more information.
>> ==
>>
>> Nuno Miguel Carvalho Oliveira
>> @nmcoliveira
>> Software Engineer
>>
>> GeoSolutions S.A.S.
>> Via di Montramito 3/A
>> 55054  Massarosa (LU)
>> Italy
>> phone: +39 0584 962313 <+39%200584%20962313>
>> fax:      +39 0584 1660272 <+39%200584%20166%200272>
>> http://www.geo-solutions.ithttp://twitter.com/geosolutions_it
>>
>> -------------------------------------------------------
>> AVVERTENZE AI SENSI DEL D.Lgs. 196/2003
>> Le informazioni contenute in questo messaggio di posta elettronica e/o nel/i 
>> file/s allegato/i sono da considerarsi strettamente riservate. Il loro 
>> utilizzo è consentito esclusivamente al destinatario del messaggio, per le 
>> finalità indicate nel messaggio stesso. Qualora riceviate questo messaggio 
>> senza esserne il destinatario, Vi preghiamo cortesemente di darcene notizia 
>> via e-mail e di procedere alla distruzione del messaggio stesso, 
>> cancellandolo dal Vostro sistema. Conservare il messaggio stesso, divulgarlo 
>> anche in parte, distribuirlo ad altri soggetti, copiarlo, od utilizzarlo per 
>> finalità diverse, costituisce comportamento contrario ai principi dettati 
>> dal D.Lgs. 196/2003.
>>
>> The information in this message and/or attachments, is intended solely for 
>> the attention and use of the named addressee(s) and may be confidential or 
>> proprietary in nature or covered by the provisions of privacy act 
>> (Legislative Decree June, 30 2003, no.196 - Italy's New Data Protection 
>> Code).Any use not in accord with its purpose, any disclosure, reproduction, 
>> copying, distribution, or either dissemination, either whole or partial, is 
>> strictly forbidden except previous formal approval of the named 
>> addressee(s). If you are not the intended recipient, please contact 
>> immediately the sender by telephone, fax or e-mail and delete the 
>> information in this message that has been received in error. The sender does 
>> not give any warranty or accept liability as the content, accuracy or 
>> completeness of sent messages and accepts no responsibility  for changes 
>> made after they were sent or for other risks which arise as a result of 
>> e-mail transmission, viruses, etc.
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Check out the vibrant tech community on one of the world's most
>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>> _______________________________________________
>> GeoTools-Devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/geotools-devel
>>
>>
>
>
> --
>
> Regards,
>
> Andrea Aime
>
> == GeoServer Professional Services from the experts! Visit
> http://goo.gl/it488V for more information. == Ing. Andrea Aime @geowolf 
> Technical
> Lead GeoSolutions S.A.S. Via di Montramito 3/A 55054  Massarosa (LU) phone:
> +39 0584 962313 fax: +39 0584 1660272 mob: +39  339 8844549
> http://www.geo-solutions.it http://twitter.com/geosolutions_it
>
> AVVERTENZE AI SENSI DEL D.Lgs. 196/2003
>
> Le informazioni contenute in questo messaggio di posta elettronica e/o
> nel/i file/s allegato/i sono da considerarsi strettamente riservate. Il
> loro utilizzo è consentito esclusivamente al destinatario del messaggio,
> per le finalità indicate nel messaggio stesso. Qualora riceviate questo
> messaggio senza esserne il destinatario, Vi preghiamo cortesemente di
> darcene notizia via e-mail e di procedere alla distruzione del messaggio
> stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso,
> divulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od
> utilizzarlo per finalità diverse, costituisce comportamento contrario ai
> principi dettati dal D.Lgs. 196/2003.
>
> The information in this message and/or attachments, is intended solely for
> the attention and use of the named addressee(s) and may be confidential or
> proprietary in nature or covered by the provisions of privacy act
> (Legislative Decree June, 30 2003, no.196 - Italy's New Data Protection
> Code).Any use not in accord with its purpose, any disclosure, reproduction,
> copying, distribution, or either dissemination, either whole or partial, is
> strictly forbidden except previous formal approval of the named
> addressee(s). If you are not the intended recipient, please contact
> immediately the sender by telephone, fax or e-mail and delete the
> information in this message that has been received in error. The sender
> does not give any warranty or accept liability as the content, accuracy or
> completeness of sent messages and accepts no responsibility  for changes
> made after they were sent or for other risks which arise as a result of
> e-mail transmission, viruses, etc.
>
>
> --
> Regards,
> Nuno Oliveira
> ==
> GeoServer Professional Services from the experts! Visit http://goo.gl/it488V 
> for more information.
> ==
>
> Nuno Miguel Carvalho Oliveira
> @nmcoliveira
> Software Engineer
>
> GeoSolutions S.A.S.
> Via di Montramito 3/A
> 55054  Massarosa (LU)
> Italy
> phone: +39 0584 962313
> fax:      +39 0584 1660272
> http://www.geo-solutions.ithttp://twitter.com/geosolutions_it
>
> -------------------------------------------------------
> AVVERTENZE AI SENSI DEL D.Lgs. 196/2003
> Le informazioni contenute in questo messaggio di posta elettronica e/o nel/i 
> file/s allegato/i sono da considerarsi strettamente riservate. Il loro 
> utilizzo è consentito esclusivamente al destinatario del messaggio, per le 
> finalità indicate nel messaggio stesso. Qualora riceviate questo messaggio 
> senza esserne il destinatario, Vi preghiamo cortesemente di darcene notizia 
> via e-mail e di procedere alla distruzione del messaggio stesso, 
> cancellandolo dal Vostro sistema. Conservare il messaggio stesso, divulgarlo 
> anche in parte, distribuirlo ad altri soggetti, copiarlo, od utilizzarlo per 
> finalità diverse, costituisce comportamento contrario ai principi dettati dal 
> D.Lgs. 196/2003.
>
> The information in this message and/or attachments, is intended solely for 
> the attention and use of the named addressee(s) and may be confidential or 
> proprietary in nature or covered by the provisions of privacy act 
> (Legislative Decree June, 30 2003, no.196 - Italy's New Data Protection 
> Code).Any use not in accord with its purpose, any disclosure, reproduction, 
> copying, distribution, or either dissemination, either whole or partial, is 
> strictly forbidden except previous formal approval of the named addressee(s). 
> If you are not the intended recipient, please contact immediately the sender 
> by telephone, fax or e-mail and delete the information in this message that 
> has been received in error. The sender does not give any warranty or accept 
> liability as the content, accuracy or completeness of sent messages and 
> accepts no responsibility  for changes made after they were sent or for other 
> risks which arise as a result of e-mail transmission, viruses, etc.
>
>
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> GeoTools-Devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/geotools-devel
>
-- 
--
Jody Garnett
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
GeoTools-Devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-devel

Reply via email to