Vitali Diatchkov wrote:
> The functionality you are talking about (methods) are from
> java.util.Collection (those methods except update()..)?
>   
Indeed, and if look to the feature model branch I think update would of 
even be covered.
>> That answer the question from an API perspective (is the code complete),
>> the other reason you could ask for this is from a performance
>> perspective - I would still ask that you consider using the API as it
>> stands, and spend time working on a FeatureCollection implementation
>> that acts as a cache (or buffer) of modification commands rather then
>> duck around the API and make a solution that does not scale. 
>>     
> I agree. But sometimes I feel constraint and conservatism that forces to
> implement workarounds and hacks that look good enough from performance point
> of view but strongly dependent on changes from the community. You implement
> local workaround, something is changed and your work is broken. I had such
> experience with TransactionStateDiff changes last spring for Shapefiles.
>   
I think it is more a question of time (of people to invest in making 
optimized data access), the API should of protected you
from being dependent on any TransactionStateDiff changes (perhaps I am 
confused on how you were using it).
>> existing TransactionStateDiff used by Shapefile offers some of this
>> functionality, but it is not something that is under programmer control
>> (the difference between an internal cache, and an external cache).
>>
>> To sum up:
>> 1. the FeatureStore API is only there to be optimized into SQL, it is
>> not intended to be complete. For add hoc modification FeatureWriter and
>> FeatureCollection are both available
>> 2. I am trying to move us to use optimized FeatureCollection
>> implementations
>> 3. making a FeatureCollection that is aware of Transaction state changes
>> (and feature modification events) will accomplish your goal within the
>> bounds of the existing API.
>> 4. staying within the bounds of the existing API will allow your code to
>> scale transparently to large data sizes.
>>     
> So, the summary is: FeatureCollection should be considered to be extended to
> provide rich functionality of ADD/NODIFY/REMOVE operations over features?
>   
Correct, that is the way things are set up, and the reason I have not 
implemented the idea you suggested.

If you want to look into a "check-out/check-in" idea - I am not against 
it. I just ask that the result of a "checkout" be a feature collection. 
So the code you write for analysis can still be used for large scale work.

Cheers
Jody

>> A simpler API can be used to process features in place, the idea being
>> that you can construct a "chain" of operations and have a fun time.
>>
>>     
> I see Operation API over basic functionality with basic operations like
> ADD/MODIFY/REMOVE for features. FeatureStore, FeatureCollection, whatever
> like this provides basic functionality to work with external data store on
> the low-level, depending on the data store nature, but Operations API is on
> the top level for implementing of "business process" operations.
>   
Thinking through that, remember the Operations API I listed was a 
"proposal", I think the end result would be better made around 
FeatureCollections (as a whole) - rather then process Feature by 
Feature. But yes people would love a high level "analysis" pack called 
"Operations" - and they have taken a couple runs at it. So far the only 
useful thing is in uDig.
>> I am not against the idea of Operations, we use it in uDig to great
>> effect, but I am starting to think something at the FeatureCollection
>> level will be of more use, especially now that FeatureVisitor is defined
>> and used to great effect for aggregate functions showing the way to back
>> some operations into raw SQL while not breaking ObjectOriented
>> encapsulation.
>>
>> Jody
>> Cheers,
>> Jody
>>
>>
>> Vitali Diatchkov wrote:
>>     
>>> FeatureStore interface form some point is quite narrow. Try to explain
>>>       
>> use
>>     
>>> case.
>>>
>>> Modifications are restricted by set of methods like:
>>>
>>>     modifyFeatures(AttributeType[] type, Object[] value, Filter filter)
>>>
>>> This does not give enough flexibility to work with "detached" set of
>>> features (I use "Hibernate"'s term thinking it is good enough to
>>> characterize that behavior) - features that were requested from
>>>       
>> DataStore
>>     
>>> and put into the memory for some processing, whatever. Quite complex
>>> processing may be performed over them, various attributes  may be
>>>       
>> modified,
>>     
>>> etc (except FIDs of course - they are kind of non-modifiable entities -
>>>       
>> keys
>>     
>>> - by which the "detached" set can be bound ("attached") again to the
>>> external data store later.
>>> So I would like to request set of features, "detach" them from data
>>>       
>> store,
>>     
>>> perform arbitrary modifications, then update. I would like to have the
>>> functionality in FeatureStore to pass a collection of "detached"
>>>       
>> features
>>     
>>> (through any collection interface for features, abstractly now) to
>>>       
>> update
>>     
>>> them.
>>>
>>> Now I am restricted by modifyFeatures(..) method that I have to call
>>> multiple times. The problem here that there is no way to perform batch
>>> updating of features that improve performance of this use case
>>> significantly. (Just take a JDBC case  to imagine). Each feature has a
>>>       
>> FID,
>>     
>>> we have FIDMapper in JDBC case, so always we can reconstruct connection
>>> between feature in external data store and feature in "detached" set -
>>>       
>> don't
>>     
>>> see a problem here.
>>>
>>> What current implementation of FeatureStore. modifyFeatures(..) gives to
>>>       
>> us?
>>     
>>> It lets to just specify filter to request features to be updated and
>>>       
>> specify
>>     
>>> what attribute types and its values to update. A kind of batching update
>>>       
>> in
>>     
>>> case when the set of features must be updated by the same attribute
>>>       
>> values.
>>     
>>> But what if I have just various features has been requested on different
>>> stages of my business process, in each feature I modified various
>>>       
>> attribute
>>     
>>> values , etc. I want a method to pass a collection of features, their
>>>       
>> IDs
>>     
>>> are native, so we can reconstruct a connection with features in external
>>> data store. In JDBC case , for example, we can prepare UPDATE statement
>>>       
>> and
>>     
>>> perform updating of all features one by one with one prepared statement,
>>> etc.
>>>
>>> Most likely I see just one side and there are other points and reasons
>>>       
>> to
>>     
>>> have so restricted modifyFeatures(..) capabilities. From described use
>>>       
>> case
>>     
>>> point of view, not so much opportunities for various optimizations of
>>> updating with this design.
>>>
>>> But I would like to discuss that issue:)
>>>
>>> Regards, Vitali Diatchkov.
>>>
>>>
>>> ------------------------------------------------------------------------
>>>       
>> -
>>     
>>> Using Tomcat but need to do more? Need to support web services,
>>>       
>> security?
>>     
>>> Get stuff done quickly with pre-integrated technology to make your job
>>>       
>> easier
>>     
>>> Download IBM WebSphere Application Server v.1.0.1 based on Apache
>>>       
>> Geronimo
>>     
>>> http://sel.as-us.falkag.net/sel?cmd=lnk&kid0709&bid&3057&dat1642
>>> _______________________________________________
>>> Geotools-devel mailing list
>>> Geotools-devel@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/geotools-devel
>>>
>>>       
>>
>> -------------------------------------------------------------------------
>> Using Tomcat but need to do more? Need to support web services, security?
>> Get stuff done quickly with pre-integrated technology to make your job
>> easier
>> Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
>> http://sel.as-us.falkag.net/sel?cmd=lnk&kid0709&bid&3057&dat1642
>> _______________________________________________
>> Geotools-devel mailing list
>> Geotools-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/geotools-devel
>>     
>
>
>
> P.S. I will write couple of "fun" questions later, need time to think out..
>
>   



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Geotools-devel mailing list
Geotools-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-devel

Reply via email to