[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [udig-devel] refresh a catalog item
|
Hmmm. Have you checked in your code. I can try to help you debug.
Jesse
On Jul 24, 2007, at 2:56 AM, Andrea Antonello wrote:
I noticed one more thing by comparing the object ids that eclipse
shows
when debugging. In fact the first time the DecoratingLabelProvider
getText is called, the JGrassService is a new one, created by the
drag&drop event (let's say id = 5966). Instead when I expand the
three,
the getText is always (until I do not restart udig) called with a
JGrassService object of id = 5885, i.e. an old one.
So now I'm sure that the service is cached somewhere (I can imagine
that
gives nice performance on services with large number of items and/or
connections to perform), but the question is: where?
Ciao,
Andrea
Andrea Antonello probaly wrote:
Hmmm. I'm afraid I'm not sure what is happening. There is some
caching
of labels in the CatalogUIPlugin I think but I didn't think that
would
affect the structure of the tree.
I'm also afraid I don't know exactly what happens. I'm just now
debugging the CatalogTreeViewer and I'm getting mad.
When I drag my location (with two mapsets in it, but udig
remembers that
it had three, I just removed one) into the view, when it comes to
create
the labels for the entry, when it comes to the method:
getText(Object element) of the DecoratingLabelProvide the element
is in
fact a JGrassService and has 2 mapsets, which in this case it has to
have. So I'm glad and happy.
I click on the entry to expand the tree and what happens in the
DecoratingLabelProvide? I get also the nonexisting mapset. So I check
for the parent and get the JGrassService which was supposed to have 2
mapsets... but at that point it has 3! And I can't understand
where this
happens.
I hope I was able to explain myself a bit...
Any hint?
Andrea
Jesse
On Jul 23, 2007, at 9:34 AM, Andrea Antonello wrote:
Let me add something more: I debugged down the line and before
returning
from the most top members(monitor) method (i.e. the IService
method),
the array contains all the needed resources, which means they
are read.
The problem is, they are then not visualized. It "remebers" the
previous
tree. How can that be?
Andrea
Andrea Antonello probaly wrote:
Yes, I also think the ResetService could work, I just have to
struggle
with the fact that when I reload (i.e. remove and redrag into
catalog)
the JGrass service, it doesn't call the members method of the
nested
resources. Instead when udig restarts it goes indeep again. Is
there
some memory somewhere or is it my fault?
Andrea
Jesse Eichar probaly wrote:
Hi,
THe ServiceFactory.acquire() method creates a new instance of the
service but does not affect the catalog. It is just a
factory. You
could probably do a find on the catalog for the service you
want to
replace. Delete that service from the catalog and then put
the new
instance in the catalog. I have used the ResetService and can
verify
that it does do something. I think it even works :P.
Jesse
On Jul 23, 2007, at 8:30 AM, Andrea Antonello wrote:
Finally I got time to get into this and...it doesn't work.
I'm trying to understand if it all depends on a strange
behaviour
that I
notice. Perhaps someone can explaint that:
I open udig drag a grass location into the catalog and it reads
everything properly. So for example I have a location with
two mapsets
and nested inside the maps. Now I create a map in one mapset.
I remove
the service from the catalog and then drag the location into the
catalog
again. i thought it would read the whole thin g again, but it
remembers
something and the new map is not seen.
If I reastart udig, the map appears. So what does it remember
and
where?
For your info the part:
IServiceFactory locator = CatalogPlugin.getDefault()
.getServiceFactory();
List<IService> rereadService = locator.acquire(ID,
connectionParams);
in fact creates a proper service, but without internal
members. But by
triggering manually the members method on the members fills
everything
down the tree, so that should work. (in fact it doesn't since it
remembers the old tree)
Any hint?
Andrea
Jesse Eichar probaly wrote:
Trying to remember. Take a look at the ResetService class. It
essentially kicks the service so that the tree will be
loaded again.
Remember that there is a chance that there is a bug with
regards to
multi-level services since you are the trail-blazer here.
Jesse
On Jul 15, 2007, at 11:26 AM, Andrea Antonello wrote:
I need to add a created map to the catalog. That is easy with
shapefile
or so, but I can't figure out how to do that in a multilevel
service,
i.e. I want to add an entry to the JGrass location service,
which is
something similar in the level management to the WMS service.
Do I have to re-read it and if yes how do I trigger the re-
read of a
service? Is there a more performant way?
Ciao
Andrea
_______________________________________________
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