Package org.locationtech.udig.project

Examples of org.locationtech.udig.project.EditManagerEvent


     */
    public void commitTransaction() throws IOException {
        // if (!isEditing() ) return; // check for edit events? May not arrive so lets do what the
        // user tells us

        fireEvent(new EditManagerEvent(this, EditManagerEvent.PRE_COMMIT, null, null));

        startCommitRollback("Comitting changes all layers in map");

        try {
            transaction.commitInternal();
            for (Layer layer : getMapInternal().getLayersInternal()) {
                if (layer.getFeatureChanges().size() != 0)
                    layer.getFeatureChanges().clear();
            }
        } catch (IOException e) {
            e.printStackTrace();
            FeatureIterator<SimpleFeature> reader = null;
            try {
                FeatureSource<SimpleFeatureType, SimpleFeature> source = editLayerInternal
                        .getResource(FeatureSource.class, null);
                FilterFactory filterFactory = CommonFactoryFinder.getFilterFactory(GeoTools
                        .getDefaultHints());
                FeatureCollection<SimpleFeatureType, SimpleFeature> results = source
                        .getFeatures(filterFactory.id(FeatureUtils.stringToId(filterFactory,
                                editFeature.getID())));
                reader = results.features();
                setEditFeature(reader.next(), editLayerInternal);
            } catch (Exception e2) {
                setEditFeature(null, null);
            } finally {
                if (reader != null) {
                    reader.close();
                }
            }
            ProjectPlugin.getPlugin().log(e);
        } finally {
            commitRollbackComplete();
        }

        fireEvent(new EditManagerEvent(this, EditManagerEvent.POST_COMMIT, null, null));

    }
View Full Code Here


     *
     * @throws IOException
     * @generated NOT
     */
    public void rollbackTransaction() throws IOException {
        fireEvent(new EditManagerEvent(this, EditManagerEvent.PRE_ROLLBACK, null, null));
        startCommitRollback("Rolling back to Previous checkpoint");

        HashMap<List<FeatureEvent>, FeatureEvent> modified = new HashMap<List<FeatureEvent>, FeatureEvent>();
        try {
            synchronized (this) {

                for (Layer layer : getMapInternal().getLayersInternal()) {
                    if (layer.getFeatureChanges().size() != 0) {
                        List<FeatureEvent> changes = layer.getFeatureChanges();
                        // create an event that notifies listeners that the area has changed again.
                        // calculate bounds of all the Changes to date.
                        // The reason for this is that otherwise I would have to make the entire
                        // viewport re-render on a rollback.
                        // TODO This is a workaround to get around that.
                        Envelope envelope = new Envelope();
                        for (FeatureEvent event : changes) {
                            envelope.expandToInclude(event.getBounds());
                        }
                        FeatureSource<SimpleFeatureType, SimpleFeature> source = layer.getResource(
                                FeatureSource.class, null);
                        FeatureEvent event = new FeatureEvent(source,
                                FeatureEvent.FEATURES_CHANGED, envelope);

                        modified.put(changes, event);
                    }
                }
            }
            if (selectedLayer != null)
                selectedLayer.setFilter(Filter.EXCLUDE);
            transaction.rollbackInternal();

        } catch (IOException e) {
            throw e;
        } finally {
            commitRollbackComplete();

            triggerLayerEvents(modified);

            setEditFeature(null, null);

            fireEvent(new EditManagerEvent(this, EditManagerEvent.POST_ROLLBACK, null, null));
        }
    }
View Full Code Here

TOP

Related Classes of org.locationtech.udig.project.EditManagerEvent

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.