| setFilter() is used to show a feedback on features that match the given
filter (see the attached screenshot where the filter only match one of
the three points) 
 getLayer().getStyleBlackboard().put(ProjectBlackboardConstants.LAYER__DATA_QUERY,
filter); was what I were looking for, it "really" filters the features
(others are graphically hidden)
 
 Thanks for your help
 :-)
 
 Ugo Taddei a écrit :
 oh,
right. I knew I had seen this code somewhere in our app (we do data
filtering like described by Jacques):
  
 getLayer().getStyleBlackboard().put(ProjectBlackboardConstants.LAYER__DATA_QUERY,
filter);
 
 I thought it was layer.setFilter. So, what's setFilter for?
 
 Ugo
 
 Jesse Eichar wrote:
 
 Hi,
    
 We need to rename the packages from internal to something less
frightening.  When it comes to net.refractions.udig.project the
internal packages can be used but NOT the internal.impl packages.  The
idea was to make people reluctant to use the internal classes because
most of the things should be done with Commands not direct.  Commands
allow roll-back.  Problem was that for setting up maps and so on it is
annoying to do it through commands.
 
 As for filtering features I would recommend trying to make use of the
view work.  It has a couple bugs but in general works.  The way to do
it is to put a Filter on the styleblackboard with the key: 
net.refractions.udig.project.ProjectBlackboardConstants.ProjectBlackboardConstants.LAYER__DATA_QUERY
 
 Jesse
 
 On 19-Dec-08, at 10:24 AM, Jacques LESCOT wrote:
 
 
 Thanks for your quick answer.
      
 Unfortunately, I have still the same problem.
 I will try to reformulate : I have a table called LOCATION_POINT with
two fields (an ID and a LOCATION - the spatial information for the
geometry). I could have lot of datas (1000+) in this table and I would
like to retrieve ONLY the data with a given ID, and then show the
associated geometry (a Point in this case) on a Map.
 I want to execute a request llike SELECT * FROM LOCATION_POINT WHERE
ID="681"
 I think there should be a generic way to ask such a thing through
Geotools (any example on how this could be achieved on a ShapeFile ?
Assuming behavior should be the same with a database) using
request/filtering capabilities, but I can not figure out how to get it
working.
 
 Any clue ?
 
 Here are some inline comments on your last answser,
 
 Ugo Taddei a écrit :
 
 The Layer class is defined inside an internal package : should it be
directly used by clients ?Hello Jacques,
 
 you'll find a Layer.setFilter(Filter). This should work for you. But
you
 must set after
 
 
 
 ApplicationGIS.addLayersToMap(ApplicationGIS.getActiveMap(),
        The result of adding a Filter on a Layer is that all datas are
displayed, and those satisfying my filter are selected with a black
rectangle. My need is to filter datas before retrieving them from the
database.resourceList, 1, null, true);
 
 and not in the loop. That is, when you have the layer. The effect
should
 be the same, however, only it's a higher level approach. udig would
sort
 the issues with the actual data store out.
 
 
 
 You seem to be going too deep when you're
asking for a OracleDataStore.
        Yes you are probably right : no need to cast absolutely into an
OracleDataStore.It'd be interesting to know whether there's any performance benefit
from
 this. (I guess not.)
 
 
 
 Regards,
 Jacques
 
 Hope that helps.
        
 Cheers,
 
 Ugo
 
 Jacques LESCOT said:
 
 
 Hi uDig'gers ! I am new on the uDig
world and I am having some troubles
          _______________________________________________while trying to filter some datas from an Oracle database.
 
 I have a database that consist of a set of tables : three of them
 contain spatial informations. I am able to retrieve the whole content
of
 a given table, but now I would like to filter datas to be displayed on
a
 map : particularly, I would like to filter only geometries
corresponding
 to a given ID.
 
 Here is the snippet of code I got currently :
 
 IServiceFactory factory =
 CatalogPlugin.getDefault().getServiceFactory();
 for (IService service : factory.createService(params)) { // params
 is the map containing informations to connect to the database
 if( service.canResolve(OracleDataStore.class )){
 try {
 OracleDataStore database =
 service.resolve(OracleDataStore.class, new NullProgressMonitor());
 // This statement allows me to retrieve datas only for
 the LOCATION_POINT table ...
 FeatureSource<SimpleFeatureType, SimpleFeature>
 featureSource = database.getFeatureSource("LOCATION_POINT");
 // Add here filter [1]
 
 List<IGeoResource> resourceList = new
 ArrayList<IGeoResource>();
 for (IResolve nextElt : service.members(new
 NullProgressMonitor())) {
 if (nextElt instanceof IGeoResource) {
 resourceList.add((IGeoResource) nextElt);
 }
 }
 
 ApplicationGIS.addLayersToMap(ApplicationGIS.getActiveMap(),
 resourceList, 1, null, true);
 } catch (Exception e) {
 e.printStackTrace();
 }
 }
 }
 
 Then, I tried the following to only filter a particular row of my table
:
 
 // This code should go to the [1]
 FilterFactory ff = new FilterFactoryImpl();
 Filter myFilter =
 ff.id(Collections.singleton(ff.featureId("LOCATION_POINT.681")));
 
 ... but with no success :-/
 
 Any help would be appreciated.
 
 Regards,
 --
 Anyware Technologies <http://www.anyware-tech.com>
 *Jacques LESCOT*
 Project Manager
 Eclipse Technical Expert
 jacques.lescot@xxxxxxxxxxxxxxxx
<mailto:jacques.lescot@xxxxxxxxxxxxxxxx>
 Standard : +33(0)5 61 00 52 90
 Direct : +33(0)5 61 00 06 60
 Mobile : +33(0)6 74 49 23 34
 Fax : +33(0)5 61 00 51 46     *Anyware Technologies
 * Lake Park
 ZAC de l'Hers - Allée du Lac
 BP 87216
 31672 Labège Cedex
 France
 www.anyware-tech.com <http://www.anyware-tech.com>
 
 This message and any attachments (the "Message") are confidential and
 intended solely for the addressees.
 Any unauthorized modification, edition, use or dissemination is
 prohibited.
 Neither Anyware Technologies nor its headquarters Wavecom shall be
 liable for the Message if altered, changed, falsified or edited,
 diffused without authorization.
 _______________________________________________
 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
 
 
 --
 <Signature_AWT.jpg>   Jacques LESCOT
 Project Manager
 Eclipse Technical Expert
 jacques.lescot@xxxxxxxxxxxxxxxx
 Standard : +33(0)5 61 00 52 90
 Direct : +33(0)5 61 00 06 60
 Mobile : +33(0)6 74 49 23 34
 Fax : +33(0)5 61 00 51 46    Anyware Technologies
 Lake Park
 ZAC de l'Hers - Allée du Lac
 BP 87216
 31672 Labège Cedex
 France
 www.anyware-tech.com
 This message and any attachments (the "Message") are confidential and
intended solely for the addressees.
 Any unauthorized modification, edition, use or dissemination is
prohibited.
 Neither Anyware Technologies nor its headquarters Wavecom shall be
liable for the Message if altered, changed, falsified or edited,
diffused without authorization.
 _______________________________________________
 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
 
 
 
 
 --  
  
    This message and any attachments (the "Message") are confidential and
intended solely for the addressees.
      |   | 
        
          
            | Jacques LESCOT Project Manager
 Eclipse Technical Expert
 jacques.lescot@xxxxxxxxxxxxxxxx
 Standard : +33(0)5 61 00 52 90
 Direct : +33(0)5 61 00 06 60
 Mobile : +33(0)6 74 49 23 34
 Fax : +33(0)5 61 00 51 46
 | Anyware Technologies Lake Park
 ZAC de l'Hers - Allée du Lac
 BP 87216
 31672 Labège Cedex
 France
 www.anyware-tech.com
 |  |  Any unauthorized modification, edition, use or dissemination is
prohibited.
 Neither Anyware Technologies nor its headquarters Wavecom shall be
liable for the Message if altered, changed, falsified or edited,
diffused without authorization.
 |