You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2008/12/01 11:00:31 UTC
svn commit: r722019 - in
/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc:
EntityRowReader.java JDBCResultIterator.java
Author: aadamchik
Date: Mon Dec 1 02:00:29 2008
New Revision: 722019
URL: http://svn.apache.org/viewvc?rev=722019&view=rev
Log:
CAY-1140 Store ObjEntity name in the DataRow
fixing issues resulting from CAY-1136 code merge
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EntityRowReader.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/JDBCResultIterator.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EntityRowReader.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EntityRowReader.java?rev=722019&r1=722018&r2=722019&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EntityRowReader.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EntityRowReader.java Mon Dec 1 02:00:29 2008
@@ -23,7 +23,7 @@
import org.apache.cayenne.CayenneException;
import org.apache.cayenne.DataRow;
-import org.apache.cayenne.query.EntityResult;
+import org.apache.cayenne.query.EntityResultMetadata;
import org.apache.cayenne.query.QueryMetadata;
import org.apache.cayenne.util.Util;
@@ -36,10 +36,10 @@
private int mapCapacity;
EntityRowReader(RowDescriptor descriptor, QueryMetadata queryMetadata,
- EntityResult entityResult) {
+ EntityResultMetadata entityResult) {
super(descriptor, queryMetadata);
- Map<String, String> fields = entityResult.getDbFields();
+ Map<String, String> fields = entityResult.getFields();
this.mapCapacity = (int) Math.ceil((fields.size()) / 0.75);
this.valueIndices = new int[fields.size()];
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/JDBCResultIterator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/JDBCResultIterator.java?rev=722019&r1=722018&r2=722019&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/JDBCResultIterator.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/JDBCResultIterator.java Mon Dec 1 02:00:29 2008
@@ -32,9 +32,8 @@
import org.apache.cayenne.DataRow;
import org.apache.cayenne.access.ResultIterator;
import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.query.EntityResult;
import org.apache.cayenne.query.QueryMetadata;
-import org.apache.cayenne.query.SQLResultSetMapping;
+import org.apache.cayenne.query.SQLResultSetMetadata;
/**
* A ResultIterator over the underlying JDBC ResultSet.
@@ -91,28 +90,39 @@
RowDescriptor descriptor,
QueryMetadata queryMetadata) {
- SQLResultSetMapping rsMapping = queryMetadata.getResultSetMapping();
+ SQLResultSetMetadata rsMapping = queryMetadata.getResultSetMapping();
if (rsMapping != null) {
- List<?> resultDescriptors = rsMapping.getResultDescriptors();
- int resultWidth = resultDescriptors.size();
+ int resultWidth = rsMapping.getSegmentsCount();
+ int[] entitySegments = rsMapping.getEntitySegments();
+ int[] scalarSegments = rsMapping.getScalarSegments();
if (resultWidth == 0) {
throw new CayenneRuntimeException("Empty result descriptor");
}
else if (resultWidth == 1) {
- return createSegmentRowReader(
- descriptor,
- queryMetadata,
- resultDescriptors.get(0));
+
+ if (entitySegments.length > 0) {
+ return new EntityRowReader(descriptor, queryMetadata, rsMapping
+ .getEntitySegment(entitySegments[0]));
+ }
+ else {
+ return new ScalarRowReader(descriptor, rsMapping
+ .getScalarSegment(scalarSegments[0]));
+ }
}
else {
CompoundRowReader reader = new CompoundRowReader(resultWidth);
- for (int i = 0; i < resultWidth; i++) {
- reader.addRowReader(i, createSegmentRowReader(
+ for (int i : entitySegments) {
+ reader.addRowReader(i, new EntityRowReader(
descriptor,
queryMetadata,
- resultDescriptors.get(i)));
+ rsMapping.getEntitySegment(entitySegments[i])));
+ }
+
+ for (int i : scalarSegments) {
+ reader.addRowReader(i, new ScalarRowReader(descriptor, rsMapping
+ .getScalarSegment(scalarSegments[i])));
}
return reader;
@@ -123,26 +133,6 @@
}
}
- private RowReader<?> createSegmentRowReader(
- RowDescriptor descriptor,
- QueryMetadata queryMetadata,
- Object segmentDescriptor) {
-
- if (segmentDescriptor instanceof String) {
- return new ScalarRowReader(descriptor, (String) segmentDescriptor);
- }
- else if (segmentDescriptor instanceof EntityResult) {
- return new EntityRowReader(
- descriptor,
- queryMetadata,
- (EntityResult) segmentDescriptor);
- }
- else {
- throw new IllegalArgumentException(
- "Expected either String or Entity Result: " + segmentDescriptor);
- }
- }
-
private RowReader<?> createFullRowReader(
RowDescriptor descriptor,
QueryMetadata queryMetadata) {