org.apache.cayenne.ashwood
Class AshwoodEntitySorter

java.lang.Object
  extended by org.apache.cayenne.ashwood.AshwoodEntitySorter
All Implemented Interfaces:
EntitySorter
Direct Known Subclasses:
AshwoodEntitySorter

public class AshwoodEntitySorter
extends java.lang.Object
implements EntitySorter

Implements dependency sorting algorithms for ObjEntities, DbEntities and DataObjects. Presently it works for acyclic database schemas with possible multi-reflexive tables.

Since:
3.1

Field Summary
protected  java.util.Map<DbEntity,org.apache.cayenne.ashwood.AshwoodEntitySorter.ComponentRecord> components
           
protected  java.util.Comparator<DbEntity> dbEntityComparator
           
protected  EntityResolver entityResolver
           
protected  java.util.Comparator<ObjEntity> objEntityComparator
           
protected  java.util.Map<DbEntity,java.util.List<DbRelationship>> reflexiveDbEntities
           
 
Constructor Summary
AshwoodEntitySorter()
           
AshwoodEntitySorter(java.util.Collection<DataMap> dataMaps)
          Deprecated. since 3.1. Use AshwoodEntitySorter() constructor together with setDataMaps(Collection) instead.
 
Method Summary
protected  void doIndexSorter()
          Reindexes internal sorter without synchronization.
protected  java.lang.Object findReflexiveMaster(Persistent object, ObjRelationship toOneRel, java.lang.String targetEntityName)
           
protected  java.util.Comparator<DbEntity> getDbEntityComparator(boolean dependantFirst)
           
protected  java.util.Comparator<ObjEntity> getObjEntityComparator(boolean dependantFirst)
           
protected  void indexSorter()
          Reindexes internal sorter in a thread-safe manner.
protected  boolean isReflexive(DbEntity metadata)
           
 void setDataMaps(java.util.Collection<DataMap> dataMaps)
          Deprecated. since 3.1, setEntityResolver(EntityResolver) is used instead.
 void setEntityResolver(EntityResolver entityResolver)
          Sets EntityResolver for this sorter.
 void sortDbEntities(java.util.List<DbEntity> dbEntities, boolean deleteOrder)
          Sorts a list of DbEntities.
 void sortObjectsForEntity(ObjEntity objEntity, java.util.List<?> objects, boolean deleteOrder)
          Sorts a list of objects belonging to the ObjEntity.
 void sortObjEntities(java.util.List<ObjEntity> objEntities, boolean deleteOrder)
          Sorts a list of ObjEntities.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

entityResolver

protected EntityResolver entityResolver

components

protected java.util.Map<DbEntity,org.apache.cayenne.ashwood.AshwoodEntitySorter.ComponentRecord> components

reflexiveDbEntities

protected java.util.Map<DbEntity,java.util.List<DbRelationship>> reflexiveDbEntities

dbEntityComparator

protected java.util.Comparator<DbEntity> dbEntityComparator

objEntityComparator

protected java.util.Comparator<ObjEntity> objEntityComparator
Constructor Detail

AshwoodEntitySorter

public AshwoodEntitySorter()

AshwoodEntitySorter

public AshwoodEntitySorter(java.util.Collection<DataMap> dataMaps)
Deprecated. since 3.1. Use AshwoodEntitySorter() constructor together with setDataMaps(Collection) instead.

Method Detail

indexSorter

protected void indexSorter()
Reindexes internal sorter in a thread-safe manner.


doIndexSorter

protected void doIndexSorter()
Reindexes internal sorter without synchronization.


setDataMaps

public void setDataMaps(java.util.Collection<DataMap> dataMaps)
Deprecated. since 3.1, setEntityResolver(EntityResolver) is used instead.

Description copied from interface: EntitySorter
Initializes a list of DataMaps used by the sorter.

Specified by:
setDataMaps in interface EntitySorter
Since:
1.1

setEntityResolver

public void setEntityResolver(EntityResolver entityResolver)
Description copied from interface: EntitySorter
Sets EntityResolver for this sorter. All entities present in the resolver will be used to determine sort ordering.

Specified by:
setEntityResolver in interface EntitySorter
Since:
3.1

sortDbEntities

public void sortDbEntities(java.util.List<DbEntity> dbEntities,
                           boolean deleteOrder)
Description copied from interface: EntitySorter
Sorts a list of DbEntities.

Specified by:
sortDbEntities in interface EntitySorter

sortObjEntities

public void sortObjEntities(java.util.List<ObjEntity> objEntities,
                            boolean deleteOrder)
Description copied from interface: EntitySorter
Sorts a list of ObjEntities.

Specified by:
sortObjEntities in interface EntitySorter

sortObjectsForEntity

public void sortObjectsForEntity(ObjEntity objEntity,
                                 java.util.List<?> objects,
                                 boolean deleteOrder)
Description copied from interface: EntitySorter
Sorts a list of objects belonging to the ObjEntity.

Specified by:
sortObjectsForEntity in interface EntitySorter

findReflexiveMaster

protected java.lang.Object findReflexiveMaster(Persistent object,
                                               ObjRelationship toOneRel,
                                               java.lang.String targetEntityName)

getDbEntityComparator

protected java.util.Comparator<DbEntity> getDbEntityComparator(boolean dependantFirst)

getObjEntityComparator

protected java.util.Comparator<ObjEntity> getObjEntityComparator(boolean dependantFirst)

isReflexive

protected boolean isReflexive(DbEntity metadata)


Copyright © 2001-2012 Apache Cayenne. All Rights Reserved.