to.etc.domui.util.db
Class QBasicModelCopier

java.lang.Object
  extended by to.etc.domui.util.db.QBasicModelCopier
All Implemented Interfaces:
IModelCopier
Direct Known Subclasses:
HibernateModelCopier

public abstract class QBasicModelCopier
extends java.lang.Object
implements IModelCopier


Nested Class Summary
static class QBasicModelCopier.CopyInfo
           
 
Constructor Summary
QBasicModelCopier()
           
 
Method Summary
static void assertPrivateContext(QDataContext dc)
          Make sure the data context is not a shared one.
<T> T
copyInstanceDeep(QDataContext targetdc, QDataContext sourcedc, T source)
           
<T> T
copyInstanceShallow(QDataContext dc, T source)
          Do a shallow copy of the instance.
protected  void deleteFromTarget(QBasicModelCopier.CopyInfo donemap, java.lang.Object obj)
           
protected abstract  QPersistentObjectState getObjectState(QDataContext dc, java.lang.Class<?> pclass, java.lang.Object pk)
           
protected abstract  QPersistentObjectState getObjectState(QDataContext dc, java.lang.Object instance)
           
protected abstract
<T> boolean
isUnloadedChildList(T source, PropertyMetaModel<?> pmm)
           
protected abstract
<T> boolean
isUnloadedParent(T source, PropertyMetaModel<?> pmm)
           
protected  java.lang.Object loadCopyFrom(QDataContext dc, java.lang.Object source, ClassMetaModel cmm, boolean refonly)
           
protected  void save(QBasicModelCopier.CopyInfo ci, java.lang.Object instance)
          Does the actual save of a new object into the database context.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

QBasicModelCopier

public QBasicModelCopier()
Method Detail

isUnloadedParent

protected abstract <T> boolean isUnloadedParent(T source,
                                                PropertyMetaModel<?> pmm)
                                     throws java.lang.Exception
Throws:
java.lang.Exception

isUnloadedChildList

protected abstract <T> boolean isUnloadedChildList(T source,
                                                   PropertyMetaModel<?> pmm)
                                        throws java.lang.Exception
Throws:
java.lang.Exception

getObjectState

protected abstract QPersistentObjectState getObjectState(QDataContext dc,
                                                         java.lang.Object instance)
                                                  throws java.lang.Exception
Throws:
java.lang.Exception

getObjectState

protected abstract QPersistentObjectState getObjectState(QDataContext dc,
                                                         java.lang.Class<?> pclass,
                                                         java.lang.Object pk)
                                                  throws java.lang.Exception
Throws:
java.lang.Exception

assertPrivateContext

public static void assertPrivateContext(QDataContext dc)
Make sure the data context is not a shared one.

Parameters:
dc -

save

protected void save(QBasicModelCopier.CopyInfo ci,
                    java.lang.Object instance)
             throws java.lang.Exception
Does the actual save of a new object into the database context. This can be overridden when the persistence framework fscks up the save process (Cough "Hibernate" Cough)...

Parameters:
ci -
instance -
Throws:
java.lang.Exception

copyInstanceShallow

public <T> T copyInstanceShallow(QDataContext dc,
                                 T source)
                      throws java.lang.Exception
Do a shallow copy of the instance. This only copies all public fields.

Specified by:
copyInstanceShallow in interface IModelCopier
Throws:
java.lang.Exception
See Also:
IModelCopier.copyInstanceShallow(to.etc.webapp.query.QDataContext, java.lang.Object)

copyInstanceDeep

public <T> T copyInstanceDeep(QDataContext targetdc,
                              QDataContext sourcedc,
                              T source)
                   throws java.lang.Exception
Specified by:
copyInstanceDeep in interface IModelCopier
Type Parameters:
T -
Parameters:
targetdc -
sourcedc -
source -
Returns:
Throws:
java.lang.Exception

deleteFromTarget

protected void deleteFromTarget(QBasicModelCopier.CopyInfo donemap,
                                java.lang.Object obj)
                         throws java.lang.Exception
Throws:
java.lang.Exception

loadCopyFrom

protected java.lang.Object loadCopyFrom(QDataContext dc,
                                        java.lang.Object source,
                                        ClassMetaModel cmm,
                                        boolean refonly)
                                 throws java.lang.Exception
Throws:
java.lang.Exception