Revision 38033 branches/v2_0_0_prep/extensions/org.gvsig.oracle/src/org/gvsig/fmap/dal/store/oracle/OracleStoreProvider.java
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