org.codehaus.groovy.grails.orm.hibernate.metaclass
Class AbstractSavePersistentMethod

java.lang.Object
  extended by org.codehaus.groovy.grails.commons.metaclass.AbstractDynamicMethodInvocation
      extended by org.codehaus.groovy.grails.orm.hibernate.metaclass.AbstractDynamicPersistentMethod
          extended by org.codehaus.groovy.grails.orm.hibernate.metaclass.AbstractSavePersistentMethod
All Implemented Interfaces:
DynamicMethodInvocation
Direct Known Subclasses:
MergePersistentMethod, SavePersistentMethod

public abstract class AbstractSavePersistentMethod
extends AbstractDynamicPersistentMethod

Abstract class for different implementations that perform saving to implement

Since:
0.3
Author:
Graeme Rocher

Constructor Summary
AbstractSavePersistentMethod(Pattern pattern, org.hibernate.SessionFactory sessionFactory, ClassLoader classLoader, GrailsApplication application)
           
 
Method Summary
protected  Object doInvokeInternal(Object target, Object[] arguments)
           
protected  Object handleValidationError(Object target, Errors errors)
          This method willl set the save() method will set the flush mode to manual.
protected abstract  Object performInsert(Object target, boolean shouldFlush)
          Subclasses should override and perform an insert operation, flushing the session if the second argument is true
protected abstract  Object performSave(Object target, boolean shouldFlush)
          Subclasses should override and perform a save operation, flushing the session if the second argument is true
protected  void setErrorsOnInstance(Object target, Errors errors)
          Associates the Errors object on the instance
 
Methods inherited from class org.codehaus.groovy.grails.orm.hibernate.metaclass.AbstractDynamicPersistentMethod
getHibernateTemplate, invoke, setObjectToReadOnly, setObjectToReadWrite
 
Methods inherited from class org.codehaus.groovy.grails.commons.metaclass.AbstractDynamicMethodInvocation
getPattern, isMethodMatch, setPattern
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractSavePersistentMethod

public AbstractSavePersistentMethod(Pattern pattern,
                                    org.hibernate.SessionFactory sessionFactory,
                                    ClassLoader classLoader,
                                    GrailsApplication application)
Method Detail

doInvokeInternal

protected Object doInvokeInternal(Object target,
                                  Object[] arguments)
Specified by:
doInvokeInternal in class AbstractDynamicPersistentMethod

handleValidationError

protected Object handleValidationError(Object target,
                                       Errors errors)
This method willl set the save() method will set the flush mode to manual. What this does is ensure that the database changes are not persisted to the database if a validation error occurs. If save() is called again and validation passes the code will check if there is a manual flush mode and flush manually if necessary

Parameters:
target - The target object that failed validation
errors - The Errors instance
Returns:
This method will return null signaling a validation failure

setErrorsOnInstance

protected void setErrorsOnInstance(Object target,
                                   Errors errors)
Associates the Errors object on the instance

Parameters:
target - The target instance
errors - The Errors object

performSave

protected abstract Object performSave(Object target,
                                      boolean shouldFlush)
Subclasses should override and perform a save operation, flushing the session if the second argument is true

Parameters:
target - The target object to save
shouldFlush - Whether to flush
Returns:
The target object

performInsert

protected abstract Object performInsert(Object target,
                                        boolean shouldFlush)
Subclasses should override and perform an insert operation, flushing the session if the second argument is true

Parameters:
target - The target object to save
shouldFlush - Whether to flush
Returns:
The target object


Copyright (c) 2005-2009 The Grails project