[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| [udig-devel] Ghost feature on my layer | 
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 ?