Opinion - great direction for visitor, think it would allow us to make
better use of collections model as a result. The functionality is used for
optimization in JDBC, but the ability to split/merge feature visitors
(including their result) would be advantageous for concurrency.
I remember exploring some of these design options when we looked at the
feature collection api; and there were examples from other languages being
considered.
Q: Now that we have a streaming API in Java does it offer any inspiration
or functionality that we could take advantage of?
--
Jody Garnett
On 31 October 2017 at 09:16, Andrea Aime <[email protected]>
wrote:
> Hi,
> I'm looking at a possible optimization for a composite feature collection,
> that is,
> the ability to optimize down feature visitors instead of running them in
> memory.
>
> So the code gets a visitor, and I was thinking, ok, if it's a FeatureCalc
> <https://github.com/geotools/geotools/blob/b0ddacc545aabeafc134cd0a050d0353829aca3b/modules/library/main/src/main/java/org/geotools/feature/visitor/FeatureCalc.java>
> there
> is
> a way to get the CalcResult(s) and merge them.
>
> However, the collection is given a FeatureCalc that might have aggregated
> something already in memory, that needs to be preserved, and at the end
> I need to set the "merge" result back into it.
>
> I looked into what JDBCDataStore can do, and it's basically using
> reflection
> to do its own business, since FeatureCalc per se provides no much methods.
>
> Thinking out loud maybe a "MutableFeatureCalc" is needed?
>
> interface MutableFeatureCalc extends FeatureCalc {
>
> // available in many implementations of FeatureCalc, but not all!
> public void reset();
>
> // this is what JDBCDataStore is relying upon
> public void setValue(Object result);
>
> }
>
> Then aggregating from N sources in a generic way would look something like:
>
> CalcResult result = calc.getResult();
> for(FeatureCollection fc : collections) {
> calc.reset();
> // need a wrapping sub progress listener here
> fc.accept(visitor, progressListener);
> CalcResult newResult = calc.getResult();
> result = result.merge(newResult);
> }
>
> calc.setValue(result.getValue());
>
>
> Opinions?
>
> Cheers
> Andrea
>
> PS: no promises it will be implemented, I'm in exploration and feasibility
> mode here
>
> ==
> 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 <+39%200584%20962313>
> fax: +39 0584 1660272 <+39%200584%20166%200272>
> mob: +39 339 8844549 <+39%20339%20884%204549>
>
> 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.
>
>
> ------------------------------------------------------------
> ------------------
> 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
>
>
------------------------------------------------------------------------------
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