Hey all,

This email is an overview of the Catalog system with lots of questions.

The Catalog+Tutorial needs some love. It's almost a great resource but
it needs some extra pointers and some reorganization. For example, it
has no overall introduction (what i have added is incomplete/wrong).
Also the "Implementing" section needs both an overview explaining the
pieces which need to be built and a modification of the skeletons which,
while they are great, need to be reorganized so we don't explain
resolve( * ) before the pieces which the method requires.


        The lines starting with a '*)' below are questions for someone
        to answer; the rest is my understanding which may be wrong, in
        which case hopefully someone will comment.

*************************************************************************
                   General Issues and Questions


Creating each piece:
-------------------
        Catalog:
                - new DefaultCatalog()
                
        ServiceFinder
                - new DefaultServiceFinder( myCatalog ) 
                *) new DefaultServiceFactory( myCatalog ) What's this?
                How is it different from DefaultServiceFinder? Is the
                finder to get the services originally and the factory to
                create the services from the catalog?
                
                
        Service:
                - via ServiceFinder.acquire(serviceURI)
                *) via the catalog? Does this require the use of
                Servicefactory.acquire(serviceURI) as in the Catalog
                +Tutorial (see below)? Is there another way?
                
        GeoResource
                - via ServiceFinder.acquire(resourceURI)
                *) via the catalog? Does this require the use of
                Servicefactory.acquire(resourceURI) as in the Catalog
                +Tutorial (see below)? Is there another way?

        *) Do we implicitly recommend that the user make a singleton
        Catalog? 
        
        *) We don't use FactoryFinder and Factories to create Catalog
        and ServiceFinder this module. Why not? I imagined the general
        idea for the Geotools library was always to use the
        FactoryFinder/Factory to easily transition to a GeoAPI setup
        where the user grabbed one FactoryFinder and could eventually
        get everything from that (be it Geotools or GeoAPI).
        
        *) Are there other approaches to the creation of these objects?


Populate the catalog:
--------------------
        - create the Catalog with new DefaultCatalog()
        - create a ServiceFinder with new(myCatalog)
        - create a List of services with
        ServiceFinder.acquire(serviceURI)
        - create a Service by getting the first element of the List
                *) might the List ever have more than one element?
        - add the service to the Catalog with Catalog.add(myService).


Use:
---
        Catalog
                - to search through the catalog services with .search()
                (see next)
                *) resolve( *) ? When would this be used?
        
        Service
                - to get a DataStore:
                        e.g. myService.resolve(DataStore.class)
                
        
        GeoResource
                - to get a FeatureSource/FeatureStore:
                        e.g. myGeoResource.resolve(FeatureSource.class)
                - to get the Service parent and use that to get a
                DataStore.
                        e.g. myService = myGeoResource.parent();
                             myService.resolve(DataStore.class)
        
        *) Are those the general idea?


Searching:
---------

I presume searching is only on the resources obtainable from services
contained in the Catalog. That is, search is not against any resources
on the internet, nor against resources hard coded in the Geotools
library's code, but against entries in the services which the user has
added to their Catalog.

*) Is that correct?

Search is presumably against the strings contained in the
GetCapabilities documents, in the shapefiles or in the GML. 

*) Is there anywhere an indication of what is being searched within the
different service types?

************************************************************************
                  Questions from the Catalog+Tutorial sections:


Using the Catalog
-----------------
        Populating the Catalog
        
                First code block:
                
                        *) Why don't we iterate through the list instead
                        of getting only the first element?
                                I would expect while list.hasNext() or
                                some such loop. Is there only ever a
                                single service returned? 
                        
                Second code block:
                
                        *) How can the hash map have three identical
                        keys?
                                I don't understand why we can reuse the
                                same key, 'WFSDataStoreFactory.URL.key',
                                each time in the hash map. Should not
                                this be
                                'DataStoreFactorySpi.Param.PASSWORD' and
                                its ilk?
                                
        Looking up Services and Resources in the Catalog
        
                First code block:
                
                        *) Should factory be finder?
                                We just got the List of services from a
                                ServiceFinder object above. Have we
                                really switched to a factory? What kind
                                of factory, a DefaultServiceFactory?
                                What's the difference?
                        
                Third code block:
                
                        *) The Resource should be GeoResource, correct?
                                Since there's no Resource in the Gt
                                2.2.0 API.
                                
                
Implementing Catalog Support:
----------------------------
        Implementing the Service
        
                The canResolve(Class) code block:
                
                        *) Why does canResolve(null) return false when
                        the first statement in resolve( * ) is a
                        perfectly good return of null? The Resolve
                        *will* resolve null to null. Not that it's
                        interesting.
                        
                        *) What does canResolve() tell you? It's only
                        telling you that if the internet weather is
                        right you *might* be able to get a class of the
                        kind you request, not that you *will* be able to
                        resolve() the object when you request for it,
                        correct? That is, your resolve() call could
                        still fail due to i/o, right? If so, what's the
                        defensive programming here?

Okay, enough for now (don't you agree). Thanks for any comments you may
have. Cheers, 
--adrian
                        


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Geotools-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-devel

Reply via email to