Revision 38033

View differences:

branches/v2_0_0_prep/extensions/org.gvsig.oracle/src/org/gvsig/fmap/dal/store/oracle/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,
branches/v2_0_0_prep/extensions/org.gvsig.oracle/src/org/gvsig/fmap/dal/store/oracle/OracleJdbcFastIterator.java
2 2

  
3 3
import org.gvsig.fmap.dal.exception.DataException;
4 4
import org.gvsig.fmap.dal.feature.FeatureType;
5
import org.gvsig.fmap.dal.feature.impl.DefaultEditableFeatureType;
6
import org.gvsig.fmap.dal.feature.impl.DefaultFeatureAttributeDescriptor;
7
import org.gvsig.fmap.dal.feature.impl.DefaultFeatureType;
8 5
import org.gvsig.fmap.dal.store.jdbc.JDBCFastIterator;
9 6
import org.gvsig.fmap.dal.store.jdbc.JDBCSetProvider;
10 7
import org.gvsig.fmap.dal.store.jdbc.JDBCStoreProvider;
......
14 11
	protected OracleJdbcFastIterator(JDBCStoreProvider store, JDBCSetProvider set,
15 12
			FeatureType featureType, int resultsetID) throws DataException {
16 13
		super(store, set, featureType, resultsetID);
17
		
18
		DefaultFeatureType ft_gid = (DefaultFeatureType) featureType.getCopy();
19
		
20
		DefaultFeatureAttributeDescriptor fad = (DefaultFeatureAttributeDescriptor)
21
			store.getFeatureStore().getDefaultFeatureType().getPrimaryKey()[0];
22
		
23
		DefaultEditableFeatureType deft = (DefaultEditableFeatureType) ft_gid.getEditable();
24
		deft.addLike(fad);
25

  
26
		featureProvider = store.createFeatureProvider(deft.getNotEditableCopy());
27
		
14
		this.featureProvider = super.createFeatureProvider();
28 15
	}
29

  
30

  
31

  
32

  
33 16
}
branches/v2_0_0_prep/extensions/org.gvsig.oracle/src/org/gvsig/fmap/dal/store/oracle/OracleHelper.java
1029 1029
					}
1030 1030
					
1031 1031
					loadFeatureType(conn, featureType, sql, pks, storeParams
1032
							.getDefaultGeometryField(), schema, table);
1032
							.getDefaultGeometryField(), schema, table);					
1033 1033
					
1034
					featureType.setHasOID(true);
1035
					
1036
				
1037 1034
				/*
1038 1035
				} finally {
1039 1036
					try {
branches/v2_0_0_prep/extensions/org.gvsig.oracle/src/org/gvsig/fmap/dal/store/oracle/OracleUtils.java
4456 4456
		
4457 4457
		if (ft.hasOID()) {
4458 4458
			return ref.getOID();
4459
		} else {
4460
			
4461
			if (ref.getKeyNames() == null) {
4462
				return ref.getOID();
4463
			} else {
4464
				FeatureAttributeDescriptor[] fadd = ft.getPrimaryKey();
4465
				Object resp = ref.getKeyValue(fadd[0].getName());
4466
				if (resp == null) {
4467
					logger.warn("Did not find PK in feat ref: " + fadd[0].getName());
4468
				}
4469
				return resp;
4459
		} else {			
4460
			FeatureAttributeDescriptor[] fadd = ft.getPrimaryKey();
4461
			Object resp = ref.getKeyValue(fadd[0].getName());
4462
			if (resp == null) {
4463
				logger.warn("Did not find PK in feat ref: " + fadd[0].getName());
4470 4464
			}
4465
			return resp;
4471 4466
		}
4472

  
4473 4467
	}
4474 4468
	
4475 4469
	

Also available in: Unified diff