Revision 46724
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/feature/spi/SQLBuilderBase.java | ||
---|---|---|
2551 | 2551 |
) |
2552 | 2552 |
); |
2553 | 2553 |
} |
2554 |
sqls.add(builder.toString()); |
|
2555 |
} |
|
2556 |
for (ColumnDescriptor column : alters) { |
|
2557 |
StringBuilder builder = new StringBuilder(); |
|
2558 |
builder.append("ALTER TABLE "); |
|
2559 |
builder.append(this.table.toString(formatter)); |
|
2560 |
builder.append(" ALTER COLUMN "); |
|
2561 |
builder.append(as_identifier(column.getName())); |
|
2554 | 2562 |
if (column.getDefaultValue() == null) { |
2555 | 2563 |
if (column.allowNulls()) { |
2556 |
builder.append(" DEFAULT NULL"); |
|
2564 |
builder.append(" SET DEFAULT NULL");
|
|
2557 | 2565 |
} else { |
2558 | 2566 |
builder.append(" DROP DEFAULT"); |
2559 | 2567 |
} |
2560 | 2568 |
} else { |
2561 |
builder.append(" DEFAULT '"); |
|
2569 |
builder.append(" SET DEFAULT '");
|
|
2562 | 2570 |
builder.append(column.getDefaultValue().toString()); |
2563 | 2571 |
builder.append("'"); |
2564 | 2572 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/OperationsFactory.java | ||
---|---|---|
34 | 34 |
import org.gvsig.fmap.dal.feature.FeatureQuery; |
35 | 35 |
import org.gvsig.fmap.dal.feature.FeatureType; |
36 | 36 |
import org.gvsig.fmap.dal.feature.spi.FeatureReferenceProviderServices; |
37 |
import org.gvsig.fmap.dal.feature.spi.FeatureStoreProviderServices; |
|
37 | 38 |
import org.gvsig.fmap.dal.store.jdbc.JDBCNewStoreParameters; |
38 | 39 |
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters; |
39 | 40 |
import org.gvsig.fmap.dal.store.jdbc.JDBCStoreParameters; |
... | ... | |
123 | 124 |
Iterator featureTypesChanged |
124 | 125 |
); |
125 | 126 |
|
127 |
public PerformChangesOperation createPerformChanges( |
|
128 |
TableReference table, |
|
129 |
FeatureType type, |
|
130 |
Iterator deleteds, |
|
131 |
Iterator inserteds, |
|
132 |
Iterator updateds, |
|
133 |
Iterator featureTypesChanged, |
|
134 |
FeatureStoreProviderServices storeServices |
|
135 |
); |
|
136 |
|
|
126 | 137 |
public AppendOperation createAppend( |
127 | 138 |
TableReference table, |
128 | 139 |
FeatureType type |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/JDBCStoreProviderBase.java | ||
---|---|---|
585 | 585 |
deleteds, |
586 | 586 |
inserteds, |
587 | 587 |
updateds, |
588 |
featureTypesChanged |
|
588 |
featureTypesChanged, |
|
589 |
this.getStoreServices() |
|
589 | 590 |
); |
590 | 591 |
performChanges.perform(); |
591 | 592 |
if( performChanges.isTypeChanged() ) { |
... | ... | |
668 | 669 |
Collections.emptyIterator(), |
669 | 670 |
Collections.singletonList(featureProvider).iterator(), |
670 | 671 |
Collections.emptyIterator(), |
671 |
Collections.emptyIterator() |
|
672 |
Collections.emptyIterator(), |
|
673 |
this.getStoreServices() |
|
672 | 674 |
); |
673 | 675 |
performChanges.perform(); |
674 | 676 |
this.getCountValue().reset(); |
... | ... | |
685 | 687 |
Collections.emptyIterator(), |
686 | 688 |
Collections.emptyIterator(), |
687 | 689 |
Collections.singletonList(featureProvider).iterator(), |
688 |
Collections.emptyIterator() |
|
690 |
Collections.emptyIterator(), |
|
691 |
this.getStoreServices() |
|
689 | 692 |
); |
690 | 693 |
performChanges.perform(); |
691 | 694 |
// this.getCountValue().reset(); |
... | ... | |
715 | 718 |
Collections.singletonList(featureReference).iterator(), |
716 | 719 |
Collections.emptyIterator(), |
717 | 720 |
Collections.emptyIterator(), |
718 |
Collections.emptyIterator() |
|
721 |
Collections.emptyIterator(), |
|
722 |
this.getStoreServices() |
|
719 | 723 |
); |
720 | 724 |
performChanges.perform(); |
721 | 725 |
this.getCountValue().reset(); |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/operations/PerformChangesOperation.java | ||
---|---|---|
27 | 27 |
import java.sql.SQLException; |
28 | 28 |
import java.sql.Statement; |
29 | 29 |
import java.util.ArrayList; |
30 |
import java.util.Arrays; |
|
30 | 31 |
import java.util.Iterator; |
31 | 32 |
import java.util.List; |
32 | 33 |
import java.util.Objects; |
... | ... | |
38 | 39 |
import org.gvsig.expressionevaluator.ExpressionUtils; |
39 | 40 |
import org.gvsig.expressionevaluator.GeometryExpressionBuilder; |
40 | 41 |
import org.gvsig.fmap.dal.DataTypes; |
42 |
import static org.gvsig.fmap.dal.SQLBuilder.PROP_FEATURE_TYPE; |
|
43 |
import static org.gvsig.fmap.dal.SQLBuilder.PROP_TABLE; |
|
41 | 44 |
import org.gvsig.fmap.dal.exception.DataException; |
45 |
import org.gvsig.fmap.dal.feature.EditableFeatureType; |
|
42 | 46 |
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor; |
43 | 47 |
import org.gvsig.fmap.dal.feature.FeatureReference; |
44 | 48 |
import org.gvsig.fmap.dal.feature.FeatureType; |
45 | 49 |
import org.gvsig.fmap.dal.feature.FeatureType.FeatureTypeChanged; |
46 | 50 |
import org.gvsig.fmap.dal.feature.spi.FeatureProvider; |
47 | 51 |
import org.gvsig.fmap.dal.feature.spi.FeatureReferenceProviderServices; |
52 |
import org.gvsig.fmap.dal.feature.spi.FeatureStoreProviderServices; |
|
53 |
import org.gvsig.fmap.dal.store.jdbc.JDBCStoreParameters; |
|
48 | 54 |
import org.gvsig.fmap.dal.store.jdbc.exception.JDBCExecuteSQLException; |
49 | 55 |
import org.gvsig.fmap.dal.store.jdbc.exception.JDBCSQLException; |
50 | 56 |
import org.gvsig.fmap.dal.store.jdbc2.JDBCConnection; |
... | ... | |
52 | 58 |
import org.gvsig.fmap.dal.store.jdbc2.JDBCUtils; |
53 | 59 |
import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory.TableReference; |
54 | 60 |
import org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase; |
55 |
import static org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase.PROP_FEATURE_TYPE; |
|
56 |
import static org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase.PROP_TABLE; |
|
57 | 61 |
import org.gvsig.tools.dispose.Disposable; |
58 | 62 |
import org.gvsig.tools.dispose.DisposeUtils; |
59 | 63 |
import org.gvsig.tools.util.Invocable; |
... | ... | |
70 | 74 |
protected Iterator<FeatureProvider> inserteds; |
71 | 75 |
|
72 | 76 |
protected boolean typeChanged = false; |
77 |
protected final FeatureStoreProviderServices storeServices; |
|
73 | 78 |
|
74 | 79 |
public PerformChangesOperation(JDBCHelper helper) { |
75 |
this(helper, null, null, null, null, null, null); |
|
80 |
this(helper, null, null, null, null, null, null, null);
|
|
76 | 81 |
} |
77 | 82 |
|
78 | 83 |
public PerformChangesOperation(JDBCHelper helper, |
... | ... | |
81 | 86 |
Iterator<FeatureReferenceProviderServices> deleteds, |
82 | 87 |
Iterator<FeatureProvider> inserteds, |
83 | 88 |
Iterator<FeatureProvider> updateds, |
84 |
Iterator<FeatureTypeChanged> featureTypesChanged) { |
|
89 |
Iterator<FeatureTypeChanged> featureTypesChanged, |
|
90 |
FeatureStoreProviderServices storeServices) { |
|
85 | 91 |
super(helper); |
86 | 92 |
this.deleteds = deleteds; |
87 | 93 |
this.inserteds = inserteds; |
... | ... | |
98 | 104 |
this.featureTypeTarget = null; |
99 | 105 |
typeChanged = false; |
100 | 106 |
} |
107 |
this.storeServices = storeServices; |
|
101 | 108 |
} |
102 | 109 |
|
103 | 110 |
public boolean isTypeChanged() { |
... | ... | |
366 | 373 |
} |
367 | 374 |
} |
368 | 375 |
} |
376 |
|
|
377 |
protected FeatureType getCurrentFeatureTypeDB(){ |
|
378 |
if(this.storeServices == null){ |
|
379 |
return this.featureTypeSource; |
|
380 |
} |
|
381 |
try{ |
|
382 |
JDBCStoreParameters params = (JDBCStoreParameters) this.storeServices.getFeatureStore().getParameters(); |
|
383 |
EditableFeatureType type = this.storeServices.createFeatureType(this.storeServices.getName()); |
|
384 |
FetchFeatureTypeOperation fetchFeatureType = |
|
385 |
this.helper.getOperations().createFetchFeatureType( |
|
386 |
type, |
|
387 |
this.table, |
|
388 |
params.getPkFields()==null?null:Arrays.asList(params.getPkFields()), |
|
389 |
params.getDefaultGeometryField(), |
|
390 |
params.getCRS(), |
|
391 |
params.getGeometryType(), |
|
392 |
params.getGeometrySubtype() |
|
393 |
); |
|
394 |
fetchFeatureType.perform(); |
|
395 |
return type; |
|
396 |
} catch(Throwable t){ |
|
397 |
LOGGER.warn("Can't get current feature type from database of table = "+Objects.toString(this.table), t); |
|
398 |
return this.featureTypeSource; |
|
399 |
} |
|
400 |
} |
|
369 | 401 |
|
370 | 402 |
public List<String> getUpdateTableSQLs() { |
403 |
FeatureType currentFeatureTypeDB = getCurrentFeatureTypeDB(); |
|
404 |
|
|
371 | 405 |
JDBCSQLBuilderBase sqlbuilder = createSQLBuilder(); |
372 | 406 |
sqlbuilder.alter_table().table() |
373 | 407 |
.database(this.table.getDatabase()) |
... | ... | |
375 | 409 |
.name(this.table.getTable()); |
376 | 410 |
|
377 | 411 |
// Primero comprobamos si hay que eliminar la primary-key o algun indice |
378 |
for (FeatureAttributeDescriptor attrOrgiginal : featureTypeSource) {
|
|
412 |
for (FeatureAttributeDescriptor attrOrgiginal : currentFeatureTypeDB) {
|
|
379 | 413 |
if( attrOrgiginal.isComputed() ) { |
380 | 414 |
continue; |
381 | 415 |
} |
... | ... | |
391 | 425 |
} |
392 | 426 |
|
393 | 427 |
// Comprobamos si hay que eliminar o modificar alguna columna existente |
394 |
for (FeatureAttributeDescriptor attrOrgiginal : featureTypeSource) {
|
|
428 |
for (FeatureAttributeDescriptor attrOrgiginal : currentFeatureTypeDB) {
|
|
395 | 429 |
if( attrOrgiginal.isComputed() ) { |
396 | 430 |
continue; |
397 | 431 |
} |
... | ... | |
438 | 472 |
if( attrTarget.isComputed() ) { |
439 | 473 |
continue; |
440 | 474 |
} |
441 |
FeatureAttributeDescriptor attrOrgiginal = featureTypeSource.getAttributeDescriptor(
|
|
475 |
FeatureAttributeDescriptor attrOrgiginal = currentFeatureTypeDB.getAttributeDescriptor(
|
|
442 | 476 |
attrTarget.getName() |
443 | 477 |
); |
444 | 478 |
if (attrOrgiginal == null) { |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/operations/OperationsFactoryBase.java | ||
---|---|---|
35 | 35 |
import org.gvsig.fmap.dal.feature.FeatureQuery; |
36 | 36 |
import org.gvsig.fmap.dal.feature.FeatureType; |
37 | 37 |
import org.gvsig.fmap.dal.feature.spi.FeatureReferenceProviderServices; |
38 |
import org.gvsig.fmap.dal.feature.spi.FeatureStoreProviderServices; |
|
38 | 39 |
import org.gvsig.fmap.dal.store.jdbc.JDBCNewStoreParameters; |
39 | 40 |
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters; |
40 | 41 |
import org.gvsig.fmap.dal.store.jdbc.JDBCStoreParameters; |
... | ... | |
213 | 214 |
Iterator updateds, |
214 | 215 |
Iterator featureTypesChanged |
215 | 216 |
) { |
217 |
return createPerformChanges(table, type, deleteds, inserteds, updateds, featureTypesChanged, null); |
|
218 |
} |
|
219 |
|
|
220 |
@Override |
|
221 |
public PerformChangesOperation createPerformChanges( |
|
222 |
TableReference table, |
|
223 |
FeatureType type, |
|
224 |
Iterator deleteds, |
|
225 |
Iterator inserteds, |
|
226 |
Iterator updateds, |
|
227 |
Iterator featureTypesChanged, |
|
228 |
FeatureStoreProviderServices storeServices |
|
229 |
) { |
|
216 | 230 |
return new PerformChangesOperation(helper, table, type, |
217 |
deleteds, inserteds, updateds, featureTypesChanged); |
|
231 |
deleteds, inserteds, updateds, featureTypesChanged, storeServices);
|
|
218 | 232 |
} |
219 | 233 |
|
220 | 234 |
@Override |
Also available in: Unified diff