Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.daltransform.app / org.gvsig.daltransform.app.join / src / main / java / org / gvsig / app / join / RemoveTableUnion.java @ 47557

History | View | Annotate | Download (4.96 KB)

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.app.join;
25

    
26
import org.gvsig.andami.IconThemeHelper;
27
import org.gvsig.andami.PluginServices;
28
import org.gvsig.andami.plugins.Extension;
29
import org.gvsig.andami.ui.mdiManager.IWindow;
30
import org.gvsig.app.join.dal.feature.JoinTransform;
31
import org.gvsig.app.project.documents.table.TableDocument;
32
import org.gvsig.app.project.documents.table.gui.FeatureTableDocumentPanel;
33
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
34
import org.gvsig.fmap.dal.feature.FeatureStore;
35
import org.gvsig.fmap.dal.feature.FeatureStoreTransform;
36
import org.gvsig.fmap.dal.feature.FeatureStoreTransforms;
37
import org.gvsig.fmap.mapcontext.layers.vectorial.VectorLayer;
38

    
39

    
40
/**
41
 * @author Fernando Gonz?lez Cort?s
42
 */
43
public class RemoveTableUnion extends Extension{
44

    
45
        /**
46
         * @see org.gvsig.andami.plugins.IExtension#initialize()
47
         */
48
        public void initialize() {
49
                IconThemeHelper.registerIcon("action", "table-remove-join", this);
50
        }
51

    
52
        /**
53
         * @see org.gvsig.andami.plugins.IExtension#execute(java.lang.String)
54
         */
55
        public void execute(String actionCommand) {
56
                if( "table-remove-join".equalsIgnoreCase(actionCommand)) {
57
                        FeatureTableDocumentPanel t = (FeatureTableDocumentPanel) PluginServices.getMDIManager().getActiveWindow();
58
                        TableDocument pt = t.getModel();
59
                        FeatureStore fs = pt.getStore();
60
                        this.removeJoinTransfor(fs);
61
                        VectorLayer layer = pt.getAssociatedLayer();
62
                        if(layer != null){
63
                            FeatureAttributeDescriptor geomAttr = fs.getDefaultFeatureTypeQuietly().getDefaultGeometryAttribute();
64
                            if(geomAttr == null){
65
                                layer.getParentLayer().remove(layer);
66
                            }
67
                        }
68
                        
69
        
70
                        //                TODO
71
                        //                if (fs instanceof JoinFeatureStore) {
72
                        //                        DataManager dm = DALLocator.getDataManager();
73
                        //                        DataStoreParameters originalParams = ((JoinFeatureStoreParameters) fs
74
                        //                                        .getParameters()).getStorePrimary();
75
                        //                        FeatureStore original = null;
76
                        //                        try {
77
                        //                                original = (FeatureStore) dm.createStore(originalParams);
78
                        //                        } catch (InitializeException e) {
79
                        //                                NotificationManager.addError(e.getMessage(), e);
80
                        //                                return;
81
                        //                        }
82
                        //
83
                        //                        pt.setStore(original);
84
                        //                        try {
85
                        //                                fs.dispose();
86
                        //                        } catch (CloseException e) {
87
                        //                                NotificationManager.addError(e);
88
                        //                        }
89
                        //                        t.setModel(pt);
90
                        //
91
                        //                }
92
        
93
                        //                t.clearSelectedFields();
94
                        t.getModel().setModified(true);
95
                }
96
        }
97

    
98
        public void removeJoinTransfor(FeatureStore store) {
99
                FeatureStoreTransforms transforms = store.getTransforms();
100
                int size = transforms.size();
101
                if (size < 1) {
102
                        return;
103
                }
104
                FeatureStoreTransform join = transforms.getTransform(size - 1);
105
                if (join instanceof JoinTransform) {
106
                        transforms.remove(join);
107
                } else {
108
                        return;
109
                }
110

    
111

    
112

    
113
        }
114

    
115
        public boolean hasJoinTransform(FeatureStore store) {
116

    
117
                FeatureStoreTransforms transforms = store.getTransforms();
118
                int size = transforms.size();
119
                if (size < 1) {
120
                        return false;
121
                }
122
                return (transforms.getTransform(size - 1) instanceof JoinTransform);
123

    
124
        }
125

    
126
        /**
127
         * @see org.gvsig.andami.plugins.IExtension#isEnabled()
128
         */
129
        public boolean isEnabled() {
130
                IWindow v = PluginServices.getMDIManager().getActiveWindow();
131

    
132
                if (v == null) {
133
                        return false;
134
                }
135

    
136
                if (v.getClass() == FeatureTableDocumentPanel.class) {
137
                        FeatureTableDocumentPanel t = (FeatureTableDocumentPanel) v;
138
                        // FIXME !!!! Asi se hacia antes
139
                        //                        if (t.getModel().getOriginal() != null){
140
                        //                                return true;
141
                        //                        }
142

    
143
                        TableDocument pt = t.getModel();
144
                        FeatureStore fs = pt.getStore();
145

    
146
                        return this.hasJoinTransform(fs);
147
//                        TODO
148
//                        if (fs instanceof JoinFeatureStore) {
149
//                                return true;
150
//                        }
151

    
152
                }
153
                return false;
154
        }
155

    
156
        /**
157
         * @see org.gvsig.andami.plugins.IExtension#isVisible()
158
         */
159
        public boolean isVisible() {
160
                IWindow v = PluginServices.getMDIManager().getActiveWindow();
161

    
162
                if (v == null) {
163
                        return false;
164
                }
165

    
166
                if (v instanceof FeatureTableDocumentPanel) {
167
                        return true;
168
                } else {
169
                        return false;
170
                }
171

    
172
        }
173

    
174
}