eu.etaxonomy.cdm.strategy.merge
Class DefaultMergeStrategy

java.lang.Object
  extended by eu.etaxonomy.cdm.strategy.StrategyBase
      extended by eu.etaxonomy.cdm.strategy.merge.DefaultMergeStrategy
All Implemented Interfaces:
IStrategy, IMergeStrategy, Serializable

public class DefaultMergeStrategy
extends StrategyBase
implements IMergeStrategy

Version:
1.0
Author:
a.mueller
See Also:
Serialized Form

Field Summary
protected  MergeMode defaultCollectionMergeMode
           
protected  MergeMode defaultMergeMode
           
protected  Class<? extends CdmBase> mergeClass
           
protected  Map<String,Field> mergeFields
           
protected  Map<String,MergeMode> mergeModeMap
           
 
Constructor Summary
protected DefaultMergeStrategy(Class<? extends CdmBase> mergeClazz)
           
 
Method Summary
static Method getAddMethod(Field field, boolean remove)
           
 Class<? extends CdmBase> getMergeClass()
           
 MergeMode getMergeMode(String propertyName)
           
protected
<T extends IMergable>
Object
getMergeValue(T mergeFirst, T mergeSecond, Field field)
           
protected  UUID getUuid()
           
<T extends IMergable>
Set<ICdmBase>
invoke(T mergeFirst, T mergeSecond)
          Merges mergeSecond into mergeFirst.
<T extends IMergable>
Set<ICdmBase>
invoke(T mergeFirst, T mergeSecond, Set<ICdmBase> clonedObjects)
          Merges mergeSecond into mergeFirst.
static DefaultMergeStrategy NewInstance(Class<? extends CdmBase> mergeClazz)
           
 void setMergeClazz(Class<? extends CdmBase> mergeClazz)
           
 void setMergeMode(String propertyName, MergeMode mergeMode)
          Sets the merge mode for property propertyName
 
Methods inherited from class eu.etaxonomy.cdm.strategy.StrategyBase
isCollection, isPrimitive, isSingleCdmBaseObject, isUserType
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

mergeModeMap

protected Map<String,MergeMode> mergeModeMap

defaultMergeMode

protected MergeMode defaultMergeMode

defaultCollectionMergeMode

protected MergeMode defaultCollectionMergeMode

mergeClass

protected Class<? extends CdmBase> mergeClass

mergeFields

protected Map<String,Field> mergeFields
Constructor Detail

DefaultMergeStrategy

protected DefaultMergeStrategy(Class<? extends CdmBase> mergeClazz)
Method Detail

NewInstance

public static DefaultMergeStrategy NewInstance(Class<? extends CdmBase> mergeClazz)

getUuid

protected UUID getUuid()
Specified by:
getUuid in class StrategyBase

getMergeClass

public Class<? extends CdmBase> getMergeClass()
Returns:
the merge class

setMergeClazz

public void setMergeClazz(Class<? extends CdmBase> mergeClazz)
Parameters:
mergeClazz - the mergeClazz to set

getMergeMode

public MergeMode getMergeMode(String propertyName)
Specified by:
getMergeMode in interface IMergeStrategy

setMergeMode

public void setMergeMode(String propertyName,
                         MergeMode mergeMode)
                  throws MergeException
Description copied from interface: IMergeStrategy
Sets the merge mode for property propertyName

Specified by:
setMergeMode in interface IMergeStrategy
Throws:
MergeException

invoke

public <T extends IMergable> Set<ICdmBase> invoke(T mergeFirst,
                                                  T mergeSecond)
                     throws MergeException
Description copied from interface: IMergeStrategy
Merges mergeSecond into mergeFirst. Returns a set of CdmBases that became orphant during the merge process and therefore must be deleted from a persistent context.

Specified by:
invoke in interface IMergeStrategy
Throws:
MergeException

invoke

public <T extends IMergable> Set<ICdmBase> invoke(T mergeFirst,
                                                  T mergeSecond,
                                                  Set<ICdmBase> clonedObjects)
                     throws MergeException
Description copied from interface: IMergeStrategy
Merges mergeSecond into mergeFirst. Returns a set of CdmBases that became orphant during the merge process and therefore must be deleted from a persistent context.

Specified by:
invoke in interface IMergeStrategy
clonedObjects - a set of objects that needed to be cloned during merge. This set will be filled during merge and should preferably be empty at the beginning
Throws:
MergeException

getAddMethod

public static Method getAddMethod(Field field,
                                  boolean remove)
                           throws MergeException
Throws:
MergeException

getMergeValue

protected <T extends IMergable> Object getMergeValue(T mergeFirst,
                                                     T mergeSecond,
                                                     Field field)
                        throws Exception
Parameters:
cdmBase -
toMerge -
field -
mergeMode -
Throws:
Exception


Copyright © 2007-2013 EDIT. All Rights Reserved.