Revision 45647 trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.geodb.app/org.gvsig.geodb.app.mainplugin/src/main/java/org/gvsig/geodb/TableInfo.java

View differences:

TableInfo.java
6 6
package org.gvsig.geodb;
7 7

  
8 8
import java.util.ArrayList;
9
import java.util.Arrays;
9 10
import java.util.List;
10 11
import java.util.Map;
12
import java.util.logging.Level;
13
import java.util.logging.Logger;
11 14
import javax.swing.ComboBoxModel;
12 15
import javax.swing.DefaultComboBoxModel;
13 16
import javax.swing.DefaultListModel;
14 17
import javax.swing.DefaultListSelectionModel;
15 18
import javax.swing.ListModel;
16 19
import javax.swing.ListSelectionModel;
20
import org.apache.commons.collections.CollectionUtils;
21
import org.apache.commons.lang3.ArrayUtils;
17 22
import org.apache.commons.lang3.StringUtils;
18 23
import org.cresques.cts.IProjection;
19 24
import org.gvsig.expressionevaluator.Expression;
20 25
import org.gvsig.expressionevaluator.ExpressionUtils;
21 26
import org.gvsig.fmap.dal.DALLocator;
22 27
import org.gvsig.fmap.dal.DataManager;
28
import org.gvsig.fmap.dal.DataServerExplorer;
29
import org.gvsig.fmap.dal.DataServerExplorerParameters;
30
import org.gvsig.fmap.dal.DataStoreParameters;
23 31
import org.gvsig.fmap.dal.DataTypes;
32
import org.gvsig.fmap.dal.exception.DataException;
33
import org.gvsig.fmap.dal.exception.InitializeException;
34
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
24 35
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
25 36
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
26 37
import org.gvsig.fmap.dal.feature.FeatureStore;
27 38
import org.gvsig.fmap.dal.feature.FeatureType;
39
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorer;
28 40
import org.gvsig.fmap.dal.store.jdbc.JDBCStoreParameters;
41
import org.gvsig.tools.ToolsLocator;
29 42
import org.gvsig.tools.dispose.DisposeUtils;
43
import org.gvsig.tools.resourcesstorage.ResourcesStorage;
44
import org.gvsig.tools.util.ContainerUtils;
30 45
import org.gvsig.tools.util.LabeledValue;
31 46
import org.gvsig.tools.util.LabeledValueImpl;
32 47
import org.gvsig.tools.util.PropertiesSupport;
......
81 96

  
82 97
    public void fetch(JDBCStoreParameters parameters) {
83 98
        this.projection = parameters.getCRS();
99
        this.setGeomFieldSelected(parameters.getDefaultGeometryField());
100
        if(StringUtils.isBlank(parameters.getBaseFilter())){
101
            this.filter = null;
102
        } else {
103
            this.filter = ExpressionUtils.createExpression(parameters.getBaseFilter());
104
        }
105
        if(StringUtils.isBlank(parameters.getPkFieldsString()) || StringUtils.contains(parameters.getPkFieldsString(), ',')){
106
            this.setIdFieldSelected(-1);
107
        } else {
108
            this.setIdFieldSelected(parameters.getPkFieldsString());
109
        }
110
        
111
        String[] fieldsArray = parameters.getFields();
112
        if(fieldsArray == null){
113
            this.columnChecksModel.setSelectionInterval(0, this.getColumnsListModel().getSize()-1);
114
        } else {
115
            ListModel<LabeledValue<FeatureAttributeDescriptor>> model = this.getColumnsListModel();
116
            List<String> fields = Arrays.asList(fieldsArray);
117
            this.columnChecksModel.clearSelection();
118
            for (int i = 0; i < model.getSize(); i++) {
119
                FeatureAttributeDescriptor attr = model.getElementAt(i).getValue();
120
                if(ContainerUtils.contains(fields, attr.getName(), ContainerUtils.EQUALS_IGNORECASE_COMPARATOR)) {
121
                    this.columnChecksModel.addSelectionInterval(i, i);
122
                }
123
            }
124
        }
84 125
    }
85 126

  
86 127
    public String getId() {
......
125 166
        if (!allSelected) {
126 167
            p.setFields(fields.toString());
127 168
        }
128
        p.setPkFields(this.getFieldId());
169
        if(this.idFieldSelected >= 0){
170
            p.setPkFields(this.getFieldId());
171
        }
129 172
        p.setCRS(this.getProjection());
130 173
        p.setDefaultGeometryField(this.getGeomField());
131 174
        if (!ExpressionUtils.isEmpty(this.filter)) {
132
            p.setBaseFilter(this.filter.toString());
175
            p.setBaseFilter(this.filter.getPhrase());
133 176
        } else {
134 177
            p.setBaseFilter(null);
135 178
        }
......
279 322
    void setIdFieldSelected(int selectedIndex) {
280 323
        this.idFieldSelected = selectedIndex;
281 324
    }
325
    
326
    void setIdFieldSelected(String selected) {
327
        ComboBoxModel<String> model = getIdFieldComboModel();
328
        for (int i = 0; i < model.getSize(); i++) {
329
            if(StringUtils.equalsIgnoreCase(selected, model.getElementAt(i))){
330
                this.idFieldSelected = i;
331
                return;
332
            }
333
        }
334
        this.idFieldSelected = -1;
335
    }
282 336

  
337

  
283 338
    void setGeomFieldSelected(int selectedIndex) {
284 339
        this.geomFieldSelected = selectedIndex;
285 340
    }
286 341

  
342
    void setGeomFieldSelected(String selected) {
343
        ComboBoxModel<String> model = getGeomFieldComboModel();
344
        for (int i = 0; i < model.getSize(); i++) {
345
            if(StringUtils.equalsIgnoreCase(selected, model.getElementAt(i))){
346
                this.geomFieldSelected = i;
347
                return;
348
            }
349
        }
350
        this.geomFieldSelected = -1;
351
    }
352

  
287 353
    public boolean requireGeometry() {
288 354
        return requireGeometry;
289 355
    }
......
340 406
        return this.propertiesHelper.getProperties();
341 407
    }
342 408
    
409
    private JDBCServerExplorer getExplorer() throws DataException, ValidateDataParametersException {
410
        DataManager manager = DALLocator.getDataManager();
411
        JDBCStoreParameters storeParameters = getParameters();
412
        DataServerExplorerParameters explorerParameters = manager.createServerExplorerParameters(storeParameters.getProviderName());
413
        ToolsLocator.getDynObjectManager().copy(storeParameters, explorerParameters);
414
        DataServerExplorer explorer = manager.openServerExplorer(storeParameters.getProviderName(), explorerParameters);
415
        return (JDBCServerExplorer) explorer;
416
        
417
    }
418

  
419
    public boolean existsDALInfo() {
420
        try {
421
            JDBCStoreParameters storeParameters = getParameters();
422
            JDBCServerExplorer explorer = getExplorer();
423
            ResourcesStorage resources = explorer.getResourcesStorage(storeParameters);
424
            return resources.exists("dal");
425
        } catch (Exception ex) {
426
            //FIXME: LOGGER
427
            return false;
428
        }
429
    }
430
    
431
    public void removeDALInfo() {
432
        try {
433
            JDBCStoreParameters storeParameters = getParameters();
434
            JDBCServerExplorer explorer = getExplorer();
435
            ResourcesStorage resources = explorer.getResourcesStorage(storeParameters);
436
            if(resources.exists("dal")) {
437
                resources.remove("dal");
438
                JDBCStoreParameters params = (JDBCStoreParameters) explorer.get(storeParameters.getTable());
439
                this.value = params;
440
            }
441
            DisposeUtils.disposeQuietly(explorer);
442
        } catch (Exception ex) {
443
            throw new RuntimeException("Can't remove DAL resource.", ex);
444
        }
445
        
446
    }
343 447
}

Also available in: Unified diff