Revision 38033 branches/v2_0_0_prep/extensions/org.gvsig.oracle/src/org/gvsig/fmap/dal/store/oracle/OracleStoreProvider.java

View differences:

OracleStoreProvider.java
730 730
                                toAdd = false;
731 731
                                break;
732 732
                            }
733
                            if (toAdd) {
734
                                sql.append(", ");
735
                                sql.append(helper.getSqlFieldName(pkFields[i]));
736
                            }
737 733
                        }
734
                        if (toAdd) {
735
                            sql.append(", ");
736
                            sql.append(helper.getSqlFieldName(pkFields[i]));
737
                        }                       
738 738
                    }
739 739
                    sql.append(' ');
740 740
                }
......
819 819
		return dtManager;
820 820
	}
821 821
	
822
	
823
	
824
	
822
	    
825 823
	@Override
826 824
	protected FeatureProvider internalGetFeatureProviderByReference(
827 825
			FeatureReferenceProviderServices reference,
828 826
			FeatureType featureType)
829 827
			throws DataException {
830
		StringBuilder filter = new StringBuilder();
831
		FeatureAttributeDescriptor[] pk =
832
				getFeatureStore().getFeatureType(featureType.getId())
833
						.getPrimaryKey();
834

  
835
		List<Object> values = new ArrayList<Object>();
836

  
837
		int i;
838
		Object id_obj = null;
839 828
		
840
		// assumes PK with one component (Long) !!
841
		id_obj = OracleUtils.getId(reference, featureType);
842
		
843
		for (i = 0; i < pk.length - 1; i++) {
844
			
845
			
846
			
847
			values.add(
848
					helper.dalValueToJDBC(pk[i],
849
					id_obj));
850
			filter.append(helper.getSqlFieldName(pk[i]));
851
			filter.append(" = ? AND ");
852
		}
853
		
854
		values.add(helper.dalValueToJDBC(pk[i],
855
				id_obj));
856
		filter.append(helper.getSqlFieldName(pk[i]));
857
		filter.append(" = ? ");
858

  
859
		String sql = compoundSelect(featureType, filter.toString(), null, 1, 0);
860

  
861
		FeatureProvider data;
862
		int rsId = createResultSet(sql, values.toArray(), 1);
863
		try {
864
			if (!resulsetNext(rsId)) {
865
				throw new RuntimeException("Reference Not found");
866
			}
867
			data = createFeatureProvider(featureType);
868
			loadFeatureProvider(data, rsId);
869
		} finally {
870
			closeResulset(rsId);
871
		}
872

  
873
		return data;
829
	    if (reference.isNewFeature()){
830
	        return createFeatureProvider(featureType);	            
831
	    }else{
832
	        return super.internalGetFeatureProviderByReference(reference, featureType);
833
	    }   
874 834
	}
875 835
    
876 836
	protected void executeRemovePreparedStatement(Connection conn, String sql,

Also available in: Unified diff