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