Thanks a lot for the answer and I'm quite ashame ... I've found out my mistake. Actually, there's no 'ghost' problem. I just initialy created 2 features at the same place. That was my mistake... Sorry if I waste your precious time. On the other hand, some uDIG newbies could find my code example interesting to manipulate features via datastore.
2009/4/15 Jody Garnett <[email protected]> > uDig manages its own transaction; you know that right? If you would > like the transaction please contact the EditManager (it is available > via any tool or render context). This is the transaction that is > engaged when the user hits the commit or rollback buttons. > > When you ask a layer for a FeatureSource or FeatureStore this > transaction will be set prior to your code receiving it. The idea is > that your code should work directly against the featureStore API; and > the user should be able to run your code; and any other operations; > review the result prior to committing. > > Jody > > On Tue, Apr 14, 2009 at 10:05 PM, Rodolphe QUEMERAIS > <[email protected]> wrote: > > Hi all, > > > > I would be please if someone could help me to understand what's happening > on > > my layer... > > > > Actually, I created a layer and added a feature on it. I've programmed a > > visual tool with arrows that let me move my feature on screen. The > problem > > is, as I thought I created only one feature, a clone one has been created > > too. The cloned layer disappear if I refresh the screen but reappear if I > > move the othe feature over it... > > > > here are the code extract if that can help: > > > > To create a feature : > > Feature[] features = new Feature[1]; > > features[0] = feature; > > System.out.println("feature créé : "+ > > features[0].getID()); > > String featureTypeName = myLayer.getSchema().getTypeName(); > > try { > > > > FeatureSource source = > myLayer.getResource(FeatureSource.class, > > ProgressManager.instance().get()); > > DataStore dataStore = source.getDataStore(); > > > > FeatureStore store = (FeatureStore) > > dataStore.getFeatureSource(featureTypeName); > > store.setTransaction(transaction); > > store.addFeatures(DataUtilities.collection(features)); > > transaction.commit(); > > > > } catch (IOException e) { > > transaction.rollback(); > > e.printStackTrace(); > > } finally { > > transaction.close(); > > } > > > > To move the feature : > > > > DefaultTransaction transaction = new > DefaultTransaction("Example1"); > > > > try { > > FeatureStore store = (FeatureStore) > > dataStore.getFeatureSource(featureTypeName); > > > > store.setTransaction( transaction ); > > > > FilterFactory ff = FilterFactoryFinder.createFilterFactory(); > > //To filter only the selected feature, the featureId has > previously > > been captured > > FidFilter filter2 = ff.createFidFilter(); > > filter2.addFid(featureId); > > > > FeatureType featureType = store.getSchema(); > > > > AttributeType att = featureType.getDefaultGeometry(); > > //geo is the modified Geometry > > store.modifyFeatures(att, geo, filter2); > > transaction.commit(); > > System.out.println("Transaction effectué"); > > } catch (Exception e) { > > transaction.rollback(); > > System.out.println("Rollback effectué"); > > > > } finally { > > transaction.close(); > > } > > > > The 'cloned' feature ID is like new0 and the created feature ID is like > > fid-_61883d49_120a475c79a__7ffd > > I have the feeling that new0 is not in datastore and has only been > created > > on the graphic layer... but I'm not sure at all... > > Any suggestions ? > > > > > > _______________________________________________ > > 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 >
_______________________________________________ User-friendly Desktop Internet GIS (uDig) http://udig.refractions.net http://lists.refractions.net/mailman/listinfo/udig-devel
