Revision 38033
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