Skip to main content

[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






Back to the top