fixes_restore_feature_from_reference_with_null_value_in_pk.patch
src/org/gvsig/fmap/dal/store/jdbc/JDBCStoreProvider.java | ||
---|---|---|
534 | 534 |
.getDefaultFeatureType()); |
535 | 535 |
} |
536 | 536 | |
537 |
/** |
|
538 |
* Return "is null" expression for current provider<br/> |
|
539 |
*/ |
|
540 |
protected String getIsNullExpression() { |
|
541 |
return "is null"; |
|
542 |
} |
|
543 | ||
537 | 544 |
@Override |
538 | 545 |
protected FeatureProvider internalGetFeatureProviderByReference( |
539 | 546 |
FeatureReferenceProviderServices reference, |
... | ... | |
547 | 554 |
List<Object> values = new ArrayList<Object>(); |
548 | 555 | |
549 | 556 |
int i; |
550 |
for (i = 0; i < pk.length - 1; i++) { |
|
551 |
values.add( |
|
552 |
helper.dalValueToJDBC(pk[i], |
|
553 |
reference.getKeyValue(pk[i].getName()))); |
|
554 |
filter.append(helper.getSqlFieldName(pk[i])); |
|
555 |
filter.append(" = ? AND "); |
|
557 |
Object value; |
|
558 |
for (i = 0; i < pk.length; i++) { |
|
559 |
value = reference.getKeyValue(pk[i].getName()); |
|
560 |
filter.append(helper.getSqlFieldName(pk[i])); |
|
561 |
if (value == null) { |
|
562 |
filter.append(" "); |
|
563 |
filter.append(getIsNullExpression()); |
|
564 |
filter.append(""); |
|
565 | ||
566 |
} else { |
|
567 |
values.add(helper.dalValueToJDBC(pk[i], value)); |
|
568 |
filter.append(" = ? "); |
|
569 |
} |
|
570 |
if (i < pk.length -1) { |
|
571 |
filter.append(" AND "); |
|
572 |
} |
|
556 | 573 |
} |
557 |
values.add(helper.dalValueToJDBC(pk[i], |
|
558 |
reference.getKeyValue(pk[i].getName()))); |
|
559 |
filter.append(helper.getSqlFieldName(pk[i])); |
|
560 |
filter.append(" = ? "); |
|
561 | 574 | |
562 | 575 |
String sql = compoundSelect(featureType, filter.toString(), null, 1, 0); |
563 | 576 | |
... | ... | |
822 | 835 |
toAdd = false; |
823 | 836 |
break; |
824 | 837 |
} |
825 |
if (toAdd) {
|
|
826 |
sql.append(", ");
|
|
827 |
sql.append(helper.getSqlFieldName(pkFields[i]));
|
|
828 |
}
|
|
838 |
}
|
|
839 |
if (toAdd) {
|
|
840 |
sql.append(", ");
|
|
841 |
sql.append(helper.getSqlFieldName(pkFields[i]));
|
|
829 | 842 |
} |
830 | 843 |
} |
831 | 844 |
sql.append(' '); |