Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.compat.cdc / org.gvsig.fmap.dal / org.gvsig.fmap.dal.swing / org.gvsig.fmap.dal.swing.impl / src / main / java / org / gvsig / fmap / dal / swing / impl / DefaultDataSwingManager.java @ 44215

History | View | Annotate | Download (9.88 KB)

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

    
25
import java.util.function.Predicate;
26
import javax.swing.JButton;
27
import javax.swing.JComboBox;
28
import javax.swing.JList;
29
import javax.swing.JTextField;
30
import org.gvsig.expressionevaluator.swing.ExpressionBuilderConfig;
31
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingLocator;
32
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingManager;
33
import org.gvsig.expressionevaluator.swing.JExpressionBuilder;
34
import org.gvsig.featureform.swing.CreateJFeatureFormException;
35
import org.gvsig.featureform.swing.JFeatureForm;
36

    
37
import org.gvsig.featureform.swing.JFeaturesForm;
38
import org.gvsig.featureform.swing.impl.DefaultJFeatureForm;
39
import org.gvsig.featureform.swing.impl.DefaultJFeaturesForm;
40
import org.gvsig.fmap.dal.DALLocator;
41
import org.gvsig.fmap.dal.DataManager;
42
import org.gvsig.fmap.dal.DataStoreProviderFactory;
43
import org.gvsig.fmap.dal.exception.DataException;
44
import org.gvsig.fmap.dal.expressionevaluator.FeatureSymbolTable;
45
import org.gvsig.fmap.dal.feature.Feature;
46
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
47
import org.gvsig.fmap.dal.feature.FeatureQuery;
48
import org.gvsig.fmap.dal.feature.FeatureStore;
49
import org.gvsig.fmap.dal.feature.FeatureType;
50
import org.gvsig.fmap.dal.feature.FeatureTypeDefinitionsManager;
51
import org.gvsig.fmap.dal.feature.paging.FeaturePagingHelper;
52
import org.gvsig.fmap.dal.swing.DataSwingManager;
53
import org.gvsig.fmap.dal.swing.FeatureTableModel;
54
import org.gvsig.fmap.dal.swing.JFeatureTable;
55
import org.gvsig.fmap.dal.swing.expressionevaluator.FeatureStoreElement;
56
import org.gvsig.fmap.dal.swing.featuretype.AttributeDescriptorPickerController;
57
import org.gvsig.fmap.dal.swing.featuretype.FeatureTypeAttributePanel;
58
import org.gvsig.fmap.dal.swing.featuretype.FeatureTypePanel;
59
import org.gvsig.fmap.dal.swing.impl.expressionevaluator.DefaultFeatureStoreElement;
60
import org.gvsig.fmap.dal.swing.impl.featuretable.FeatureTablePanel;
61
import org.gvsig.fmap.dal.swing.impl.featuretable.table.DefaultFeatureTableModel;
62
import org.gvsig.fmap.dal.swing.impl.featuretable.table.EmptyFeatureTableModel;
63
import org.gvsig.fmap.dal.swing.impl.featuretype.DefaultAttributeDescriptorPickerController;
64
import org.gvsig.fmap.dal.swing.impl.featuretype.DefaultFeatureTypeAttributePanel;
65
import org.gvsig.fmap.dal.swing.impl.featuretype.DefaultFeatureTypePanel;
66
import org.gvsig.fmap.dal.swing.impl.jdbc.DefaultJDBCConnectionPanel;
67
import org.gvsig.fmap.dal.swing.jdbc.JDBCConnectionPanel;
68
import org.gvsig.tools.dynform.DynFormLocator;
69
import org.gvsig.tools.dynobject.DynClass;
70
import org.gvsig.tools.dynobject.DynStruct;
71
import org.gvsig.tools.exception.BaseException;
72

    
73

    
74
/**
75
 * @author fdiaz
76
 *
77
 */
78
@SuppressWarnings("UseSpecificCatch")
79
public class DefaultDataSwingManager implements DataSwingManager {
80

    
81
    @Override
82
    public JFeaturesForm createJFeaturesForm(FeatureStore store) throws CreateJFeatureFormException {
83
        try {
84
            FeatureType featureType = store.getDefaultFeatureType();
85
            
86
            DefaultJFeaturesForm form = new DefaultJFeaturesForm();
87
            form.bind(store, featureType2DynClass(store, featureType));
88
            return form;
89
            
90
        } catch (Exception ex) {
91
            throw new CreateJFeatureFormException(ex);
92
        }
93
    }
94

    
95
    public DynClass featureType2DynClass(FeatureStore store, FeatureType type) {
96
        FeatureTypeDefinitionsManager featureTypeDefinitionsManager = DALLocator.getFeatureTypeDefinitionsManager();
97
        if( featureTypeDefinitionsManager.contains(store,type) ) {
98
            // Force reload next call to get.
99
            featureTypeDefinitionsManager.remove(store,type);
100
        }
101
        DynClass dynClass = featureTypeDefinitionsManager.get(store,type);
102
        // Force reload next call to get.
103
        DynFormLocator.getDynFormManager().removeDefinition(dynClass.getName());
104
        return dynClass;
105
    }
106
    
107
    @Override
108
    public JDBCConnectionPanel createJDBCConnectionPanel() {
109
        JDBCConnectionPanel x = new DefaultJDBCConnectionPanel();
110
        return x;
111
    }
112

    
113
    @Override
114
    public JExpressionBuilder createQueryFilterExpresion(FeatureStore store) {
115
        DataManager dataManager = DALLocator.getDataManager();
116
        ExpressionEvaluatorSwingManager swingManager = ExpressionEvaluatorSwingLocator.getManager();
117
        FeatureSymbolTable featureSymbolTable = dataManager.createFeatureSymbolTable();
118

    
119
        Feature sampleFeature = null;
120
        try {
121
            sampleFeature = store.getFeatureSelection().first();
122
            if( sampleFeature == null ) {
123
                sampleFeature = store.first();
124
            }
125
        } catch (DataException ex) {
126
        }      
127
        final JExpressionBuilder builder = swingManager.createJExpressionBuilder();
128
        if( sampleFeature!=null ) {
129
            featureSymbolTable.setFeature(sampleFeature);
130
            builder.setPreviewSymbolTable(featureSymbolTable.createParent());
131
        }
132
        builder.addSymbolTable(featureSymbolTable);
133
        DefaultFeatureStoreElement storeElement = new DefaultFeatureStoreElement(builder, store);
134
        builder.addElement(storeElement);
135
        if( store.getProviderFactory().hasSQLSupport()==DataStoreProviderFactory.YES ) {
136
            builder.setSQLCompatible(true);
137
        }
138
        builder.expandElement(storeElement);
139
        return builder;
140
    }
141

    
142
    @Override
143
    public JFeatureForm createJFeatureForm(FeatureStore store) throws CreateJFeatureFormException {
144
        JFeatureForm form = new DefaultJFeatureForm();
145
        form.setStore(store);
146
        return form;
147
    }
148

    
149
    @Override
150
    public JFeatureForm createJFeatureForm(Feature feature) throws CreateJFeatureFormException {
151
        JFeatureForm form = new DefaultJFeatureForm();
152
        form.setFeature(feature);
153
        return form;
154
    }
155

    
156
    @Override
157
    public JFeatureTable createJFeatureTable(FeatureTableModel model) {
158
        return this.createJFeatureTable(model, true);
159
    }
160
    
161
    @Override
162
    public JFeatureTable createJFeatureTable(FeatureTableModel model, boolean isDoubleBuffered) {
163
        return new FeatureTablePanel(model, isDoubleBuffered);
164
    }
165
    
166
    @Override
167
    public FeatureTableModel createEmptyFeatureTableModel(DynStruct struct) {
168
        return new EmptyFeatureTableModel(struct);
169
    }
170
    
171
    @Override
172
    public FeatureTableModel createFeatureTableModel(FeatureStore featureStore,
173
            FeatureQuery featureQuery) {
174
        try {
175
            FeaturePagingHelper pager = DALLocator.getDataManager().createFeaturePagingHelper(
176
                    featureStore, featureQuery,
177
                    FeaturePagingHelper.DEFAULT_PAGE_SIZE
178
            );
179
            return this.createFeatureTableModel(pager);
180
        } catch (BaseException ex) {
181
            throw new RuntimeException("Can't create a FeatureTableModel.", ex);
182
        }
183
    }
184
    
185
    @Override
186
    public FeatureTableModel createFeatureTableModel(FeaturePagingHelper featurePager) {
187
        return new DefaultFeatureTableModel(featurePager);
188
    }
189
    
190
    @Override
191
    public ProjectionPickerController createProjectionPickerController(
192
            JTextField txtProjection,
193
            JButton btnSelectProjection
194
        ) {
195
        ProjectionPickerController picker = new ProjectionPickerController(txtProjection, btnSelectProjection);
196
        return picker;
197
    }
198

    
199
    @Override
200
    public AttributeDescriptorPickerController createAttributeDescriptorPickerController(JComboBox combo) {
201
        AttributeDescriptorPickerController controller = new DefaultAttributeDescriptorPickerController(combo, null);
202
        return controller;
203
    }
204

    
205
    @Override
206
    public AttributeDescriptorPickerController createAttributeDescriptorPickerController(JList list) {
207
        AttributeDescriptorPickerController controller = new DefaultAttributeDescriptorPickerController(list, null);
208
        return controller;
209
    }
210

    
211
    @Override
212
    public AttributeDescriptorPickerController createAttributeDescriptorPickerController(JComboBox combo, Predicate<FeatureAttributeDescriptor> filter) {
213
        AttributeDescriptorPickerController controller = new DefaultAttributeDescriptorPickerController(combo, filter);
214
        return controller;
215
    }
216

    
217
    @Override
218
    public AttributeDescriptorPickerController createAttributeDescriptorPickerController(JList list, Predicate<FeatureAttributeDescriptor> filter) {
219
        AttributeDescriptorPickerController controller = new DefaultAttributeDescriptorPickerController(list, filter);
220
        return controller;
221
    }
222

    
223
    @Override
224
    public FeatureTypePanel createFeatureTypePanel() {
225
        FeatureTypePanel panel = new DefaultFeatureTypePanel();
226
        return panel;
227
    }
228
    
229
    @Override
230
    public FeatureTypeAttributePanel createFeatureTypeAttributePanel() {
231
        FeatureTypeAttributePanel panel = new DefaultFeatureTypeAttributePanel();
232
        return panel;
233
    }
234

    
235
    @Override
236
    public FeatureStoreElement createFeatureStoreElement(ExpressionBuilderConfig configPanel) {
237
        FeatureStoreElement e = new DefaultFeatureStoreElement(configPanel, null);
238
        return e;
239
    }
240
}