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 2007/12/23 18:14:56 UTC
svn commit: r606575 - in
/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src:
main/java/org/apache/cayenne/access/ test/java/org/apache/cayenne/access/
Author: aadamchik
Date: Sun Dec 23 09:14:52 2007
New Revision: 606575
URL: http://svn.apache.org/viewvc?rev=606575&view=rev
Log:
CAY-948 Implement flattened attributes in Cayenne
(inserts now work)
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainSyncBucket.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesTest.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java?rev=606575&r1=606574&r2=606575&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java Sun Dec 23 09:14:52 2007
@@ -59,34 +59,23 @@
for (DbEntity dbEntity : dbEntities) {
- Collection<ClassDescriptor> objEntitiesForDbEntity = descriptorsByDbEntity
- .get(dbEntity);
+ Collection<ClassDescriptor> descriptors = descriptorsByDbEntity.get(dbEntity);
InsertBatchQuery batch = new InsertBatchQuery(dbEntity, 27);
- for (ClassDescriptor descriptor : objEntitiesForDbEntity) {
+ for (ClassDescriptor descriptor : descriptors) {
diffBuilder.reset(descriptor.getEntity(), dbEntity);
- boolean isMasterDbEntity = (descriptor.getEntity().getDbEntity() == dbEntity);
-
- // remove object set for dependent entity, so that it does not show up
- // on post processing
- List<Persistent> objects = isMasterDbEntity ? objectsByDescriptor
- .get(descriptor) : objectsByDescriptor.remove(descriptor);
-
+ List<Persistent> objects = objectsByDescriptor.get(descriptor);
if (objects.isEmpty()) {
continue;
}
checkReadOnly(descriptor.getEntity());
-
- if (isMasterDbEntity) {
- createPermIdsForObjEntity(descriptor, objects);
- sorter.sortObjectsForEntity(descriptor.getEntity(), objects, false);
- }
+ createPermIds(descriptor, dbEntity, objects);
+ sorter.sortObjectsForEntity(descriptor.getEntity(), objects, false);
for (Persistent o : objects) {
-
Map<Object, Object> snapshot = diffBuilder.buildDBDiff(parent
.objectDiff(o.getObjectId()));
@@ -98,8 +87,9 @@
}
}
- void createPermIdsForObjEntity(
+ void createPermIds(
ClassDescriptor descriptor,
+ DbEntity entity,
Collection<Persistent> objects) {
if (objects.isEmpty()) {
@@ -107,8 +97,7 @@
}
ObjEntity objEntity = descriptor.getEntity();
- DbEntity dbEntity = objEntity.getDbEntity();
- DataNode node = parent.getDomain().lookupDataNode(dbEntity.getDataMap());
+ DataNode node = parent.getDomain().lookupDataNode(entity.getDataMap());
boolean supportsGeneratedKeys = node.getAdapter().supportsGeneratedKeys();
PkGenerator pkGenerator = node.getAdapter().getPkGenerator();
@@ -124,7 +113,7 @@
boolean autoPkDone = false;
- for (DbAttribute dbAttr : dbEntity.getPrimaryKeys()) {
+ for (DbAttribute dbAttr : entity.getPrimaryKeys()) {
String dbAttrName = dbAttr.getName();
if (idMap.containsKey(dbAttrName)) {
@@ -174,7 +163,7 @@
// finally, use database generation mechanism
try {
- Object pkValue = pkGenerator.generatePkForDbEntity(node, dbEntity);
+ Object pkValue = pkGenerator.generatePkForDbEntity(node, entity);
idMap.put(dbAttrName, pkValue);
autoPkDone = true;
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainSyncBucket.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainSyncBucket.java?rev=606575&r1=606574&r2=606575&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainSyncBucket.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainSyncBucket.java Sun Dec 23 09:14:52 2007
@@ -41,6 +41,7 @@
import org.apache.cayenne.reflect.ArcProperty;
import org.apache.cayenne.reflect.AttributeProperty;
import org.apache.cayenne.reflect.ClassDescriptor;
+import org.apache.cayenne.reflect.Property;
import org.apache.cayenne.reflect.PropertyException;
import org.apache.cayenne.reflect.ToManyMapProperty;
import org.apache.commons.collections.Factory;
@@ -170,17 +171,14 @@
CompoundDiff result = parent.getResultDiff();
Map modifiedSnapshots = parent.getResultModifiedSnapshots();
- Collection deletedIds = parent.getResultDeletedIds();
+ Collection<ObjectId> deletedIds = parent.getResultDeletedIds();
- Iterator it = objectsByDescriptor.entrySet().iterator();
- while (it.hasNext()) {
+ for (Map.Entry<ClassDescriptor, List<Persistent>> entry : objectsByDescriptor
+ .entrySet()) {
- Map.Entry entry = (Map.Entry) it.next();
- ClassDescriptor descriptor = (ClassDescriptor) entry.getKey();
+ ClassDescriptor descriptor = entry.getKey();
- Iterator objects = ((Collection) entry.getValue()).iterator();
- while (objects.hasNext()) {
- Persistent object = (Persistent) objects.next();
+ for (Persistent object : entry.getValue()) {
ObjectId id = object.getObjectId();
ObjectId finalId;
@@ -188,8 +186,8 @@
// record id change and update attributes for generated ids
if (id.isReplacementIdAttached()) {
- Map replacement = id.getReplacementIdMap();
- Iterator idProperties = descriptor.getIdProperties();
+ Map<String, Object> replacement = id.getReplacementIdMap();
+ Iterator<Property> idProperties = descriptor.getIdProperties();
while (idProperties.hasNext()) {
AttributeProperty property = (AttributeProperty) idProperties
.next();
@@ -222,7 +220,6 @@
}
else {
finalId = id;
-
}
// do not take the snapshot until generated columns are processed (see
@@ -238,9 +235,10 @@
modifiedSnapshots.put(finalId, dataRow);
// update Map reverse relationships
- Iterator mapArcProperties = descriptor.getMapArcProperties();
+ Iterator<ArcProperty> mapArcProperties = descriptor
+ .getMapArcProperties();
while (mapArcProperties.hasNext()) {
- ArcProperty arc = (ArcProperty) mapArcProperties.next();
+ ArcProperty arc = mapArcProperties.next();
ToManyMapProperty reverseArc = (ToManyMapProperty) arc
.getComplimentaryReverseArc();
@@ -261,7 +259,7 @@
Object source,
Object target) throws PropertyException {
- Map map = (Map) property.readProperty(source);
+ Map<Object, Object> map = (Map<Object, Object>) property.readProperty(source);
Object newKey = property.getMapKey(target);
Object currentValue = map.get(newKey);
@@ -275,9 +273,9 @@
// must do a slow map scan to ensure the object is not mapped under a different
// key...
- Iterator it = map.entrySet().iterator();
+ Iterator<?> it = map.entrySet().iterator();
while (it.hasNext()) {
- Map.Entry e = (Map.Entry) it.next();
+ Map.Entry<Object, Object> e = (Map.Entry<Object, Object>) it.next();
if (e.getValue() == target) {
it.remove();
break;
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesTest.java?rev=606575&r1=606574&r2=606575&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesTest.java Sun Dec 23 09:14:52 2007
@@ -184,7 +184,7 @@
o1.setGalleryName("G1");
o1.setPaintingTitle("P1");
o1.setTextReview("T1");
-
+
context.commitChanges();
}
}