Revision 4236

View differences:

org.gvsig.topology/tags/org.gvsig.topology-1.0.69/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/buildNumber.properties
1
#Fri Jul 30 00:18:46 CEST 2021
2
buildNumber=75
org.gvsig.topology/tags/org.gvsig.topology-1.0.69/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/assembly/gvsig-plugin-package.xml
1
<!--
2

  
3
    gvSIG. Desktop Geographic Information System.
4

  
5
    Copyright (C) 2007-2013 gvSIG Association.
6

  
7
    This program is free software; you can redistribute it and/or
8
    modify it under the terms of the GNU General Public License
9
    as published by the Free Software Foundation; either version 3
10
    of the License, or (at your option) any later version.
11

  
12
    This program is distributed in the hope that it will be useful,
13
    but WITHOUT ANY WARRANTY; without even the implied warranty of
14
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
    GNU General Public License for more details.
16

  
17
    You should have received a copy of the GNU General Public License
18
    along with this program; if not, write to the Free Software
19
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
20
    MA  02110-1301, USA.
21

  
22
    For any additional information, do not hesitate to contact us
23
    at info AT gvsig.com, or visit our website www.gvsig.com.
24

  
25
-->
26
<assembly>
27
    <id>gvsig-plugin-package</id>
28
    <formats>
29
        <format>zip</format>
30
    </formats>
31
    <baseDirectory>${project.artifactId}</baseDirectory>
32
    <includeBaseDirectory>true</includeBaseDirectory>
33
    <files>
34
        <file>
35
            <source>target/${project.artifactId}-${project.version}.jar</source>
36
            <outputDirectory>lib</outputDirectory>
37
        </file>
38
        <file>
39
            <source>target/package.info</source>
40
        </file>
41
    </files>
42

  
43
    <fileSets>
44
        <fileSet>
45
            <directory>src/main/resources-plugin</directory>
46
            <outputDirectory>.</outputDirectory>
47
        </fileSet>
48
    </fileSets>
49

  
50

  
51
    <dependencySets>
52
        <dependencySet>
53
            <useProjectArtifact>false</useProjectArtifact>
54
            <useTransitiveDependencies>false</useTransitiveDependencies>
55
            <outputDirectory>lib</outputDirectory>
56
            <includes>
57
                <include>org.gvsig:org.gvsig.topology.lib.api</include>
58
                <include>org.gvsig:org.gvsig.topology.lib.impl</include>
59
                <include>org.gvsig:org.gvsig.topology.swing.api</include>
60
                <include>org.gvsig:org.gvsig.topology.swing.impl</include>
61
            </includes>
62
        </dependencySet>
63
    </dependencySets>
64

  
65
</assembly>
66

  
org.gvsig.topology/tags/org.gvsig.topology-1.0.69/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/java/org/gvsig/topology/app/mainplugin/DataSetsTreeModel.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.topology.app.mainplugin;
25

  
26
import java.util.Map;
27
import javax.swing.ImageIcon;
28
import javax.swing.event.TreeModelListener;
29
import javax.swing.tree.TreeModel;
30
import javax.swing.tree.TreePath;
31
import org.gvsig.andami.IconThemeHelper;
32
import org.gvsig.app.project.documents.view.ViewDocument;
33
import org.gvsig.fmap.dal.DALLocator;
34
import org.gvsig.fmap.dal.DataManager;
35
import org.gvsig.fmap.dal.DataStore;
36
import org.gvsig.fmap.mapcontext.MapContextLocator;
37
import org.gvsig.fmap.mapcontext.layers.FLayer;
38
import org.gvsig.fmap.mapcontext.layers.operations.SingleLayer;
39
import org.gvsig.fmap.mapcontrol.CompoundLayersTreeModel;
40
import org.gvsig.fmap.mapcontrol.MapControlLocator;
41
import org.gvsig.tools.swing.api.ListElement;
42
import org.gvsig.topology.lib.api.TopologyDataSet;
43
import org.gvsig.topology.lib.api.TopologyLocator;
44
import org.gvsig.topology.swing.api.TopologySwingServices;
45

  
46
/**
47
 *
48
 * @author jjdelcerro
49
 */
50
public class DataSetsTreeModel implements TreeModel {
51

  
52
    private final ViewDocument view;
53
    private final CompoundLayersTreeModel deletaged;
54
    private final TopologySwingServices services;
55
    private final ListElement<Object> root;
56
    
57
    public DataSetsTreeModel(TopologySwingServices services, ViewDocument view) {
58
        this.services = services;
59
        this.view = view;
60
        CompoundLayersTreeModel model = (CompoundLayersTreeModel) MapControlLocator.getMapControlManager().createCompoundLayersTreeModel();
61
        model.addLayers(view.getMapContext().getLayers());
62
        this.deletaged = model;
63
        this.root = new ListElement<>("Project", this.deletaged.getRoot());
64
                
65
    }
66
    
67
    private Object getNode(Object value) {
68
        if( value instanceof ListElement ) {
69
            return ((ListElement) value).getValue();
70
        }
71
        return value;
72
    }
73
    
74
    @Override
75
    public Object getRoot() {
76
        return this.root;
77
    }
78

  
79
    @Override
80
    public Object getChild(Object parent, int index) {
81
        parent = this.getNode(parent);
82
        Object x = this.deletaged.getChild(parent, index);
83
        if( x instanceof SingleLayer ) {
84
            SingleLayer layer = (SingleLayer)x;
85
            DataStore store = layer.getDataStore();
86
            x = TopologyLocator.getTopologyManager().createDataSet(
87
                    layer.getName(),
88
                    store
89
            );
90
        }
91
        return x;
92
    }
93

  
94
    @Override
95
    public int getChildCount(Object parent) {
96
        parent = this.getNode(parent);
97
        return this.deletaged.getChildCount(parent);
98
    }
99

  
100
    @Override
101
    public boolean isLeaf(Object node) {
102
        node = this.getNode(node);
103
        return this.deletaged.isLeaf(node);
104
    }
105

  
106
    @Override
107
    public void valueForPathChanged(TreePath path, Object newValue) {
108
        this.deletaged.valueForPathChanged(path, newValue);
109
    }
110

  
111
    @Override
112
    public int getIndexOfChild(Object parent, Object child) {
113
        parent = this.getNode(parent);
114
        return this.deletaged.getIndexOfChild(parent, child);
115
    }
116

  
117
    @Override
118
    public void addTreeModelListener(TreeModelListener l) {
119
        this.deletaged.addTreeModelListener(l);
120
    }
121

  
122
    @Override
123
    public void removeTreeModelListener(TreeModelListener l) {
124
        this.deletaged.removeTreeModelListener(l);
125
    }
126

  
127
    public ImageIcon getTreeIcon(Object item) {
128
        if( this.getRoot()==item ) {
129
            return IconThemeHelper.getImageIcon("topology-tree-project");
130
        }
131
        if (item instanceof ListElement) {
132
            item = ((ListElement) item).getValue();
133
        }
134
        if( this.view.getMapContext().getLayers()==item ) {
135
            return IconThemeHelper.getImageIcon("document-view-tree-icon");
136
        }
137
        if (item instanceof TopologyDataSet) {
138
            DataStore store = ((TopologyDataSet)item).getStore();
139
            String iconName = MapContextLocator.getMapContextManager().getIconLayer(store);
140
            return IconThemeHelper.getImageIcon(iconName);
141
        }
142
        if (item instanceof FLayer) {
143
            String iconName = ((FLayer) item).getTocImageIcon();
144
            return IconThemeHelper.getImageIcon(iconName);
145
        }
146
        return IconThemeHelper.getImageIcon("topology-tree-folder");
147
    }
148
    
149
}
org.gvsig.topology/tags/org.gvsig.topology-1.0.69/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/java/org/gvsig/topology/app/mainplugin/TopologyExtension.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.topology.app.mainplugin;
25

  
26
import java.awt.event.ActionEvent;
27
import java.awt.event.ActionListener;
28
import org.apache.commons.lang.StringUtils;
29
import org.gvsig.andami.IconThemeHelper;
30
import org.gvsig.andami.plugins.Extension;
31
import org.gvsig.app.ApplicationLocator;
32
import org.gvsig.app.ApplicationManager;
33
import org.gvsig.app.project.documents.Document;
34
import org.gvsig.app.project.documents.view.ViewDocument;
35
import org.gvsig.app.project.documents.view.ViewManager;
36
import org.gvsig.tools.ToolsLocator;
37
import org.gvsig.tools.i18n.I18nManager;
38
import org.gvsig.tools.swing.api.ToolsSwingLocator;
39
import org.gvsig.tools.swing.api.windowmanager.Dialog;
40
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
41
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
42
import org.gvsig.topology.lib.api.TopologyLocator;
43
import org.gvsig.topology.lib.api.TopologyManager;
44
import org.gvsig.topology.lib.api.TopologyPlan;
45
import org.gvsig.topology.swing.api.JTopologyPlanProperties;
46
import org.gvsig.topology.swing.api.JTopologyReport;
47
import org.gvsig.topology.swing.api.TopologySwingLocator;
48
import org.gvsig.topology.swing.api.TopologySwingManager;
49

  
50
/**
51
 *
52
 * @author jjdelcerro
53
 */
54
public class TopologyExtension extends Extension {
55

  
56
    @Override
57
    public void initialize() {
58
        
59
    }
60

  
61
    @Override
62
    public void postInitialize() {
63
        AppTopologyServices services = new AppTopologyServices();
64
        
65
        TopologyManager manager = TopologyLocator.getTopologyManager();
66
        manager.setDefaultServices(services);
67
        
68
        TopologySwingManager swingManager = TopologySwingLocator.getTopologySwingManager();
69
        swingManager.setDefaultServices(services);
70
  
71
        IconThemeHelper.registerIcon("document", "document-view-tree-icon", this);
72
        IconThemeHelper.registerIcon("topology", "topology-tree-folder", this);
73
        IconThemeHelper.registerIcon("topology", "topology-tree-project", this);
74
    }
75

  
76
    
77
    @Override
78
    public void execute(String action) {
79
        if( StringUtils.equalsIgnoreCase("tools-topology-create-or-modify", action) ) {
80
            I18nManager i18n = ToolsLocator.getI18nManager();
81
            ApplicationManager application = ApplicationLocator.getManager();
82
            final ViewDocument view = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
83
            if( view==null ) {
84
                // TODO: Mensaje de se necesita una vista 
85
                return;
86
            }
87
            TopologyManager manager = TopologyLocator.getTopologyManager();
88
            TopologySwingManager swingManager = TopologySwingLocator.getTopologySwingManager();
89
            WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
90
            
91
            final JTopologyPlanProperties panel = swingManager.createJTopologyPlan();
92

  
93
            TopologyPlan plan = manager.createTopologyPlan();
94
            String jsonPlan = (String) view.getProperty("TopologyPlan");
95
            if( !StringUtils.isEmpty(jsonPlan) ) {
96
                plan.fromJSON(jsonPlan);
97
            } 
98
            panel.put(plan);
99
            
100
            final Dialog dlg = winManager.createDialog(
101
                    panel.asJComponent(),
102
                    i18n.getTranslation("_Topology_plan"),
103
                    null, 
104
                    WindowManager_v2.BUTTONS_OK_CANCEL
105
            );
106
            dlg.addActionListener(new ActionListener() {
107
                @Override
108
                public void actionPerformed(ActionEvent e) {
109
                    if( dlg.getAction()==WindowManager_v2.BUTTON_OK ) {
110
                        TopologyPlan plan = panel.fetch(null);
111
                        view.setProperty("TopologyPlan", plan.toJSON().toString());
112
                    }
113
                }
114
            });
115
            dlg.show(WindowManager.MODE.WINDOW);
116

  
117
        } else if( StringUtils.equalsIgnoreCase("tools-topology-execute", action) ) {
118
            I18nManager i18n = ToolsLocator.getI18nManager();
119
            ApplicationManager application = ApplicationLocator.getManager();
120
            final ViewDocument view = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
121
            if( view==null ) {
122
                // TODO: Mensaje de se necesita una vista 
123
                return;
124
            }
125
            TopologyManager manager = TopologyLocator.getTopologyManager();
126
            final TopologySwingManager swingManager = TopologySwingLocator.getTopologySwingManager();
127
            final WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
128
            
129

  
130
            String jsonPlan = (String) view.getProperty("TopologyPlan");
131
            if( StringUtils.isEmpty(jsonPlan) ) {
132
                // TODO: Mensaje de crear plan
133
                return;
134
            }
135
           
136
            final TopologyPlan plan = manager.createTopologyPlan();
137
            plan.fromJSON(jsonPlan);
138
            JTopologyReport panel = swingManager.createJTopologyReport(plan);
139
            panel.put(plan);
140
            winManager.showWindow(
141
                    panel.asJComponent(), 
142
                    i18n.getTranslation("_Topology_plan_error_inspector") + " ("+plan.getName()+")",
143
                    WindowManager.MODE.TOOL
144
            );
145

  
146
            Thread th = new Thread(new Runnable() {
147
                @Override
148
                public void run() {
149
                    plan.execute();
150
                }
151
            }, "TopologyPlan-"+ plan.getName());
152
            th.start();
153
        }
154
    }
155

  
156
    @Override
157
    public boolean isEnabled() {
158
        ApplicationManager application = ApplicationLocator.getManager();
159
        Document view = application.getActiveDocument(ViewManager.TYPENAME);
160
        return view!=null;
161
    }
162

  
163
    @Override
164
    public boolean isVisible() {
165
        return true;
166
    }
167
    
168
}
org.gvsig.topology/tags/org.gvsig.topology-1.0.69/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/java/org/gvsig/topology/app/mainplugin/AppTopologyServices.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.topology.app.mainplugin;
25

  
26
import java.io.File;
27
import java.util.ArrayList;
28
import java.util.HashMap;
29
import java.util.List;
30
import java.util.Map;
31
import javax.swing.DefaultListModel;
32
import javax.swing.ImageIcon;
33
import javax.swing.ListModel;
34
import javax.swing.tree.TreeModel;
35
import org.apache.commons.lang3.mutable.Mutable;
36
import org.apache.commons.lang3.mutable.MutableObject;
37
import org.gvsig.andami.IconThemeHelper;
38
import org.gvsig.andami.PluginsLocator;
39
import org.gvsig.app.ApplicationLocator;
40
import org.gvsig.app.ApplicationManager;
41
import org.gvsig.app.project.Project;
42
import org.gvsig.app.project.documents.Document;
43
import org.gvsig.app.project.documents.table.TableDocument;
44
import org.gvsig.app.project.documents.table.TableManager;
45
import org.gvsig.app.project.documents.view.ViewDocument;
46
import org.gvsig.app.project.documents.view.ViewManager;
47
import org.gvsig.fmap.dal.EditingNotification;
48
import org.gvsig.fmap.dal.EditingNotificationManager;
49
import org.gvsig.fmap.dal.feature.FeatureStore;
50
import org.gvsig.fmap.dal.swing.DALSwingLocator;
51
import org.gvsig.fmap.geom.Geometry;
52
import org.gvsig.fmap.geom.aggregate.MultiCurve;
53
import org.gvsig.fmap.geom.aggregate.MultiPoint;
54
import org.gvsig.fmap.geom.aggregate.MultiSurface;
55
import org.gvsig.fmap.geom.primitive.Curve;
56
import org.gvsig.fmap.geom.primitive.Envelope;
57
import org.gvsig.fmap.geom.primitive.Point;
58
import org.gvsig.fmap.geom.primitive.Surface;
59
import org.gvsig.fmap.mapcontext.MapContext;
60
import org.gvsig.fmap.mapcontext.MapContextLocator;
61
import org.gvsig.fmap.mapcontext.ViewPort;
62
import org.gvsig.fmap.mapcontext.events.ColorEvent;
63
import org.gvsig.fmap.mapcontext.events.ExtentEvent;
64
import org.gvsig.fmap.mapcontext.events.ProjectionEvent;
65
import org.gvsig.fmap.mapcontext.events.listeners.ViewPortListener;
66
import org.gvsig.fmap.mapcontext.layers.FLayer;
67
import org.gvsig.fmap.mapcontext.layers.FLayers;
68
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
69
import org.gvsig.fmap.mapcontext.layers.vectorial.GraphicLayer;
70
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
71
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol_v2;
72
import org.gvsig.fmap.mapcontrol.MapControlLocator;
73
import org.gvsig.fmap.mapcontrol.swing.dynobject.DynObjectEditor;
74
import org.gvsig.tools.dynobject.DynObject;
75
import org.gvsig.tools.exception.BaseException;
76
import org.gvsig.tools.observer.Observable;
77
import org.gvsig.tools.observer.Observer;
78
import org.gvsig.tools.swing.api.ListElement;
79
import org.gvsig.tools.visitor.VisitCanceledException;
80
import org.gvsig.tools.visitor.Visitor;
81
import org.gvsig.topology.lib.api.TopologyDataSet;
82
import org.gvsig.topology.lib.api.TopologyLocator;
83
import org.gvsig.topology.lib.api.TopologyManager;
84
import org.gvsig.topology.swing.api.TopologySwingServices;
85
import org.slf4j.Logger;
86
import org.slf4j.LoggerFactory;
87

  
88
/**
89
 *
90
 * @author jjdelcerro
91
 */
92
@SuppressWarnings("UseSpecificCatch")
93
public class AppTopologyServices implements TopologySwingServices {
94

  
95
    private static final Logger LOGGER = LoggerFactory.getLogger(AppTopologyServices.class);
96

  
97
    private class WorkingAreaViewPortListener implements ViewPortListener {
98

  
99
        private WorkingAreaChangedListener workingAreaChangedListener;
100
        private ViewPort viewPort;
101

  
102
        public WorkingAreaViewPortListener(ViewPort viewPort, WorkingAreaChangedListener workingAreaChangedListener) {
103
            this.workingAreaChangedListener = workingAreaChangedListener;
104
            this.viewPort = viewPort;
105
        }
106

  
107
        public ViewPort getViewPort() {
108
            return this.viewPort;
109
        }
110

  
111
        @Override
112
        public void extentChanged(ExtentEvent e) {
113
            this.workingAreaChangedListener.workingAreaChanged(e.getNewExtent());
114
        }
115

  
116
        @Override
117
        public void backColorChanged(ColorEvent e) {
118
        }
119

  
120
        @Override
121
        public void projectionChanged(ProjectionEvent e) {
122
        }
123
    }
124

  
125
    private class EditingNotificationObserver implements Observer {
126

  
127
        public EditingNotificationObserver() {
128

  
129
        }
130

  
131
        @Override
132
        public void update(Observable o, Object notification) {
133
            EditingNotification n = (EditingNotification) notification;
134
            if (n.isCancelable() && n.getFeature() != null) {
135
                try {
136
                    DynObject data = n.getFeature().getAsDynObject();
137
                    DynObjectEditor editor = new DynObjectEditor(data);
138
                    editor.setTitle("Topology - " + n.getFeature().getType().getName());
139
                    editor.editObject(true);
140
                    if (editor.isCanceled()) {
141
                        n.cancel();
142
                    } else {
143
                        editor.getData(data);
144
                    }
145
                } catch (Exception ex) {
146
                    LOGGER.warn("Problems showing the feature in a form.", ex);
147
                }
148
            }
149
        }
150
    }
151

  
152
    private Map<WorkingAreaChangedListener, WorkingAreaViewPortListener> workingAreaListener;
153
    private ISymbol errorPolygonSymbol = null;
154
    private ISymbol errorPointSymbol = null;
155
    private ISymbol errorLineSymbol = null;
156
    private EditingNotificationObserver editingNotificationObserver = null;
157

  
158
    public AppTopologyServices() {
159
        this.workingAreaListener = new HashMap<>();
160
    }
161

  
162
    @Override
163
    public TreeModel getDataSetTreeModel() {
164
        ApplicationManager application = ApplicationLocator.getManager();
165
        ViewDocument view = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
166
        return new DataSetsTreeModel(this, view);
167
    }
168

  
169
    @Override
170
    public ListModel getTablesListModel() {
171
        ApplicationManager application = ApplicationLocator.getManager();
172
        Project project = application.getCurrentProject();
173
        TopologyManager manager = TopologyLocator.getTopologyManager();
174
        
175
        DefaultListModel<TopologyDataSet> model = new DefaultListModel<TopologyDataSet>();
176
        
177
        List<Document> docs = project.getDocuments(TableManager.TYPENAME);
178
        for (Document doc : docs) {
179
            TableDocument table=(TableDocument) doc;
180
            TopologyDataSet dataset = manager.createDataSet(table.getName(), table.getFeatureStore());
181
            model.addElement(dataset);   
182
        }
183
        return model;
184
    }
185
    
186
    
187

  
188
    @Override
189
    public FeatureStore getFeatureStore(final TopologyDataSet dataSet) {
190
        final Mutable<FeatureStore> store = new MutableObject<>();
191
        store.setValue(null);
192

  
193

  
194
        ApplicationManager application = ApplicationLocator.getManager();
195
        Project project = application.getCurrentProject();
196

  
197
        List<Document> views = new ArrayList<>();
198
        views.add(project.getActiveDocument(ViewManager.TYPENAME));
199
//        views.addAll(project.getDocuments(ViewManager.TYPENAME));
200

  
201
        for (Document view : views) {
202
            if (view == null) {
203
                continue;
204
            }
205
            FLayers layers = ((ViewDocument) view).getMapContext().getLayers();
206
            try {
207
                layers.accept(new Visitor() {
208
                    @Override
209
                    public void visit(Object o) throws VisitCanceledException, BaseException {
210
                        if (o instanceof FLyrVect) {
211
                            FLyrVect layer = (FLyrVect) o;
212
                            if (dataSet.isThisStore(layer.getFeatureStore())) {
213
                                store.setValue(layer.getFeatureStore());
214
                                throw new VisitCanceledException();
215
                            }
216
                        }
217
                    }
218
                });
219
            } catch (VisitCanceledException ex) {
220
                break;
221
            } catch (Exception ex) {
222
                throw new RuntimeException(ex);
223
            }
224
        }
225
        if (store.getValue()==null){
226
            for (Document document : project.getDocuments(TableManager.TYPENAME)) {
227
                TableDocument table= (TableDocument) document;
228
                if (dataSet.isThisStore(table.getFeatureStore())) {
229
                    store.setValue(table.getFeatureStore());
230
                    break;
231
                }   
232
            } 
233
        }
234
        return store.getValue();
235
    }
236

  
237
    @Override
238
    public void zoomTo(Envelope envelope) {
239
        ApplicationManager application = ApplicationLocator.getManager();
240
        ViewDocument viewdoc = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
241
        if (viewdoc == null) {
242
            return;
243
        }
244
        ViewPort viewPort = viewdoc.getMapContext().getViewPort();
245
        viewPort.setEnvelope(envelope);
246
    }
247

  
248
    @Override
249
    public void refreshView() {
250
        try {
251
            ApplicationManager application = ApplicationLocator.getManager();
252
            ViewDocument viewdoc = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
253
            if (viewdoc == null) {
254
                return;
255
            }
256
            viewdoc.getMapContext().invalidate();
257
        } catch (Exception ex) {
258
            LOGGER.warn("Cant refresh view", ex);
259
        }
260
    }
261

  
262
    @Override
263
    public void centerTo(Point point) {
264
        try {
265
            ApplicationManager application = ApplicationLocator.getManager();
266
            ViewDocument viewdoc = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
267
            if (viewdoc == null) {
268
                return;
269
            }
270
            ViewPort viewPort = viewdoc.getMapContext().getViewPort();
271
            Envelope envelope = (Envelope) viewPort.getEnvelope().clone();
272
            envelope.centerTo(point);
273
            viewPort.setEnvelope(envelope);
274
        } catch (Exception ex) {
275
            LOGGER.warn("Cant center view", ex);
276
        }
277
    }
278

  
279
    @Override
280
    public Envelope getWorkingArea() {
281
        ApplicationManager application = ApplicationLocator.getManager();
282
        ViewDocument viewdoc = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
283
        if (viewdoc == null) {
284
            return null;
285
        }
286
        ViewPort viewPort = viewdoc.getMapContext().getViewPort();
287
        return viewPort.getEnvelope();
288
    }
289

  
290
    @Override
291
    public void addWorkingAreaChangedListener(WorkingAreaChangedListener listener) {
292
        ApplicationManager application = ApplicationLocator.getManager();
293
        ViewDocument viewdoc = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
294
        if (viewdoc == null) {
295
            return;
296
        }
297
        ViewPort viewPort = viewdoc.getMapContext().getViewPort();
298
        WorkingAreaViewPortListener viewPortListener = this.workingAreaListener.get(listener);
299
        if (viewPortListener == null) {
300
            viewPortListener = new WorkingAreaViewPortListener(viewPort, listener);
301
            this.workingAreaListener.put(listener, viewPortListener);
302
        } else {
303
            if (viewPort != viewPortListener.getViewPort()) {
304
                viewPortListener.getViewPort().removeViewPortListener(viewPortListener);
305
                viewPortListener = new WorkingAreaViewPortListener(viewPort, listener);
306
                this.workingAreaListener.put(listener, viewPortListener);
307
            }
308
        }
309
        viewPortListener.getViewPort().addViewPortListener(viewPortListener);
310
    }
311

  
312
    @Override
313
    public void removeWorkingAreaChangedListener(WorkingAreaChangedListener listener) {
314
        WorkingAreaViewPortListener viewPortListener = this.workingAreaListener.get(listener);
315
        if (viewPortListener == null) {
316
            return;
317
        }
318
        viewPortListener.getViewPort().removeViewPortListener(viewPortListener);
319
    }
320

  
321
    @Override
322
    public void addError(Geometry geom) {
323
        if (this.errorPointSymbol == null) {
324
            try {
325
                File pluginfolder = PluginsLocator.getManager().getPlugin(this).getPluginDirectory();
326
                File folder = new File(pluginfolder, "symbols");
327
                ISymbol[] symbols = MapContextLocator.getSymbolManager().loadSymbols(folder);
328
                for (ISymbol symbol : symbols) {
329
                    if (symbol instanceof ISymbol_v2) {
330
                        String symbolid = ((ISymbol_v2) symbol).getID();
331
                        switch(symbolid) {
332
                            case "topology-error-polygon":
333
                                this.errorPolygonSymbol = symbol;
334
                                break;
335
                            case "topology-error-line":
336
                                this.errorLineSymbol = symbol;
337
                                break;
338
                            case "topology-error-point":
339
                                this.errorPointSymbol = symbol;
340
                                break;
341
                        }
342
                    }
343
                }
344
            } catch (Exception ex) {
345
            }
346
        }
347
        ApplicationManager application = ApplicationLocator.getManager();
348
        ViewDocument viewdoc = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
349
        MapContext mapContext = viewdoc.getMapContext();
350
        GraphicLayer gl = mapContext.getGraphicsLayer();
351
        gl.removeGraphics("topology-errors");
352
        if ( geom!=null ) {
353
            ISymbol symbol = null;
354
            if( geom instanceof Point || geom instanceof MultiPoint) {
355
                symbol = this.errorPointSymbol;
356
            } else if( geom instanceof Curve || geom instanceof MultiCurve ) {
357
                symbol = this.errorLineSymbol;
358
            } else if( geom instanceof Surface || geom instanceof MultiSurface ) {
359
                symbol = this.errorPolygonSymbol;
360
            }
361
            if (symbol != null) {
362
                int symbolid = gl.getSymbolId(symbol);
363
                if (symbolid < 0) {
364
                    gl.addSymbol(symbol);
365
                    symbolid = gl.getSymbolId(symbol);
366
                }
367
                gl.addGraphic("topology-errors", geom, symbolid);
368
            }
369
        }
370
        mapContext.invalidate();
371
    }
372

  
373
    @Override
374
    public void setShowFormWhenEdit(boolean showFormWhenEdit) {
375
        if (this.editingNotificationObserver == null) {
376
            this.editingNotificationObserver = new EditingNotificationObserver();
377
        }
378
        EditingNotificationManager editingNotificationManager = DALSwingLocator.getEditingNotificationManager();
379
        if (showFormWhenEdit) {
380
            editingNotificationManager.addObserver(this.editingNotificationObserver);
381
        } else {
382
            editingNotificationManager.deleteObserver(this.editingNotificationObserver);
383
        }
384
    }
385

  
386
    @Override
387
    public ImageIcon getTreeIcon(TreeModel model, Object item) {
388
        return ((DataSetsTreeModel)model).getTreeIcon(item);
389
    }
390

  
391
}
org.gvsig.topology/tags/org.gvsig.topology-1.0.69/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/resources-plugin/config.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<!-- gvSIG. Desktop Geographic Information System. Copyright (C) 2007-2014 gvSIG
3
  Association. This program is free software; you can redistribute it and/or modify
4
  it under the terms of the GNU General Public License as published by the Free Software
5
  Foundation; either version 3 of the License, or (at your option) any later version.
6
  This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
7
  without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
8
  PURPOSE. See the GNU General Public License for more details. You should have received
9
  a copy of the GNU General Public License along with this program; if not, write to
10
  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
11
  USA. For any additional information, do not hesitate to contact us at info AT gvsig.com,
12
  or visit our website www.gvsig.com. -->
13
<plugin-config>
14
  <depends plugin-name="org.gvsig.app.mainplugin" />
15
  <depends plugin-name="org.gvsig.app.document.table.app.mainplugin" />
16
  <resourceBundle name="text" />
17
  <libraries library-dir="lib" />
18
  <extensions>
19

  
20

  
21
    <extension class-name="org.gvsig.topology.app.mainplugin.TopologyExtension"
22
      description="" active="true" priority="1">
23
            <action 
24
                name="tools-topology-create-or-modify"
25
                label="_Show_create_or_edit_topology_plan" 
26
                position="908300100"  
27
                tooltip="_Show_create_or_edit_topology_plan" 
28
                action-command="tools-topology-create-or-modify"
29
                icon="tools-topology-create-or-modify"
30
                accelerator=""
31
            />
32
            <action 
33
                name="tools-topology-execute"
34
                label="_Execute_topology_plan" 
35
                position="908300200"  
36
                tooltip="_Execute_topology_plan" 
37
                action-command="tools-topology-execute"
38
                icon="tools-topology-execute"
39
                accelerator=""
40
            />
41

  
42
            <menu text="tools/_Topology"
43
                              position="908300000" 
44
                              is_separator="true"/>
45
            <menu text="tools/_Topology/_Create_or_edit_plan" 
46
                              name="tools-topology-create-or-modify"/>
47
            <menu text="tools/_Topology/_Execute_plan" 
48
                              name="tools-topology-execute"/>
49
				
50
            <!--
51
            <tool-bar name="topology" position="2000">
52
                <action-tool name="tools-topology-create-or-modify"/>				
53
                <action-tool name="tools-topology-execute"/>				
54
            </tool-bar>                    
55
            -->
56
    </extension>
57

  
58

  
59
  </extensions>
60
</plugin-config>
org.gvsig.topology/tags/org.gvsig.topology-1.0.69/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/resources-plugin/i18n/text.properties
1
#Translations for language [es]
2
#Thu Nov 20 10:10:09 CET 2014
3
_Topology=Topologia
4
_Create_or_edit_plan=Crear o modificar plan
5
_Execute_plan=Ejecutar plan
6
_Topology_plan_error_inspector=Inspector de errores del Plan de topologia
7
_Topology_plan=Plan de topologia
8
_Show=Mostrar
9
_Show_errors=Mostrar errores
10
_Show_exceptions=Mostrar excepciones
11
_Show_only_in_visible_extent=Mostrar solo en el area visible
12
_Show_form_when_modify_geometry=Mostrar formulario al modificar la geometria
13
_Zoom=Zoom
14
Center_geometry=Centrar geometria
15
_Center_error=Centrar error
16
_Actions=Acciones
17
_Action=Acci\u00f3n
18
_Update=Actualizar
19
_Name=Nombre
20
_Tolerance=Tolerancia
21
_DataSets=Conjuntos de datos
22
_Dataset1=Conjunto de datos1
23
_Dataset2=Conjunto de datos2
24
_Rules=Reglas
25
_Remove_dataset=Eliminar conjunto de datos
26
_Add_dataset=A\u00f1adir conjunto de datos
27
_Remove_rule=Eliminar regla
28
_Add_rule=A\u00f1adir regla
29
_Edit_rule=Modificar regla
30
_Contains_Point=Contiene punto
31
_Primary_dataset=Conjunto de datos primario
32
_Secondary_dataset=Conjunto de datos secundario
33
_Rule=Regla
34
_Add_new_rule=A\u00f1adir nueva regla
35
_Exception=Excepcion
36
_Errors=Errores
37
_Parameters=Parametros
38
_Accept=Aceptar
39
_Execute=Ejecutar
40
_Any_rule=Cualquier regla
41
_Erase_error_marks=Eliminar marcas de errores
42
_Select_a_dataset=Seleccione un conjunto de datos
org.gvsig.topology/tags/org.gvsig.topology-1.0.69/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/resources-plugin/i18n/text_en.properties
1
#Translations for language [en]
2
#Thu Nov 20 10:10:15 CET 2014
3
_Topology=Topology
4
_Create_or_edit_plan=Create or edit plan
5
_Execute_plan=Execute plan
6
_Topology_plan_error_inspector=Topology plan error inspector
7
_Topology_plan=Topology plan
8
_Show=Show
9
_Show_errors=Show errors
10
_Show_exceptions=Show exceptions
11
_Show_only_in_visible_extent=Show only in visible extent
12
_Show_form_when_modify_geometry=Show form when modify geometry
13
_Zoom=Zoom
14
_Center_geometry=Center geometry
15
_Center_error=Center error
16
_Actions=Actions
17
_Action=Action
18
_Update=Update
19
_Name=Name
20
_Tolerance=Tolerance
21
_DataSets=Datasets
22
_Dataset1=Dataset1
23
_Dataset2=Dataset2
24
_Rules=Rules
25
_Remove_dataset=Remove dataset
26
_Add_dataset=Add dataset
27
_Remove_rule=Remove rule
28
_Add_rule=Add rule
29
_Edit_rule=Edit rule
30
_Primary_dataset=Primary dataset
31
_Secondary_dataset=Secondary dataset
32
_Rule=Rule
33
_Add_new_rule=Add new rule
34
_Exception=Exception
35
_Errors=Errors
36
_Parameters=Parameters
37
_Accept=Accept
38
_Execute=Execute
39
_Any_rule=Any rule
40
_Erase_error_marks=Erase error marks
41
_Select_a_dataset=Select a dataset
org.gvsig.topology/tags/org.gvsig.topology-1.0.69/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/pom.xml
1
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
2
  <modelVersion>4.0.0</modelVersion>
3
  <parent>
4
    <groupId>org.gvsig</groupId>
5
    <artifactId>org.gvsig.topology.app</artifactId>
6
    <version>1.0.69</version>
7
  </parent>
8
  <artifactId>org.gvsig.topology.app.mainplugin</artifactId>
9
  <name>${project.artifactId}</name>
10
  <dependencies>
11
    <dependency>
12
        <groupId>org.gvsig</groupId>
13
        <artifactId>org.gvsig.app.mainplugin</artifactId>
14
        <scope>compile</scope>
15
    </dependency>
16
    <dependency>
17
    	<groupId>org.gvsig</groupId>
18
    	<artifactId>org.gvsig.topology.lib.api</artifactId>
19
        <scope>compile</scope>
20
    </dependency>
21
    <dependency>
22
    	<groupId>org.gvsig</groupId>
23
    	<artifactId>org.gvsig.topology.lib.impl</artifactId>
24
        <scope>runtime</scope>
25
    </dependency>
26
    <dependency>
27
    	<groupId>org.gvsig</groupId>
28
    	<artifactId>org.gvsig.topology.swing.api</artifactId>
29
        <scope>compile</scope>
30
    </dependency>
31
    <dependency>
32
    	<groupId>org.gvsig</groupId>
33
    	<artifactId>org.gvsig.topology.swing.impl</artifactId>
34
        <scope>runtime</scope>
35
    </dependency>
36
    <dependency>
37
      <groupId>org.gvsig</groupId>
38
      <artifactId>org.gvsig.app.document.table.app.mainplugin</artifactId>
39
      <scope>compile</scope>
40
    </dependency>
41
  </dependencies>
42

  
43
  <properties>
44
    <gvsig.package.info.state>testing</gvsig.package.info.state>
45
    <gvsig.package.info.official>true</gvsig.package.info.official>
46
    <gvsig.package.info.dependencies>required: org.gvsig.app -ge 2.2.0</gvsig.package.info.dependencies>
47
    <gvsig.package.info.categories />
48
    <gvsig.package.info.name>Topology framework</gvsig.package.info.name>
49
    <gvsig.package.info.description>Topology framework and basic rules</gvsig.package.info.description>
50
    <gvsig.package.info.owner>gvSIG Association</gvsig.package.info.owner>
51
    <gvsig.package.info.javaVM>j1_8</gvsig.package.info.javaVM>
52
    <gvsig.package.info.sourcesURL>${project.scm.url}</gvsig.package.info.sourcesURL>
53
    <gvsig.package.info.poolURL>https://devel.gvsig.org/download/projects/gvsig-topology/pool</gvsig.package.info.poolURL>
54
  </properties>
55

  
56
</project>
0 57

  
org.gvsig.topology/tags/org.gvsig.topology-1.0.69/org.gvsig.topology.app/pom.xml
1
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
2
  <modelVersion>4.0.0</modelVersion>
3
  <parent>
4
    <groupId>org.gvsig</groupId>
5
    <artifactId>org.gvsig.topology</artifactId>
6
    <version>1.0.69</version>
7
  </parent>
8
  <artifactId>org.gvsig.topology.app</artifactId>
9
  <packaging>pom</packaging>
10
  <name>${project.artifactId}</name>
11
  <modules>
12
  	<module>org.gvsig.topology.app.mainplugin</module>
13
  </modules>
14
</project>
org.gvsig.topology/tags/org.gvsig.topology-1.0.69/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/SerializableJSON.java
1
package org.gvsig.topology.lib.api;
2

  
3
import org.json.JSONObject;
4

  
5
/**
6
 *
7
 * @author jjdelcerro
8
 */
9
public interface SerializableJSON {
10
    public JSONObject toJSON();
11
    
12
    public void fromJSON(JSONObject json);
13
    
14
    public void fromJSON(String json);
15
    
16
}
org.gvsig.topology/tags/org.gvsig.topology-1.0.69/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyLocator.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.topology.lib.api;
25

  
26
import org.gvsig.tools.locator.AbstractLocator;
27
import org.gvsig.tools.locator.Locator;
28
import org.gvsig.tools.locator.LocatorException;
29

  
30
@SuppressWarnings("rawtypes")
31
public class TopologyLocator extends AbstractLocator {
32

  
33
	private static final String LOCATOR_NAME = "TopologyLocator";
34
	
35
	public static final String TOPOLOGY_MANAGER_NAME =
36
			"org.gvsig.topology.manager";
37

  
38
	private static final String TOPOLOGY_MANAGER_DESCRIPTION =
39
			"Topology Manager of gvSIG";
40
	
41
	private static final TopologyLocator instance = new TopologyLocator();
42

  
43
	private TopologyLocator() {
44

  
45
	}
46

  
47
	/**
48
	 * Return the singleton instance.
49
	 * 
50
	 * @return the singleton instance
51
	 */
52
	public static TopologyLocator getInstance() {
53
		return instance;
54
	}
55

  
56
        @Override
57
	public String getLocatorName() {
58
		return LOCATOR_NAME;
59
	}
60

  
61
	/**
62
	 * Return a reference to TopologyManager.
63
	 * 
64
	 * @return a reference to TopologyManager
65
	 * @throws LocatorException
66
	 *             if there is no access to the class or the class cannot be
67
	 *             instantiated
68
	 * @see Locator#get(String)
69
	 */
70
	public static TopologyManager getTopologyManager()
71
			throws LocatorException {
72
		return (TopologyManager) getInstance().get(TOPOLOGY_MANAGER_NAME);
73
	}
74

  
75
	/**
76
	 * Registers the Class implementing the TopologyManager interface.
77
	 * 
78
	 * @param clazz
79
	 *            implementing the TopologyManager interface
80
	 */
81
	public static void registerTopologyManager(Class clazz) {
82
		getInstance().register(TOPOLOGY_MANAGER_NAME,
83
				TOPOLOGY_MANAGER_DESCRIPTION, clazz);
84
	}
85

  
86
	public static void registerDefaultTopologyManager(Class clazz) {
87
		getInstance().registerDefault(TOPOLOGY_MANAGER_NAME,
88
				TOPOLOGY_MANAGER_DESCRIPTION, clazz);
89
	}
90

  
91

  
92
}
org.gvsig.topology/tags/org.gvsig.topology-1.0.69/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyLibrary.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.topology.lib.api;
25

  
26
import org.gvsig.fmap.dal.DALLibrary;
27
import org.gvsig.fmap.geom.GeometryLibrary;
28
import org.gvsig.tools.ToolsLibrary;
29
import org.gvsig.tools.library.AbstractLibrary;
30
import org.gvsig.tools.library.LibraryException;
31

  
32
/**
33
 *
34
 * @author jjdelcerro
35
 */
36
public class TopologyLibrary extends AbstractLibrary {
37

  
38
    @Override
39
    public void doRegistration() {
40
        super.doRegistration();
41
        registerAsAPI(TopologyLibrary.class);
42
        this.require(ToolsLibrary.class);
43
        this.require(DALLibrary.class);
44
        this.require(GeometryLibrary.class);
45
    }
46

  
47
    @Override
48
    protected void doInitialize() throws LibraryException {
49
    }
50

  
51
    @Override
52
    protected void doPostInitialize() throws LibraryException {
53
    }
54

  
55
}
org.gvsig.topology/tags/org.gvsig.topology-1.0.69/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyRuleAction.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.topology.lib.api;
25

  
26
import org.gvsig.tools.dynobject.DynObject;
27

  
28
/**
29
 *
30
 * @author jjdelcerro
31
 */
32
public interface TopologyRuleAction {
33
    
34
    public String getId();
35
    
36
    public String getName();
37
    
38
    public String getShortDescription();
39
    
40
    public TopologyRuleFactory getRuleFactory();
41
    
42
    public boolean hasParameters();
43
    
44
    public DynObject createParameters();
45
    
46
    public void execute(
47
            TopologyRule rule,
48
            TopologyReportLine line, 
49
            DynObject parameters
50
        ) throws ExecuteTopologyRuleActionException;
51
    
52
}
org.gvsig.topology/tags/org.gvsig.topology-1.0.69/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyRule.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.topology.lib.api;
25

  
26
import java.util.List;
27
import org.gvsig.tools.dynobject.DynObject;
28
import org.gvsig.tools.task.SimpleTaskStatus;
29

  
30
/**
31
 *
32
 * @author jjdelcerro
33
 */
34
public interface TopologyRule extends SerializableJSON {
35
    
36
    public void execute(SimpleTaskStatus taskStatus, TopologyReport report) throws ExecuteTopologyRuleException;
37
    
38
    public String getName();
39
    
40
    public String getId();
41
    
42
    public TopologyRuleFactory getFactory();
43
    
44
    public TopologyDataSet getDataSet1();
45
    
46
    public TopologyDataSet getDataSet2();
47
    
48
    public double getTolerance();
49
    
50
    public List<TopologyRuleAction> getActions();
51
    
52
    public TopologyRuleAction getAction(String name);
53
    
54
    public long getSteps();
55

  
56
    public void setParameters(DynObject parameters);
57

  
58
    public DynObject getParameters();
59
}
org.gvsig.topology/tags/org.gvsig.topology-1.0.69/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/ExecuteTopologyRuleActionException.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.topology.lib.api;
25

  
26

  
27
public class ExecuteTopologyRuleActionException extends RuntimeException {
28

  
29
    public ExecuteTopologyRuleActionException(Exception ex) {
30
        this.initCause(ex);
31
    }
32
    
33
}
org.gvsig.topology/tags/org.gvsig.topology-1.0.69/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/ExecuteTopologyRuleException.java
1
/*
2
 * To change this license header, choose License Headers in Project Properties.
3
 * To change this template file, choose Tools | Templates
4
 * and open the template in the editor.
5
 */
6
package org.gvsig.topology.lib.api;
7

  
8
/**
9
 *
10
 * @author jjdelcerro
11
 */
12
public class ExecuteTopologyRuleException extends RuntimeException {
13
    public ExecuteTopologyRuleException(Exception ex) {
14
        this.initCause(ex);
15
    }
16
        
17
}
org.gvsig.topology/tags/org.gvsig.topology-1.0.69/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyManager.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.topology.lib.api;
25

  
26
import java.util.List;
27
import org.gvsig.fmap.dal.DataStore;
28

  
29
/**
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff