[prev in list] [next in list] [prev in thread] [next in thread] 

List:       ojb-dev
Subject:    cvs commit: db-ojb/src/java/org/apache/ojb/broker/core PersistenceBrokerImpl.java
From:       brj () apache ! org
Date:       2004-02-29 9:34:53
Message-ID: 20040229093453.73238.qmail () minotaur ! apache ! org
[Download RAW message or body]

brj         2004/02/29 01:34:53

  Modified:    src/java/org/apache/ojb/broker/core
                        PersistenceBrokerImpl.java
  Log:
  refactoring of storeCollections
  
  Revision  Changes    Path
  1.72      +46 -36    \
db-ojb/src/java/org/apache/ojb/broker/core/PersistenceBrokerImpl.java  
  Index: PersistenceBrokerImpl.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/core/PersistenceBrokerImpl.java,v
  retrieving revision 1.71
  retrieving revision 1.72
  diff -u -r1.71 -r1.72
  --- PersistenceBrokerImpl.java	28 Feb 2004 21:42:33 -0000	1.71
  +++ PersistenceBrokerImpl.java	29 Feb 2004 09:34:53 -0000	1.72
  @@ -901,41 +901,7 @@
                   Iterator colIterator = getCollectionIterator(cds, col);
                   while (colIterator.hasNext())
                   {
  -                    Object otherObj = colIterator.next();
  -
  -                    // for m:n mapped collections store association implementing \
                entries
  -                    if (cds.isMtoNRelation())
  -                    {
  -                        if (cds.getCascadeStore())
  -                        {
  -                            // 1. Store depended upon object first to avoid FK \
                violation
  -                            store(otherObj);
  -
  -                            // BRJ: store could have inserted MtoNImplementors
  -                            // so we need to read them to avoid ref. integrity
  -                            // violations
  -                            currentMtoNKeys = mtoNBroker.getMtoNImplementor(cds, \
                obj);
  -                        }
  -                        // 2. Store indirection record
  -                        // BRJ: this could cause integrity problems because
  -                        // obj may not be stored depending on auto-update
  -                        mtoNBroker.storeMtoNImplementor(cds, obj, otherObj, \
                currentMtoNKeys);
  -                    }
  -                    else
  -                    {
  -                        // BRJ: do not assign fk if not required
  -                        // to avoid materialization of proxy
  -                        // olegnitz: but assign if it is not proxy or is \
                materialized
  -                        if (cds.getCascadeStore()
  -                                || ProxyHelper.isMaterialized(otherObj))
  -                        {
  -                            assertFkAssignment(otherObj, obj, cds, insert);
  -                        }
  -                        if (cds.getCascadeStore())
  -                        {
  -                            store(otherObj);
  -                        }
  -                    }
  +                     storeCollectionObject(obj, insert, cds, currentMtoNKeys, \
colIterator.next());  }
   
                   // invoke callback on collection
  @@ -947,6 +913,50 @@
           }
       }
   
  +    /**
  +     * Store an Object belonging to the collection defined by cds
  +     * @param obj the owner object
  +     * @param insert
  +     * @param cds the collection descriptor
  +     * @param currentMtoNKeys
  +     * @param otherObj the object to be stored
  +     */
  +    private void storeCollectionObject(Object obj, boolean insert, \
CollectionDescriptor cds, Collection currentMtoNKeys, Object otherObj)  +    {
  +        // for m:n mapped collections store association implementing entries
  +        if (cds.isMtoNRelation())
  +        {
  +            if (cds.getCascadeStore())
  +            {
  +                // 1. Store depended upon object first to avoid FK violation
  +                store(otherObj);
  +
  +                // BRJ: store could have inserted MtoNImplementors
  +                // so we need to read them to avoid ref. integrity
  +                // violations
  +                currentMtoNKeys = mtoNBroker.getMtoNImplementor(cds, obj);
  +            }
  +            // 2. Store indirection record
  +            // BRJ: this could cause integrity problems because
  +            // obj may not be stored depending on auto-update
  +            mtoNBroker.storeMtoNImplementor(cds, obj, otherObj, currentMtoNKeys);
  +        }
  +        else
  +        {
  +            // BRJ: do not assign fk if not required
  +            // to avoid materialization of proxy
  +            // olegnitz: but assign if it is not proxy or is materialized
  +            if (cds.getCascadeStore() || ProxyHelper.isMaterialized(otherObj))
  +            {
  +                assertFkAssignment(otherObj, obj, cds, insert);
  +            }
  +
  +            if (cds.getCascadeStore())
  +            {
  +                store(otherObj);
  +            }
  +        }
  +    }
   
       /**
        * Answer the Iterator for Collection or Array
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic