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 @ 44154

History | View | Annotate | Download (8.78 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.JTextField;
29
import org.gvsig.expressionevaluator.swing.ExpressionBuilderConfig;
30
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingLocator;
31
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingManager;
32
import org.gvsig.expressionevaluator.swing.JExpressionBuilder;
33
import org.gvsig.featureform.swing.CreateJFeatureFormException;
34
import org.gvsig.featureform.swing.JFeatureForm;
35

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

    
71

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

    
79
    @Override
80
    public JFeaturesForm createJFeaturesForm(FeatureStore store) throws CreateJFeatureFormException {
81
        try {
82
            FeatureType featureType = store.getDefaultFeatureType();
83
            FeatureTypeDefinitionsManager featureTypeDefinitionsManager = DALLocator.getFeatureTypeDefinitionsManager();
84
            if( featureTypeDefinitionsManager.contains(store,featureType) ) {
85
                // Force reload next call to get.
86
                featureTypeDefinitionsManager.remove(store,featureType);
87
            }
88
            DynClass dynClass = featureTypeDefinitionsManager.get(store,featureType);
89
            DynFormLocator.getDynFormManager().removeDefinition(dynClass.getName());
90
            
91
            DefaultJFeaturesForm form = new DefaultJFeaturesForm();
92
            form.bind(store, dynClass);
93
            return form;
94
            
95
        } catch (Exception ex) {
96
            throw new CreateJFeatureFormException(ex);
97
        }
98
    }
99

    
100
    @Override
101
    public JDBCConnectionPanel createJDBCConnectionPanel() {
102
        JDBCConnectionPanel x = new DefaultJDBCConnectionPanel();
103
        return x;
104
    }
105

    
106
    @Override
107
    public JExpressionBuilder createQueryFilterExpresion(FeatureStore store) {
108
        DataManager dataManager = DALLocator.getDataManager();
109
        ExpressionEvaluatorSwingManager swingManager = ExpressionEvaluatorSwingLocator.getManager();
110

    
111
        Feature sampleFeature = null;
112
        try {
113
            sampleFeature = store.getFeatureSelection().first();
114
            if( sampleFeature == null ) {
115
                sampleFeature = store.first();
116
            }
117
        } catch (DataException ex) {
118
        }      
119
        final JExpressionBuilder builder = swingManager.createJExpressionBuilder();
120
        if( sampleFeature!=null ) {
121
            FeatureSymbolTable featureSymbolTable = dataManager.createFeatureSymbolTable();
122
            featureSymbolTable.setFeature(sampleFeature);
123
            builder.setPreviewSymbolTable(featureSymbolTable.createParent());
124
        }
125
        builder.addElement(
126
             swingManager.createElement(
127
                DataSwingManager.FEATURE_STORE_EXPRESSION_ELEMENT,
128
                builder,
129
                store
130
            )
131
        );
132
        return builder;
133
    }
134

    
135
    @Override
136
    public JFeatureForm createJFeatureForm(FeatureStore store) throws CreateJFeatureFormException {
137
        JFeatureForm form = new DefaultJFeatureForm();
138
        form.setStore(store);
139
        return form;
140
    }
141

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

    
149
    public JFeatureTable createJFeatureTable(FeatureTableModel model) {
150
        return this.createJFeatureTable(model, true);
151
    }
152
    
153
    public JFeatureTable createJFeatureTable(FeatureTableModel model, boolean isDoubleBuffered) {
154
        return new FeatureTablePanel(model, isDoubleBuffered);
155
    }
156
    
157
    public FeatureTableModel createEmptyFeatureTableModel(DynStruct struct) {
158
        return new EmptyFeatureTableModel(struct);
159
    }
160
    
161
    public FeatureTableModel createFeatureTableModel(FeatureStore featureStore,
162
            FeatureQuery featureQuery) {
163
        try {
164
            FeaturePagingHelper pager = DALLocator.getDataManager().createFeaturePagingHelper(
165
                    featureStore, featureQuery,
166
                    FeaturePagingHelper.DEFAULT_PAGE_SIZE
167
            );
168
            return this.createFeatureTableModel(pager);
169
        } catch (BaseException ex) {
170
            throw new RuntimeException("Can't create a FeatureTableModel.", ex);
171
        }
172
    }
173
    
174
    public FeatureTableModel createFeatureTableModel(FeaturePagingHelper featurePager) {
175
        return new DefaultFeatureTableModel(featurePager);
176
    }
177
    
178
    public ProjectionPickerController createProjectionPickerController(
179
            JTextField txtProjection,
180
            JButton btnSelectProjection
181
        ) {
182
        ProjectionPickerController picker = new ProjectionPickerController(txtProjection, btnSelectProjection);
183
        return picker;
184
    }
185

    
186
    public AttributeDescriptorPickerController createAttributeDescriptorPickerController(JComboBox combo) {
187
        AttributeDescriptorPickerController controller = new DefaultAttributeDescriptorPickerController(combo, null);
188
        return controller;
189
    }
190

    
191
    public AttributeDescriptorPickerController createAttributeDescriptorPickerController(JComboBox combo, Predicate<FeatureAttributeDescriptor> filter) {
192
        AttributeDescriptorPickerController controller = new DefaultAttributeDescriptorPickerController(combo, filter);
193
        return controller;
194
    }
195

    
196
    public FeatureTypePanel createFeatureTypePanel() {
197
        FeatureTypePanel panel = new DefaultFeatureTypePanel();
198
        return panel;
199
    }
200
    
201
    public FeatureTypeAttributePanel createFeatureTypeAttributePanel() {
202
        FeatureTypeAttributePanel panel = new DefaultFeatureTypeAttributePanel();
203
        return panel;
204
    }
205

    
206
    public FeatureStoreElement createFeatureStoreElement(ExpressionBuilderConfig configPanel) {
207
        FeatureStoreElement e = new DefaultFeatureStoreElement(configPanel, null);
208
        return e;
209
    }
210
}