org.apache.cayenne.ashwood
Class AshwoodEntitySorter

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

public class AshwoodEntitySorter
extends 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  Map<DbEntity,org.apache.cayenne.ashwood.AshwoodEntitySorter.ComponentRecord> components
           
protected  Comparator<DbEntity> dbEntityComparator
           
protected  EntityResolver entityResolver
           
protected  Comparator<ObjEntity> objEntityComparator
           
protected  Map<DbEntity,List<DbRelationship>> reflexiveDbEntities
           
 
Constructor Summary
AshwoodEntitySorter()
           
 
Method Summary
protected  void doIndexSorter()
          Reindexes internal sorter without synchronization.
protected  Object findReflexiveMaster(Persistent object, ObjRelationship toOneRel, String targetEntityName)
           
protected  Comparator<DbEntity> getDbEntityComparator(boolean dependantFirst)
           
protected  Comparator<ObjEntity> getObjEntityComparator(boolean dependantFirst)
           
protected  void indexSorter()
          Reindexes internal sorter in a thread-safe manner.
protected  boolean isReflexive(DbEntity metadata)
           
 void setEntityResolver(EntityResolver entityResolver)
          Sets EntityResolver for this sorter.
 void sortDbEntities(List<DbEntity> dbEntities, boolean deleteOrder)
          Sorts a list of DbEntities.
 void sortObjectsForEntity(ObjEntity objEntity, List<?> objects, boolean deleteOrder)
          Sorts a list of objects belonging to the ObjEntity.
 void sortObjEntities(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 Map<DbEntity,org.apache.cayenne.ashwood.AshwoodEntitySorter.ComponentRecord> components

reflexiveDbEntities

protected Map<DbEntity,List<DbRelationship>> reflexiveDbEntities

dbEntityComparator

protected Comparator<DbEntity> dbEntityComparator

objEntityComparator

protected Comparator<ObjEntity> objEntityComparator
Constructor Detail

AshwoodEntitySorter

public AshwoodEntitySorter()
Method Detail

indexSorter

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


doIndexSorter

protected void doIndexSorter()
Reindexes internal sorter without synchronization.


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(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(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,
                                 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 Object findReflexiveMaster(Persistent object,
                                     ObjRelationship toOneRel,
                                     String targetEntityName)

getDbEntityComparator

protected Comparator<DbEntity> getDbEntityComparator(boolean dependantFirst)

getObjEntityComparator

protected Comparator<ObjEntity> getObjEntityComparator(boolean dependantFirst)

isReflexive

protected boolean isReflexive(DbEntity metadata)


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