fixes_restore_feature_from_reference_with_null_value_in_pk.patch

Jose Manuel Vivó Arnal, 11/18/2013 03:46 PM

Download (1.91 KB)

View differences:

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(' ');