This extension point certainly seems reasonable Jody. I'm ok with
you implementing something like this. Should be pretty easy.
Take a look at the getResource(Class,monitor) method in LayerImpl.
Jesse.
Am 8-Sep-06 um 7:02 AM schrieb Jody Garnett:
A couple of requests for extension points have gone by recently:
- IResolveAdapterFactory - completed (thanks Jesse)
- IGeoCoder - for the location view to process
And I am about to request one more, but I am not sure how to phrase
it - basically as an application developer I want to hook into uDig
and be able to do the kinds of things it does (and I expect uDig to
use the same facilities it is offering me).
So here is the uDig functionality that I want to take part in:
- when you request a FeatureSource for a Layer, uDig will create
you one, and hook it up with a Transaction
Sine a Transaction completely holds the "state" for all geotools
data interaction this is all fine and good. But uDig goes the extra
mile and holds onto the FeatureSource so you can get back the exact
same instance next time. This is helpful when it holds onto other
resources for you (ie WMSLayer, something you made up, etc...). To
be open ended the layer "refresh" option should actually empty out
all these things, forcing renderer's and so on to fetch them from
the catalog again.
That is the background information, here is the activity I need to
take part in ....
- uDig constructs a FeatureSource, and performs some manipulations
on it before making it available for caching (ie uDig sets the
currentTransaction).
- I need in there in order to wrap the featureSource with my own
class before it is cached, and used by all uDig display and edit tools
So here is what I propose (note use of proxy rather then adapter as
we need to maintain the same interface):
interface LayerResourceProxy<R> {
public <R> proxy( ILayer layer, <R> resource);
}
The extension point XML will define the specific interface being
handled. For uDig to make use of the same facility it will need to
implement something like the following:
class TransactionResourceProxy implements
LayerResourceProxy<FeatureSource> {
public FeatureSource proxy( ILayer layer, FeatureSource
resource){
if( resource instanceof FeatureStore){
((FeatureStore)resource).setTransaction
( transaction ); // no idea where transaction is off the top of my
head
}
return resource;
}
}
Comments are welcome,
Jody
_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel
_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel