/*
 *  Copyright (C) 2004  The Concord Consortium, Inc.,
 *  10 Concord Crossing, Concord, MA 01742
 *
 *  Web Site: http://www.concord.org
 *  Email: info@concord.org
 *
 *  This library is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public
 *  License as published by the Free Software Foundation; either
 *  version 2.1 of the License, or (at your option) any later version.
 *
 *  This library is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 * END LICENSE */

/*
 * Last modification information:
 * $Revision: 1.5 $
 * $Date: 2007-06-27 21:35:14 $
 * $Author: scytacki $
 *
 * Licence Information
 * Copyright 2004 The Concord Consortium 
*/
package org.concord.otrunk.datamodel;


public class DataObjectUtil
{
    /**
     * This does a shallow copy.  It copys the collection objects but 
     * all other resources are just added as references not copied. 
     * @param original
     * @param copy
     */
    public static void copyInto(OTDataObject original, OTDataObject copy)
    {
    	try {
			copyInto(original, copy, null, 0);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    }
     
    public static void copyInto(OTDataObject source, OTDataObject dest,
                                OTDataList orphanDataList, int maxDepth) 
    	throws Exception
    {
    	Copier.copyInto(source, dest, orphanDataList, maxDepth);
    }

    
    
    public static OTDataObject copy(OTDataObject original, OTDatabase otDb, 
                                    OTDataList orphanDataList, int maxDepth) 
    	throws Exception
    {
    	OTDataObject copy = otDb.createDataObject(original.getType());

    	copyInto(original, copy, orphanDataList, maxDepth);
    	
    	return copy;
    }    
}

@@ -1510,16 +1510,22 @@
  null, 0
+, null
 );%0A%09%09%7D c
@@ -1621,17 +1621,16 @@
   %7D%0A    
- 
 %0A    pub
@@ -1698,36 +1698,9 @@
 st,%0A
-                            
+%09
     
@@ -1734,32 +1734,64 @@
 int maxDepth
-) %0A
+, OTExternalIDProvider idProvider)%0A%09
     
-%09
 throws Excep
@@ -1795,26 +1795,20 @@
 ception%0A
-    %7B%0A    
+%09%7B%0A%09
 %09Copier.
@@ -1858,22 +1858,25 @@
 epth
-);%0A    %7D%0A%0A    
+, idProvider);%0A%09%7D
 %0A   
@@ -1956,42 +1956,10 @@
 tDb,
- %0A                                
+%0A%09
     
@@ -2001,16 +2001,48 @@
 epth
-) %0A
+, OTExternalIDProvider idProvider)%0A%09
     
-%09
 thro
@@ -2054,26 +2054,20 @@
 ception%0A
-    %7B%0A    
+%09%7B%0A%09
 %09OTDataO
@@ -2123,20 +2123,17 @@
 pe());%0A%0A
-    
+%09
 %09copyInt
@@ -2178,21 +2178,25 @@
 epth
-);%0A    %09%0A    
+, idProvider);%0A%0A%09
 %09ret
@@ -2205,20 +2205,17 @@
 n copy;%0A
-    
+%09
 %7D    %0A%7D%0A

copy methods in dataObjectUtil must be called with an OTExternalIDProvider